docs/RELEASE_CHECKLIST.md
Release types: RC (Release Candidate) | FINAL | PATCH
git fetch origin master releaserelease-vX.Y.Z (base from: master if Z=0 for new minor/major, release if Z>0 for patch)master branch and prepare for next release cycle:
vX.Y+1.0-dev (⚠️ double-check Y+1 is correct) (example PR)./docs/changelogs/vX.Y+1.md and add link in CHANGELOG.mdrelease-vX.Y.Z branch and update version.go to vX.Y.Z(-rcN) (⚠️ double-check Y matches release) (example)release-vX.Y.Z → release (example)master into release-vX.Y.Z: git cherry-pick -x <commit> (example)
-x flag records original commit SHA for traceability and cleaner merge historyChangelog and Contributors sections in release-vX.Y.Z with ./bin/mkreleaselog stdout (do NOT copy stderr)release-vX.Y.Z → release) using Create a merge commit
Squash and merge nor Rebase and merge; we want the releaser's GPG signature on the merge commitrelease-vX.Y.Z branch (needed for future patch releases and git history)⚠️ POINT OF NO RETURN: once pushed, tags trigger automatic Docker/NPM publishing that cannot be undone! If you're making a release for the first time, do pair programming and have the release reviewer verify all commands.
release-vX.Y.Z branch: git tag -s vX.Y.Z-rcN -m 'Prerelease X.Y.Z-rcN'release branch: git tag -s vX.Y.Z -m 'Release X.Y.Z'git show vX.Y.Z(-rcN)git push origin vX.Y.Z(-rcN)
git push --tags (pushes every local tag, cluttering the repo)Parallelism: Docker and dist.ipfs.tech only depend on the pushed tag and can be started in parallel. NPM and GitHub Release both depend on dist.ipfs.tech completing first.
git checkout -b release-kubo-X.Y.Z(-rcN).tool-versions golang matches Kubo's CI go-version: (update if needed)./dist.sh add-version kubo vX.Y.Z(-rcN) (usage)dists/kubo/versions, FINAL also updates dists/kubo/current - example)vX.Y.Z(-rcN)This is a pre-releaserelease → master
merge-release-vX.Y.Z from releasemaster to merge-release-vX.Y.Z first, and resolve conflict in version.go
-dev version from master in version.go, discard version from releasemerge-release-vX.Y.Z to master using Create a merge commit
Squash and merge nor Rebase and merge; only Create a merge commit preserves commit history and the audit trail of what was merged wherepackage.json and package-lock.jsonKubo vX.Y.Z(-rcN) is out!, tag: kubo##) in descriptiongo.mod (⚠️ do NOT run go get -u as it will upgrade indirect dependencies which may cause problems)make mod_tidygo.mod and go.sum updates