Release checklist
First
Ensure that the CI for the latest commit to master is passing. This ensures that trin itself is working, and that the latest docker image is working and published.
Communicate
Announce in #trin chat the upcoming release. Aim for a day or more notice, but announcing a few minutes before releasing is still better than not saying anything.
Choosing a version
Make sure that version follows semver rules e.g (0.2.0-alpha.3
).
Since trin is now stable, but v0, breaking changes are a minor version bump, and all other changes are a patch version bump. Updating to v1 would require a group discussion and decision.
Release dependencies
For now, that's just ethportal-api. Manually bump the version in the
Cargo.toml, and run cargo update
to update the workspace lockfile. Commit and
merge these changes to trin. Then run:
cd ethportal-api
cargo publish --no-verify
We would like to get rid of the no-verify ASAP, but for now Cargo.lock is
causing issues that we have no other workaround for. cargo publish
generates
a new lock file, and then complains that the lockfile is new. See this
StackOverflow post.
Release Trin
We use automated github release workflow to create a new release. This will create a new release draft with the new tag and will build all the binaries and attach them to the release.
- Checkout and rebase local master to upstream
git checkout master
git pull --ff-only upstream master
- Create a new git tag with the chosen version, for example:
git tag v0.1.0-alpha.15
- Push the tag to the upstream repository:
git push upstream v0.1.0-alpha.15
- Wait for the github actions release job to finish. It will create automatically a draft release with all precompiled binaries included. This should take 15-20 min to complete.
- Find the draft release generated by the github bot in releases and edit the template by completing and deleting all checklists. Write a short summary if available. Add any clarifying information that's helpful about the release.
- Scroll to the bottom, check the
Set as a pre-release
box and clickPublish release
.
Build Instructions
Deploy
Push these changes out to the nodes we run in the network. See next page for details.
Communicate
Notify in Discord chat about the new release being complete.
As trin stabilizes, more notifications will be necessary (twitter, blog post, etc). Though we probably want to do at least a small network deployment before publicizing.