Skip to content

Add a Release workflow, and stop moving v0 - #3

Merged
nicodes merged 1 commit into
mainfrom
feat/release-workflow
Aug 1, 2026
Merged

Add a Release workflow, and stop moving v0#3
nicodes merged 1 commit into
mainfrom
feat/release-workflow

Conversation

@nicodes

@nicodes nicodes commented Aug 1, 2026

Copy link
Copy Markdown
Member

Gives this repo the same release story as komizo-actions — immutable versions, cut by a workflow instead of by hand.

What changes

  • .github/workflows/release.ymlworkflow_dispatch with patch/minor/major. Re-runs CI against the commit, computes the next version from the tag history, refuses to overwrite an existing tag, then publishes.
  • ci.yml gains workflow_call so Release runs exactly those checks rather than a copy.
  • README — stops recommending the moving @v0.

Two places I did not copy komizo-actions

No pin-rewriting release script. That machinery exists there because deploy composes five sibling actions, and GitHub resolves each inner uses: independently of the caller's ref — so a consumer's SHA pin covers one file and leaves five floating. Neither action here composes a sibling (the only mention of gdam-actions inside one is an error message), so there is nothing to rewrite. A copy of that script would be ceremony guarding a problem this repo doesn't have.

Reusable workflow, not a composite action. komizo-actions shares its checks via .github/actions/check. That doesn't work here: the install job is a matrix over ubuntu-latest and macos-latest, and a matrix belongs to a job — a composite action can't own one, so reusing it that way would mean rewriting the matrix in the caller and letting the two drift. workflow_call keeps one definition.

On the version number

The next release is v0.1.2, not v0.0.1. This repo already has v0.1.0 and v0.1.1, and v0.0.1 would sort below both:

$ printf '0.0.1\n0.1.0\n0.1.1\n' | sort -V | head -1
0.0.1

So a v0.0.1 here would be a release that every version-ordering tool considers older than what's already out. patch off v0.1.1 is the right bump, and the README examples say @v0.1.2 in anticipation.

On @v0

The README argued for it honestly — "a fix reaches every repository without 17 pull requests". That's true, and it's also exactly the risk: a bad release reaches them just as fast, with no way to stay on the previous one short of finding its SHA by hand, and nothing in a consumer's workflow recording which files it actually ran.

v0 currently points at the same commit as v0.1.1, so nothing is broken today. Once the 16 consumers are moved onto v0.1.2 it should be deleted, so @v0 fails loudly rather than silently serving whatever it last pointed at.

Releasing was a `git tag` by hand with the moving `v0` repointed by hand
beside it -- two commands nothing checked, where forgetting the second
silently left all sixteen consumers on the previous version.

It is a button now: workflow_dispatch with a patch/minor/major choice,
which re-runs CI against the commit, computes the next version from the
tag history, refuses to overwrite an existing tag, and publishes.

CI gained `workflow_call` so Release runs exactly those checks rather
than a copy. A reusable WORKFLOW rather than a composite action because
the install job is a matrix over two operating systems, and a matrix
belongs to a job -- a composite cannot own one, so reusing it that way
would have meant rewriting the matrix in the caller and letting the two
drift.

Deliberately NOT copied from the sibling komizo-actions: the pin-
rewriting release script. That exists there because its `deploy` action
composes five siblings and GitHub resolves each inner `uses:`
independently of the caller's ref, so a consumer's SHA pin covers one
file and leaves five floating. Neither action here composes a sibling --
the only mention of gdam-actions inside one is an error message -- so
there is nothing to rewrite, and a copy of that script would be ceremony
guarding a problem this repository does not have.

The README recommended tracking `@v0` because "a fix reaches every
repository without 17 pull requests". That is true and it is also the
whole risk: a bad release reaches them just as fast, with no way to stay
on the previous one short of finding its SHA, and nothing in a consumer's
workflow recording which files it actually ran. Seventeen pull requests
is the price of knowing.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@nicodes
nicodes merged commit 7137738 into main Aug 1, 2026
3 checks passed
@nicodes
nicodes deleted the feat/release-workflow branch August 1, 2026 08:20
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