Release a new CLI version whenever:
- The GlassFlow Helm chart is released with new image versions
- CLI code changes (bug fixes, new features)
- Kafka/ClickHouse chart versions are bumped in
internal/config/default_config.yaml
The image bundle is built from whatever the Helm charts currently publish. Check that the charts you want are live:
helm repo update
helm search repo glassflow/glassflow-etl --versions | head -5If Kafka or ClickHouse chart versions changed, update internal/config/default_config.yaml:
charts:
kafka:
version: "32.4.3" # ← update this
clickhouse:
version: "9.4.4" # ← update thisGlassFlow chart version is not pinned (empty = latest from repo), so it picks up new releases automatically.
cd kind-node-image
./resolve-images.sh # check which images will be bundled
./build.sh # build the bundle locally (~2 min)git tag v0.x.x
git push origin v0.x.xThis triggers the GitHub Actions workflow which:
- GoReleaser builds CLI binaries for all platforms and creates the GitHub release
- Image bundle job runs
build.sh, then attachesglassflow-images.tar.gzto the release
Check https://github.com/glassflow/cli/releases for:
- CLI binaries for linux/darwin/windows (amd64 + arm64)
-
glassflow-images.tar.gz(~724 MB) — core GlassFlow images -
demo-images.tar.gz(~674 MB) — Kafka + ClickHouse images -
checksums.txt
If you maintain a Homebrew tap, update the formula with the new version and checksums.
Two separate bundles are built to match the modular install flow:
glassflow-images.tar.gz (loaded by glassflow up):
- GlassFlow ETL components (API, UI, operator, migration, ingestor, sink, join, dedup, notifier)
- NATS + config reloader
- PostgreSQL
- Utility images (curl, busybox, kubectl)
demo-images.tar.gz (loaded by glassflow setup-demo and glassflow up --demo):
- Kafka (Bitnami)
- ClickHouse + Keeper (Bitnami)
- Python (demo producer)
Image versions are resolved dynamically from the published Helm charts at build time — they are not hardcoded in the build script and are not affected by local development versions.
resolve-images.shrunshelm templateon published charts → extracts image referencesbuild.shpulls images and saves them as two.tar.gzfiles (core + demo)- Users place files at
~/.glassflow/glassflow-images.tar.gzand~/.glassflow/demo-images.tar.gz glassflow uploads the core bundle;setup-demoand--demoalso load the demo bundle- Result: pods start without pulling images (~24s load vs 10-15 min pulls)