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.

  1. Checkout and rebase local master to upstream
git checkout master
git pull --ff-only upstream master
  1. Create a new git tag with the chosen version, for example:
git tag v0.1.0-alpha.15
  1. Push the tag to the upstream repository:
git push upstream v0.1.0-alpha.15
  1. 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.
  2. 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.
  3. Scroll to the bottom, check the Set as a pre-release box and click Publish 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.