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 Kubo.
- 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) - Add artifacts to https://dist.ipfs.tech/kubo
- Make a PR against ipfs/distributions with local changes produced by
add-version
(see usage) - Wait for PR to build artifacts and generate diff
- Inspect results, merge if CI is green and the diff looks ok
- Wait for
master
branch to build and update DNSLink at https://dist.ipfs.tech
- Make a PR against ipfs/distributions with local changes produced by
- Cut a release on github and reuse signed artifacts from https://dist.ipfs.tech/kubo (run sync-release-assets.yml workflow).
- Announce the Release:
- On discuss.ipfs.tech
- This will automatically post to Matrix (
#lobby:ipfs.io
) and IPFS Discord (#ipfs-chatter
) - Examples from the past: 0.13.1
- Pin the discuss topic
- This will automatically post to Matrix (
- On discuss.ipfs.tech
- Release published
- to dist.ipfs.tech
- to npm-go-ipfs (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).