.github/workflows/ci.yml runs the unit tests
and this repo's sqllogictest suite (test/sql/*.test) against the scikit-learn
VGI worker through the real DuckDB vgi extension on every push / PR —
across Linux, macOS, and Windows.
Rather than building the vgi DuckDB extension from source, CI drives a
prebuilt standalone haybarn-unittest (the DuckDB/Haybarn sqllogictest
runner, published in Haybarn's releases) and installs the signed vgi
extension from the Haybarn community channel:
- Install the worker —
uv sync --frozeninto a venv. Thevgi-sklearnconsole-script (with its venv shebang) is a self-contained stdio worker the extension can spawn. - Download the runner — the matching
haybarn_unittest-*asset per platform from the latest Haybarn release. - Preprocess — the standalone runner links none of the extensions the
tests gate on, so
preprocess-require.awkrewrites eachrequire <ext>into an explicit signedINSTALL <ext> FROM {community,core}; LOAD <ext>;.require-envand everything else pass through untouched. - Run —
run-integration.shstages the preprocessed tree, pointsVGI_SKLEARN_WORKERat the installedvgi-sklearncommand, isolates the model registry under a tempSKLEARN_MODELS_DIR, warms the extension cache once, then runs the suite in a singlehaybarn-unittestinvocation. Any failed assertion exits non-zero and fails the job.
uv sync --python 3.13 # install the worker + deps
# point HAYBARN_UNITTEST at a haybarn-unittest binary (or a local DuckDB
# `unittest` built with the vgi extension), and the worker at the console script:
HAYBARN_UNITTEST=/path/to/haybarn-unittest \
VGI_SKLEARN_WORKER="$PWD/.venv/bin/vgi-sklearn" \
ci/run-integration.shOr, against the local source checkouts without installing, use the Makefile
targets (make test-stdio / make test-http), which point the worker at
uv run sklearn_worker.py.