This process handles patch releases from version vX.Y.Z
to vX.Y.Z+1
assuming that vX.Y.Z
is the latest released version of go-ipfs.
- Get temporary permissions to force-push to
release-*
branches - Fork a new branch (
release-vX.Y.Z
) fromrelease
and cherry-pick the relevant commits from master (or custom fixes) onto this branch- Use
git cherry-pick -x
so that the commit message says(cherry picked from commit ...)
- Use
- Make a minimal changelog update tracking the relevant fixes to CHANGELOG, as its own commit e.g.
docs: update changelog vX.Y.Z+1
- version string in
version.go
has been updated (in therelease-vX.Y.Z+1
branch), as its own commit. - Make a PR merging
release-vX.Y.Z+1
into the release branch- This may be unnecessary, e.g. for backports
- Tag the merge commit in the
release
branch withvX.Y.Z+1
(ensure the tag is signed) - Upload to dist.ipfs.io
- Build: https://github.com/ipfs/distributions#usage.
- Pin the resulting release.
- Make a PR against ipfs/distributions with the updated versions, including the new hash in the PR comment.
- Ask the infra team to update the DNSLink record for dist.ipfs.io to point to the new distribution.
- cut a release on github and upload the result of the ipfs/distributions build in the previous step.
- Announce the Release:
- On IRC/Matrix (both #ipfs and #ipfs-dev)
- On discuss.ipfs.io
- Release published
- to dist.ipfs.io
- to npm-go-ipfs
- to chocolatey
- to snap
- to github
- to arch (flag it out of date)
- Cut a new ipfs-desktop release
- Merge the
release
branch back intomaster
, ignoring the changes toversion.go
(keep the-dev
version from master).