feat(landing): per-schema doc in describe.json + refreshed shared pag… #48
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
| # Runs the canonical Query-farm/vgi integration sqllogictest suite against the Go | |
| # example worker on every push / PR. Rather than building the C++ extension from | |
| # source, it drives a prebuilt standalone `haybarn-unittest` and installs the | |
| # SIGNED vgi extension from the Haybarn community channel + its deps from core. | |
| # The .test files come from a pinned Query-farm/vgi checkout; ci/run-integration.sh | |
| # + ci/preprocess-require.awk adapt them for the standalone runner. See ci/README.md. | |
| name: Integration suite | |
| on: | |
| push: | |
| branches: [main] | |
| pull_request: | |
| branches: [main] | |
| workflow_dispatch: | |
| permissions: | |
| contents: read | |
| concurrency: | |
| group: integration-${{ github.ref }} | |
| cancel-in-progress: true | |
| env: | |
| # The Query-farm/vgi commit whose test/sql/integration suite we run. Pinned for | |
| # reproducibility; bump deliberately and re-validate against the then-current | |
| # community extension (see ci/README.md). | |
| 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. | |
| jobs: | |
| integration: | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 45 | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| include: | |
| # stdio: the subprocess transport (whole suite — the primary lane). | |
| # shm: stdio + the POSIX shared-memory side channel. | |
| # launch: the AF_UNIX launcher-only tests. | |
| # http: the whole suite over the stateless HTTP transport. | |
| - { lane: stdio } | |
| - { lane: shm, shm_bytes: '67108864' } | |
| - { lane: launch } | |
| - { lane: http } | |
| name: integration (${{ matrix.lane }}) | |
| steps: | |
| - name: Checkout vgi-go | |
| uses: actions/checkout@v4 | |
| - name: Checkout pinned vgi test suite | |
| uses: actions/checkout@v4 | |
| with: | |
| repository: Query-farm/vgi | |
| ref: ${{ env.VGI_REF }} | |
| path: vgi-upstream | |
| token: ${{ secrets.GITHUB_TOKEN }} | |
| - uses: actions/setup-go@v5 | |
| with: | |
| go-version: '1.25' | |
| - name: Build example workers (coverage-instrumented) | |
| run: make build COVER=1 | |
| - 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 | |
| TRANSPORT: ${{ matrix.lane }} | |
| # Empty on every lane except shm; run-integration.sh drops an empty value. | |
| VGI_RPC_SHM_SIZE_BYTES: ${{ matrix.shm_bytes || '' }} | |
| # Collect worker coverage for this lane (the workers are -cover binaries; | |
| # see Makefile COVER=1 / ci/run-integration.sh). Each lane writes its pods | |
| # to a lane-specific dir, uploaded below and merged in the coverage job. | |
| COVERAGE: '1' | |
| GOCOVERDIR: ${{ github.workspace }}/covdata-${{ matrix.lane }} | |
| - name: Upload coverage pods (${{ matrix.lane }}) | |
| if: always() | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: covdata-${{ matrix.lane }} | |
| path: covdata-${{ matrix.lane }} | |
| if-no-files-found: warn | |
| coverage: | |
| name: coverage (merge lanes) | |
| needs: integration | |
| if: always() | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: actions/setup-go@v5 | |
| with: | |
| go-version: '1.25' | |
| - name: Download all lane coverage pods | |
| uses: actions/download-artifact@v4 | |
| with: | |
| pattern: covdata-* | |
| path: covdata | |
| - name: Merge + report worker integration coverage | |
| run: | | |
| dirs=$(find covdata -mindepth 1 -maxdepth 1 -type d | paste -sd, -) | |
| [ -n "$dirs" ] || { echo "::warning::no coverage pods to merge"; exit 0; } | |
| mkdir -p merged | |
| go tool covdata merge -i="$dirs" -o merged | |
| go tool covdata textfmt -i=merged -o coverage-integration.txt | |
| echo '### Worker integration coverage' >> "$GITHUB_STEP_SUMMARY" | |
| echo '```' >> "$GITHUB_STEP_SUMMARY" | |
| go tool covdata percent -i=merged >> "$GITHUB_STEP_SUMMARY" | |
| echo '```' >> "$GITHUB_STEP_SUMMARY" | |
| go tool covdata percent -i=merged | |
| - name: Upload merged coverage profile | |
| if: always() | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: coverage-integration | |
| path: coverage-integration.txt | |
| if-no-files-found: warn |