Skip to content

ci: add manual-only Prepare release workflow - #57

Draft
aesslinger wants to merge 1 commit into
mainfrom
ci/automated-release-job
Draft

ci: add manual-only Prepare release workflow#57
aesslinger wants to merge 1 commit into
mainfrom
ci/automated-release-job

Conversation

@aesslinger

Copy link
Copy Markdown
Collaborator

Summary

  • Adds .github/workflows/prepare-release.yml: a workflow_dispatch-only job (no push/schedule/PR trigger) that aggregates every merged PR since the last tag, classifies each by Conventional Commits type using the same logic as the existing per-PR version-suggestion comment, computes the next version/channel, drafts the CHANGELOG.md section, and — outside dry_run (default true) — bumps .tabularium/Cargo.toml/Cargo.lock/CHANGELOG.md, re-runs the full verification suite, then commits/tags/pushes directly to main as github-actions[bot]. The tag push hands off to the existing release.yml build/publish pipeline unchanged.
  • Extracts the parse/format/bump/classify logic that lived inline in ci.yml's version-suggestion job into .github/scripts/version.js, shared by both jobs — pure refactor, no behavior change to the existing per-PR comment.
  • Documents the new workflow under README's "Contributing: PR Titles & Versioning" section, including a note that once branch protection is eventually added to main, a GitHub ruleset with this workflow's push identity in the bypass list is the way to keep this job pushing directly while still requiring PRs from human contributors.
  • Flags (but doesn't fix) that the per-PR prerelease:* label model doesn't scale past the beta channel — left as a follow-up.

Why manual-only

This replaces the fully-manual "bump commit" ritual documented in past commits (e.g. 3a4135a, 5f93b29) with one workflow run, but is deliberately staged as opt-in only — no automatic trigger is added in this PR.

Test plan

  • node --check .github/scripts/version.js
  • actionlint .github/workflows/ci.yml .github/workflows/prepare-release.yml — clean
  • Ruby YAML.load_file sanity check on both workflow files
  • npx markdownlint-cli README.md — clean
  • Live workflow_dispatch with dry_run: true — GitHub only allows dispatching a workflow_dispatch workflow once it exists on the default branch, so this has to happen after merge. Plan is to run it against main right after merging and confirm the job summary reports a correct (or correctly-empty) preview before ever running with dry_run: false.

Adds a workflow_dispatch-only job that aggregates every merged PR since
the last tag using the same Conventional Commits classification already
used by the per-PR version-suggestion comment (now shared via
.github/scripts/version.js), computes the next version/channel, drafts
the CHANGELOG section, and — outside dry-run — bumps files, verifies,
commits, tags, and pushes, replacing the manual bump-commit ritual.
No push/schedule trigger is added; dry_run defaults to true.
@aesslinger aesslinger added the prerelease:beta Version suggestion targets a beta prerelease label Aug 31, 2026
@aesslinger aesslinger self-assigned this Aug 31, 2026
@aesslinger
aesslinger marked this pull request as draft September 3, 2026 12:45
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

prerelease:beta Version suggestion targets a beta prerelease

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant