ci: allow-skip the two new hostile-worker fixtures in run-integration.sh #222
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| # Copyright 2026 Query Farm LLC - https://query.farm | |
| # | |
| # Runs the canonical vgi integration sqllogictest suite against the Java | |
| # example worker on every push / PR. Rather than building the C++ extension | |
| # from source, it drives a prebuilt standalone `haybarn-unittest` (the | |
| # DuckDB/Haybarn sqllogictest runner) and installs the SIGNED vgi extension | |
| # from the Haybarn community channel + its deps from core. The .test files | |
| # come from Query-farm/vgi main; ci/preprocess-require.awk turns | |
| # each `require <ext>` gate into an explicit INSTALL+LOAD so the standalone | |
| # runner (which links none of these extensions) can run them. | |
| # | |
| # See ci/README.md for the full design. | |
| name: Integration suite | |
| on: | |
| push: | |
| pull_request: | |
| workflow_dispatch: | |
| permissions: | |
| contents: read | |
| concurrency: | |
| group: integration-${{ github.ref }} | |
| cancel-in-progress: true | |
| env: | |
| # Track the shared implementation directly. There is deliberately no VGI | |
| # commit pin or fallback: CI should expose any lag in the published artifact. | |
| VGI_REF: main | |
| # The Haybarn release providing the prebuilt haybarn-unittest binary is | |
| # resolved to the latest release at run time (see the "Resolve latest haybarn | |
| # release" step) so the unittest host stays ABI-compatible with the rebuilt | |
| # community-published vgi extension, mirroring the vgi-typescript CI. | |
| # The vgi-rpc-java revision built from source (composite include) for the | |
| # worker's HTTP features. The composite substitutes the `farm.query:vgirpc` | |
| # coordinate declared in vgi/build.gradle.kts, so this ref, not the declared | |
| # version, is what the worker actually compiles against: see the pin's full | |
| # comment in ci.yml, and keep the two in step. | |
| VGI_RPC_JAVA_REF: v0.27.0 | |
| jobs: | |
| build-worker: | |
| name: Build worker once | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout vgi-java | |
| uses: actions/checkout@v4 | |
| - name: Checkout pinned vgi-rpc-java | |
| uses: actions/checkout@v4 | |
| with: | |
| repository: Query-farm/vgi-rpc-java | |
| ref: ${{ env.VGI_RPC_JAVA_REF }} | |
| path: vgi-rpc-java | |
| - name: Set up JDK 25 | |
| uses: actions/setup-java@v4 | |
| with: | |
| distribution: temurin | |
| java-version: '25' | |
| - name: Cache Gradle | |
| uses: actions/cache@v4 | |
| with: | |
| path: | | |
| ~/.gradle/caches | |
| ~/.gradle/wrapper | |
| key: gradle-${{ runner.os }}-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }} | |
| restore-keys: gradle-${{ runner.os }}- | |
| - name: Build example worker | |
| run: ./gradlew --no-daemon :vgi-example-worker:installDist | |
| env: | |
| VGI_RPC_JAVA_DIR: ${{ github.workspace }}/vgi-rpc-java | |
| # Archive before upload because upload-artifact does not preserve the | |
| # executable bit on the generated launcher script. | |
| - name: Package worker | |
| run: tar -czf vgi-java-worker.tar.gz vgi-example-worker/build/install/vgi-example-worker | |
| - name: Upload worker | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: vgi-java-worker-${{ github.sha }} | |
| path: vgi-java-worker.tar.gz | |
| if-no-files-found: error | |
| retention-days: 1 | |
| integration: | |
| needs: build-worker | |
| runs-on: ubuntu-latest | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| include: | |
| # launch: the AF_UNIX worker pool. shm: same, plus the POSIX | |
| # shared-memory side channel (VGI_RPC_SHM_SIZE_BYTES). http: the whole | |
| # suite over the stateless HTTP transport (state-token continuations), | |
| # mirroring vgi's `make test_http`. | |
| - { lane: launch } | |
| - { lane: shm, shm_bytes: '67108864' } | |
| - { lane: http, transport: http } | |
| name: integration (${{ matrix.lane }}) | |
| steps: | |
| - name: Checkout vgi-java | |
| uses: actions/checkout@v4 | |
| - name: Checkout current vgi test suite | |
| uses: actions/checkout@v4 | |
| with: | |
| repository: Query-farm/vgi | |
| ref: ${{ env.VGI_REF }} | |
| path: vgi-upstream | |
| - name: Set up JDK 25 | |
| uses: actions/setup-java@v4 | |
| with: | |
| distribution: temurin | |
| java-version: '25' | |
| - name: Download worker | |
| uses: actions/download-artifact@v4 | |
| with: | |
| name: vgi-java-worker-${{ github.sha }} | |
| - name: Extract worker | |
| run: tar -xzf vgi-java-worker.tar.gz | |
| - name: Resolve latest haybarn release | |
| run: | | |
| REL=$(gh release view --repo Query-farm-haybarn/haybarn --json tagName --jq .tagName) | |
| echo "HAYBARN_RELEASE=$REL" >> "$GITHUB_ENV" | |
| echo "Latest haybarn release: $REL" | |
| env: | |
| GH_TOKEN: ${{ github.token }} | |
| - name: Download haybarn-unittest | |
| run: | | |
| gh release download "$HAYBARN_RELEASE" \ | |
| --repo Query-farm-haybarn/haybarn \ | |
| --pattern 'haybarn_unittest-linux-amd64.zip' \ | |
| --output /tmp/haybarn-unittest.zip --clobber | |
| unzip -o -q /tmp/haybarn-unittest.zip -d /tmp/haybarn-unittest | |
| UNITTEST=$(find /tmp/haybarn-unittest -name 'haybarn-unittest' -type f | head -1) | |
| chmod +x "$UNITTEST" | |
| echo "HAYBARN_UNITTEST=$UNITTEST" >> "$GITHUB_ENV" | |
| env: | |
| GH_TOKEN: ${{ github.token }} | |
| - name: Run integration suite (${{ matrix.lane }}) | |
| run: ci/run-integration.sh | |
| env: | |
| VGI_SRC: ${{ github.workspace }}/vgi-upstream | |
| VGI_WORKER_BIN: ${{ github.workspace }}/vgi-example-worker/build/install/vgi-example-worker/bin/vgi-example-worker | |
| # Empty for the launch lane; run-integration.sh drops an empty value. | |
| VGI_RPC_SHM_SIZE_BYTES: ${{ matrix.shm_bytes || '' }} | |
| # launch (default) unless the lane selects the http transport. | |
| TRANSPORT: ${{ matrix.transport || 'launch' }} | |
| # JDK 25 + native access for the worker JVM (FFM shm, haybarn_jdbc). | |
| JAVA_TOOL_OPTIONS: --enable-native-access=ALL-UNNAMED |