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.
- 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.
- Note the DNSLink record for dist.ipfs.io points to the new distribution as part of CI after merging into master.
- cut a release on github and upload the result of the ipfs/distributions build in the previous step.
- Announce the Release:
- On discuss.ipfs.io
- This will automatically post to IPFS Discord #ipfs-chatter
- Examples from the past: 0.13.1
- Pin the topic
- On discuss.ipfs.io
- Release published
- to dist.ipfs.io
- to npm (should be done by ipfs/npm-go-ipfs, but ok to dispatch this job manually)
- to chocolatey (should be done by ipfs/choco-go-ipfs, but ok to dispatch this job manually)
- to snap (should happen automatically, see snap/snapcraft.yaml)
- 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).