Skip to content

Latest commit

 

History

History
59 lines (49 loc) · 3.92 KB

release.md

File metadata and controls

59 lines (49 loc) · 3.92 KB

Mayflower Release

Mayflower Release involves cutting a Github tag following Semantic Versioning leveraging CircleCI with these scripts. The release entails:

Auto Release

Mayflower releases are automated using CircleCI and it's scheduled for every Monday at 2pm (EDT) (See the cron time in CircleCI config).

  1. At the scheduled cron time, CircleCI will run release_branch and try to create a release branch from develop. (If no new changelogs, the task will fail and stop.)
  2. A release branch will be created based on the previous release tag, e.g. 9.38.0, and increment based on the impact levels in each new changelogs. E.g. only "patches"
  3. The script compile-changelogs gets triggered on the release branch, and all files under the changelog folder gets compiled and added to CHANGELOG.md.
  4. A pull request gets created into master with descriptions
  5. Once all the Circle tests are passed in the PR, review and "Merge" the PR into master.
  6. Upon approving the release PR, release the "hold" on github_tag in CircleCI. approve tag release hold
  7. A release will be cut for Mayflower.
  8. Merge master back into develop.

Creating a Hotfix

To do a hotfix directly into master:

  1. Create a hotfix branch with the prefix hotfix/.
  2. After committing your changes, create a Pull Request into the master branch.
  3. Add a changelog following the changelog template.
  4. Run script node scripts/compile-changelogs from the repo root.
  5. Commit the changes and push up to the remote hotfix branch.
  6. Once all the Circle tests are passed in the PR, review and "Squash and merge" the PR into master.
  7. Upon approving the release PR, release the "hold" on github_tag in CircleCI. approve tag release hold
  8. A release will be cut for Mayflower.
  9. Merge master back into develop.

Creating a Manual Release

In a case that a manual release from develop is needed:

  1. Run $ node scripts/release-branch.js from the repo root on develop branch
  2. A release branch will be created with changelogs compiled and changes committed.
  3. Push up the branch and create a PR into master, add the newly compiled changelogs to the description as the PR description.
  4. Once all the Circle tests are passed in the PR, review and "Merge" the PR into master.
  5. Upon approving the release PR, release the "hold" on github_tag in CircleCI. approve tag release hold
  6. A release will be cut for Mayflower.
  7. Merge master back into develop.

If you have a Github API token that has write access to the Mayflower Repo, instead of the steps above you can also automate the pull request creation by running (Linux):

DANGER_GITHUB_API_TOKEN=[Your_Github_API_Token] node scripts/release-branch.js

The release automation requires the changelogs being compliant, refer to Changelog Instructions for more details.