Special (pinned-DuckDB) releases¶
Occasionally a customer needs a GizmoSQL release built against a specific
DuckDB version that differs from the current stable channel — for example to
stay on the DuckDB (and therefore ducklake / postgres_scanner / httpfs
extension) version their other tooling is pinned to.
A special release is a normal release build cut from a branch whose
CMakeLists.txt pins a different DUCKDB_STABLE_VERSION. It publishes its own
artifacts but never displaces the regular release.
Naming¶
The tag name is the base version plus a -duckdb<version> suffix:
CI treats any tag whose name contains -duckdb as special
(contains(github.ref_name, '-duckdb') in .github/workflows/ci.yml).
What CI does differently for a special tag¶
Regular tag (v1.36.1) |
Special tag (v1.36.1-duckdb1.5.4) |
|---|---|
Docker gizmodata/gizmosql:v1.36.1 and :latest (+ -slim, -adbc) |
Docker gizmodata/gizmosql:v1.36.1-duckdb1.5.4 (+ -slim, -adbc) only — latest untouched |
| GitHub release marked Latest | GitHub release marked pre-release, not latest |
| Homebrew tap updated | skipped |
gizmosql-py / PyPI release triggered |
skipped |
| iOS TestFlight upload | skipped |
| CLI zips, MSI, signed binaries, SBOM/attestations | same |
Cutting one¶
- Branch from the release you want to pin:
git checkout -b release/v1.36.1-duckdb1.5.4 v1.36.1 - In
CMakeLists.txt, setDUCKDB_STABLE_VERSIONto the requested DuckDB tag. - In
.github/workflows/ci.yml, set the stableDUCKDB_VERSIONDocker build-arg (the bundled DuckDB CLI) to the same version. - If the DuckDB version differs from the one the iOS extension pins were synced
to, re-sync the
ducklake/httpfspins inthird_party/duckdb_extensions.cmaketo DuckDB's own pins for that version. - Add a
## [1.36.1-duckdb1.5.4] - YYYY-MM-DDsection toCHANGELOG.md(the release notes are extracted from the section matching the tag). - Commit, tag, push:
git push origin release/v1.36.1-duckdb1.5.4 v1.36.1-duckdb1.5.4.
gizmosql_server --print-duckdb-version confirms the linked DuckDB at runtime.