Skip to content

feat(ci): adopt ST release versioning and git tagging - #14

Merged
ddreyer merged 2 commits into
st-masterfrom
feat/st-release-versioning
Aug 18, 2026
Merged

feat(ci): adopt ST release versioning and git tagging#14
ddreyer merged 2 commits into
st-masterfrom
feat/st-release-versioning

Conversation

@ddreyer

@ddreyer ddreyer commented Aug 18, 2026

Copy link
Copy Markdown
Collaborator

Aligns the distroless build workflow with the release scheme used by startree-dex/st-release.yml: an upstream base version plus a StarTree build number.

base_version 0.49.0  +  build_number 1   ->   v0.49.0-ST-1

Inputs

Input Default Notes
base_version 0.49.0 Upstream Vector version this release is based on
build_number 1 StarTree build number
push true Uncheck for a build-only dry run

Replaces the old version / tag_suffix pair. Each release pushes .../vector:v<base>-ST-<n> and .../vector:latest, and creates a matching annotated git tag on the built commit.

base_version build_number git tag image tags
0.49.0 1 v0.49.0-ST-1 .../vector:v0.49.0-ST-1, .../vector:latest
0.49.0 2 v0.49.0-ST-2 .../vector:v0.49.0-ST-2, .../vector:latest
0.57.0 1 v0.57.0-ST-1 .../vector:v0.57.0-ST-1, .../vector:latest

No git_ref input

The branch to build comes from the Run workflow dropdown. workflow_dispatch already sets github.ref, and actions/checkout with no ref: defaults to it, so the dropdown is the single source of truth. A separate git_ref input duplicated that and allowed dispatching the workflow definition from one branch while building source from another - a real footgun.

repository: startreedata/vector was dropped from the checkout steps at the same time: it was only there to pair with git_ref, and naming a repository explicitly changes how checkout resolves a missing ref.

New release job

Creates and pushes the annotated git tag and writes a run summary. Needs permissions: contents: write.

Two deliberate differences from the dex workflow

Tagging happens after publish, not before the build. Dex creates the git tag as an early step; here release runs needs: [metadata, build, publish], so a failed build cannot leave an orphan tag pointing at something never shipped.

metadata fails fast if the tag already exists. Reusing a build number is the obvious mistake, and without this you would not find out until git push origin <tag> at the very end - after ~90 minutes of build time. This is why metadata checks out with fetch-depth: 0.

Note on the build version

The build uses the plain upstream version to name the tarball. The Makefile writes vector-${VERSION}-<triple>.tar.gz and the distroless Dockerfile globs vector-0*, so the -ST-N suffix stays out of VERSION and belongs to the image tag only. metadata warns if base_version disagrees with Cargo.toml on the branch being built.

Follow-up

values.yaml in startree-metrics-agent pins v0.43.0-multiarch. New releases use -ST-N, so that pin needs updating to whatever the first release cuts.

🤖 Generated with Claude Code

ddreyer and others added 2 commits August 17, 2026 17:49
Aligns the distroless build with startree-dex's st-release.yml scheme: an
upstream base version plus a StarTree build number.

  base_version 0.49.0 + build_number 1  ->  v0.49.0-ST-1

Input changes:
  - version + tag_suffix  ->  base_version (default 0.49.0) + build_number
  - new tag_latest toggle (default true) to also push :latest

The build still uses the plain upstream version to name the tarball, because
the Makefile writes vector-${VERSION}-<triple>.tar.gz and the distroless
Dockerfile globs `vector-0*`. The ST suffix belongs to the image tag only. A
warning is emitted if base_version disagrees with Cargo.toml on the built ref.

Adds a `release` job that creates and pushes an annotated git tag, and writes
a step summary of what shipped. Unlike the dex workflow it tags *after* a
successful publish rather than before the build, so a failed build cannot
leave an orphan release tag. To catch the common mistake early, `metadata`
fails in seconds if the release tag already exists rather than after a
90-minute build.

Needs contents: write for the tag push.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
git_ref duplicated what workflow_dispatch already provides. The Run workflow
branch selector sets github.ref, and actions/checkout with no `ref:` defaults
to it, so the branch dropdown is now the single source of truth for what gets
built. Removes the footgun of dispatching from one branch while building
another.

Also drops `repository: startreedata/vector` from the checkout steps -- with
git_ref gone it was redundant, and naming a repository explicitly changes how
checkout resolves a missing ref.

tag_latest removed; :latest is now always pushed alongside the versioned tag,
matching startree-dex's st-release.yml. `push: false` still covers dry runs.

concurrency, the Cargo.toml mismatch warning, and the run summary now use
github.ref_name.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@ddreyer
ddreyer merged commit dbb2843 into st-master Aug 18, 2026
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant