Canvas Kit releases major changes every 6 months. Releases are done by a maintainer. The process is similar to minor releases, except the addition of the support branch. All branches have to be forward merged. Check out all of the following to make sure there are no commits listed:
- https://github.com/Workday/canvas-kit/compare/master...support
- https://github.com/Workday/canvas-kit/compare/prerelease/minor...master
- https://github.com/Workday/canvas-kit/compare/prerelease/major...prerelease/minor
If there are any commits listed, run the forward merge for the branch that isn't merged forward (support, master, or prerelease/minor). It is safe to run this job even if there are no changes since the job will recognize no change and bail.
We'll be using the terms previous major, current major, and next major in the context of versions before the release process is complete. For example, if support is pointing to v4, master to v5 and prerelease/major to v6, we need to update these pointers. After these steps are completed, the following will happen:
support: v4 -> v5master: v5 -> v6prerelease/minor: v5 -> v6prerelease/major: v6 -> v7
Before starting the next steps, make sure to fetch upstream.
git fetch upstream
- Update
supportto point to the current major versionmasteris currently pointing to.
git checkout support
git pull upstream master
git push upstream master:support
This will trigger a support release job that should skip publishing. We do not need to wait for this job.
2. Update master to point to the next major release prerelease/major is currently pointing to. This step produces the actual release, including a Slack message.
git checkout prerelease/major
git pull upstream prerelease/major
git push upstream prerelease/major:master
This will trigger the release. Up to this point, prerelease/major has been creating canary jobs. This will trigger the actual release. We must wait for this job to finish. The job can be found https://github.com/Workday/canvas-kit/actions/workflows/release.yml. The job will be running against master. The CI job will run lerna bump and push that commit back onto the master branch which will include the update to lerna.json that we need in the next step.
3. Once the previous step is completed, we need to update prerelease/minor to point to the next major release. After this step, any PRs against this branch will be correct.
git checkout master
git pull upstream master
git push upstream master:prerelease/minor
- Now we need to update
prerelease/majorwith the changes we made toprerelease/minorwhich include the major release version bump. This will point the canary build to the next next major version. For example, ifprerelease/majorwas pointing to v6 before our release, it will now point to v7.
git checkout master
git pull upstream master
git push upstream master:prerelease/major