Ci/add release plz - #335
Conversation
| The "feature freeze" will happen **one week before the release date**. This means a new branch will be created originating from the `master` tip at that time, and in that branch we will stop adding new features and only focus on ensuring the ones we've added are working properly. | ||
|
|
||
| To create a new release a release manager will create a new issue using the `Release` template and follow the template instructions. | ||
| To create a new release a release manager will trigger the `release-plz` workflow to create a new release PR, review and approve it, and then trigger the `release-plz` workflow again to publish it to `crates.io`. |
There was a problem hiding this comment.
Since the release templates will no longer be used, do we update them to contain the steps in triggering the workflow or we will delete them?
There was a problem hiding this comment.
Good point, I've removed the minor_release.md template since we don't need it. We should still create a summary for posting about releases on social media, but that can be done ad-hoc for now. I've found trying to use one summary everywhere didn't really work anyway.
tvpeter
left a comment
There was a problem hiding this comment.
Thank you for working on this release tool.
Aside the nits, I am wondering if the Release Tags will still be signed with this tool (since there is no way of testing it locally). If the tags will no longer be signed, is there a way that users can verify a Release?
I tested some parts locally and it worked well, though the format for the Changelog entries are a bit different. They are based on commit messages. So we will have to ensure commit messages are properly curated.
Thank you.
02677af to
769a7a2
Compare
The new tags are signed but by the "bitcoindevkit-release-plz" bot. You can see an example here: https://github.com/bitcoindevkit/rust-cktap/releases/tag/rust-cktap-v0.3.0 This at least means that only someone authorized to publish releases via the bot, enforced by GitHub settings, created the release tag.
During PR reviews we'll need to make sure commits follow the conventional commits style. But if there are problems with the release-plz auto generated CHANGELOG, the PR can still be manually edited to fix mistakes before it's merged (release-plz won't overwrite manual changes). |
Sorry I take it back, the tags show as verified by GitHub, but they don't have a proper signature in the git history: $ git tag -v rust-cktap-v0.3.0
object 090abe33212aa1f9582d7ef22faa2e2634f0316f
type commit
tag rust-cktap-v0.3.0
tagger bitcoindevkit-release-plz[bot] <327630426+bitcoindevkit-release-plz[bot]@users.noreply.github.com> 1789143429 +0000
chore: Release package rust-cktap version 0.3.0error: no signature found |
I think it is non-blocking and the tagger label should suffice for now. |
Add a GitHub Actions workflow that uses release-plz to automate creating release PRs, publishing to crates.io, tagging, and creating GitHub releases via OIDC trusted publishing and environment-gated approvals. Update DEVELOPMENT_CYCLE.md with the new release process.
actions/checkout@v6 to v7 setup-rust-toolchain@v1 to v2 codecov/codecov-action@v5 to v7
The release_plz workflow will use conventional commit messages to update the CHANGELOG. Also removed the API breaking checkbox in the pull_request_template.md since it doesn't apply to binary apps like bdk-cli and removed the now unneeded minor_release.md template.
769a7a2 to
1d4c002
Compare
|
I force-pushed a rebase on the latest master for a cleaner merge. |
Description
Add a GitHub Actions workflow that uses release-plz to automate creating release PRs, publishing to crates.io, tagging, and creating GitHub releases via OIDC trusted publishing and environment-gated approvals. Update DEVELOPMENT_CYCLE.md with the new release process.
Removed changelog section from pr template since the release_plz workflow will use conventional commit messages to update the CHANGELOG. Also removed the API breaking checkbox since it doesn't apply to binary apps like bdk-cli.
Notes to the reviewers
Before this workflow will work I'll need to update the repo and crates.io settings for the release-plz action.
crates.iofor the crate with workflow name "release-plz.yml", environment "release". Require trusted publishing for all new versions.You can see how this workflow works here: https://github.com/bitcoindevkit/rust-cktap/actions/workflows/release-plz.yml
Also bumped GitHub Actions version:
Checklists
All Submissions:
cargo fmtandcargo clippybefore committing