Skip to content

ci: release from main by workflow, with changelog, binaries, and GitHub Releases - #28

Merged
NishantJoshi00 merged 3 commits into
mainfrom
ci/publish-readiness
Sep 4, 2026
Merged

NishantJoshi00 merged 3 commits into
mainfrom
ci/publish-readiness

Conversation

@NishantJoshi00

Copy link
Copy Markdown
Collaborator

Summary

Makes main releasable by construction and turns releases into two workflow runs.

CI (ci.yml, pr-title.yml)

  • New jobs: cargo publish --dry-run, wasm bundle build + npm pack --dry-run, release build of the CLI.
  • PR titles must be conventional commits (amannn/action-semantic-pull-request).

prepare-release (manual dispatch, optional version)

  • Derives the version from commits since the last tag with git-cliff, or takes one.
  • Generates the CHANGELOG.md section, bumps Cargo.toml, cli/Cargo.toml (both spots), package.json, Cargo.lock.
  • Waits on the release environment for approval, then pushes chore(release): vX.Y.Z + tag atomically as the release GitHub App. Rebuilds on the new head if main moved.

release (on tag; replaces publish-crates.yml and publish-npm.yml)

  • verify → crates.io ∥ npm ∥ binaries (5 targets via build-binaries.yml) → GitHub Release with changelog notes and archives.
  • cli/Cargo.toml gains binstall metadata: cargo binstall --git https://github.com/skillsynchq/txcript txcript-cli.

Also: CHANGELOG.md backfilled for every version, homepage/bugs metadata for the crates.io and npm pages, release skill rewritten.

Setup required before the first run (repo settings)

  • GitHub App with Contents: read/write, installed on the repo; RELEASE_APP_ID variable and RELEASE_APP_KEY secret; App added to the bypass list of both rulesets.
  • release environment with a required reviewer.
  • npm trusted publisher re-pointed from publish-npm.yml to release.yml.
  • Ruleset required checks: add PR title, crates.io package (dry-run), npm package (dry-run), CLI release build.

Test plan

  • git-cliff --bumped-version on main → v0.13.0; section renders with PR links
  • bump-version.sh and changelog-insert.sh tested locally
  • build-binaries matrix runs on this PR (triggered by the workflow file change)
  • New CI jobs green on this PR
  • First prepare-release run after setup

Supersedes #27.

🤖 Generated with Claude Code

NishantJoshi00 and others added 2 commits September 3, 2026 17:59
…ub Releases

Main becomes releasable by construction: ci now proves the crate packages,
the npm bundle builds, and the CLI builds in release mode on every PR, and
PR titles must be conventional commits so version and changelog can be
derived from them.

prepare-release, run by hand, derives the next version with git-cliff (or
takes one), generates the CHANGELOG.md section, bumps every manifest, and
lands the release commit and tag on main in one atomic push as the release
GitHub App. If main moves during the run it rebuilds on the new head.

release replaces publish-crates and publish-npm: on the tag it publishes
crates.io and npm, builds CLI binaries for five targets, and creates the
GitHub Release with the changelog section and the archives attached.
cli/Cargo.toml carries binstall metadata pointing at those archives.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
The live harnesses build BoringSSL, which needs a C++ toolchain the musl
tools do not provide. glibc targets on the 22.04 runners give a 2.35
floor and a normal toolchain.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
@NishantJoshi00
NishantJoshi00 merged commit a156efb into main Sep 4, 2026
13 checks passed
@NishantJoshi00
NishantJoshi00 deleted the ci/publish-readiness branch September 4, 2026 01:32
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