Skip to content

feat(landing): per-schema doc in describe.json + refreshed shared pag… #48

feat(landing): per-schema doc in describe.json + refreshed shared pag…

feat(landing): per-schema doc in describe.json + refreshed shared pag… #48

Workflow file for this run

# 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