-
Notifications
You must be signed in to change notification settings - Fork 49
chore: revamp the release process automation #735
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
|
@bitwalker The new CI jobs need write permission. I don't have access to manage those. Could you check if you can set those? |
bitwalker
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Should we split out the SDK into a new repo now? We're at the point where we're already effectively managing it and the compiler separately in the same repo, it'd probably be simpler going forward to use separate repos. What do you think?
bitwalker
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Marking this approved to avoid holding things up, but I'd encourage splitting the SDK out of this repo at the earliest opportunity
I'd like to wait for the automated bindings generation. Without it, the manual bindings writing process involves changes to the frontend (MASM signature, transformation strategy, etc.) for every function. So it'd be painful to do it in two repos simultaneously. |
|
I converted this PR back to the draft since I got the Miden SDK release workflow wrong. It would not work. We would not be able to distinguish SDK vs. compiler release workflows. |
The new release process will be the following: Release of the Miden Compiler 1. Merging to `main` will create a new release PR containing any unreleased changes. 2. Optional. Change the proposed crate version, CHANGELOG edits. 3. The release PR gets merged to `main` when we are ready to publish the release. 4. The crates are published to crates.io, a new git tag is created, as well as a GitHub release 5. A job is run to pre-build the executable for our supported targets and upload them to the created Github release. 6. Merge the `main` branch back to the `next` branch. Release of the Miden SDK crates 1. Create a release PR naming the branch with the `release-plz-` prefix (its important to use this prefix to trigger the crate publishing on CI in one of the next steps). 2. Bump the SDK crates versions and update the CHANGELOG. 3. Merge it into the main branch. 4. The CI will automatically run `release-plz release` after the release PR is merged to publish the new versions to crates.io. 5. Set a git tag for the published crates to mark the release. 6. Make a Github release. 7. Merge the `main` branch back to the `next` branch. Implementation details: 1. Suppress git tag and github release creation for all the crates except `midenc` and `miden`(SDK). 2. In `uploading-artifacts` CI job find the release tags for `midenc` (to ignore SDK release).
ccdacb3 to
e0becac
Compare
Close #726
This PR preserves the existing CI publish job to handle the SDK release (until it moves to a separate repo) and introduces the new release process for the compiler.
The new release process will be the following:
Release of the Miden Compiler
mainwill create a new release PR containing any unreleased changes.mainwhen we are ready to publish the release.mainbranch back to thenextbranch.Release of the Miden SDK crates
nextbranch naming the branch with therelease-plz-prefix (its important to use this prefix to trigger the crate publishing on CI in the later step).sdk/sdk/CHANGELOG.mdnextbranch.release-plz releaseafter the release PR is merged to publish the new versions to crates.io.Implementation details:
midenc.uploading-artifactsCI job find the release tags formidenc(to ignore SDK release).