Skip to content

release: just release X.Y.Z and release.yml - #49

Merged
h0ffmann merged 1 commit into
mainfrom
claude/project-thread-16bz5x
Oct 8, 2026
Merged

h0ffmann merged 1 commit into
mainfrom
claude/project-thread-16bz5x

Conversation

@h0ffmann

@h0ffmann h0ffmann commented Oct 8, 2026

Copy link
Copy Markdown
Contributor

Summary: releasing the devkit becomes just release X.Y.Z, run twice around a human merge. On a main whose versions are not X.Y.Z it bumps every version location and pushes chore/release-vX.Y.Z for a PR; once main says X.Y.Z everywhere it tags and pushes vX.Y.Z, and the new release.yml publishes the GitHub release (what Zenodo will archive, #43). Part of #47; the consumer pin-bump PRs wait on the token decision there.

MIP none — devkit-internal release tooling (#47)
Tested ✅ gates · ⬜ e2e · ⬜ live · ⬜ ci-only: release.py --self-test; --check on main (29 locations at 0.6.0) and against 0.5.1 (fails); --dry-run of both paths in a fresh clone; ruff, actionlint, tests/self-tests.sh, docs-lint, agents-check; a trial merge with #32 and #33 passes the same gates
Cost n/a (no measured figure in this cloud session)

What changed

  • scripts/release.py: bump, tag and --check. A pin is a v tag in a devkit context only (marola-devkit/v…, a devkit workflow @v…, devkit-ref:, the marketplace ref, the README status line), so actions/checkout@v7 and CHANGELOG history are never touched.
  • .github/workflows/release.yml: on a v* tag, --check against the tag, then gh release create --verify-tag --generate-notes.
  • justfile: the release recipe; quality runs release.py --check, so a PR that misses a version location fails.
  • docs/3-development.md "Releases": the two-step flow.

Try it

just release 0.6.0 --dry-run   # main already says 0.6.0: prints the tag and push
just release 0.7.0 --dry-run   # prints the files it would bump

v0.6.0 is the first release to go through it: after this merges, just release 0.6.0 on main tags it.


Generated by Claude Code

One command, run twice around a human merge. On a main whose versions are not X.Y.Z it writes
the version into plugin.json, flake.nix and every documented pin, adds a CHANGELOG heading with
the commits since the last tag, and pushes chore/release-vX.Y.Z for a PR. On a main that already
says X.Y.Z everywhere it tags vX.Y.Z and pushes the tag; release.yml checks the versions against
the tag and publishes the GitHub release. `just quality` now fails when the versions disagree.

The consumer pin-bump PRs from #47 wait on the token decision there.

Part of #47.

Tested: release.py --self-test; --check on main (29 locations at 0.6.0) and against 0.5.1 (fails); --dry-run of both paths in a fresh clone; ruff, actionlint, tests/self-tests.sh, docs-lint, agents-check; trial merge with #32 and #33 passes the same gates
Cost: n/a (no measured figure in this cloud session)
Co-Authored-By: Claude <noreply@anthropic.com>
@h0ffmann
h0ffmann merged commit 0425aa7 into main Oct 8, 2026
6 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.

2 participants