Mayflower release managers with the necessary repo permissions can follow these steps to deploy code to production (i.e. do a release).
Note: the following steps assume that your local machine and repository is already set up and functioning according to our Getting Started docs.
- If there is new code to be delivered, notify the team at least two hours ahead of time that a release is coming. Follow the Communicate Releases instructions for Upcoming Deployments.
- Check out the massgov/mayflower
dev
branch:git checkout dev
- Pull the latest from upstream
git pull <remote> dev
. cd styleguide
- Create a release branch
git checkout -b release-#.#.#
where#.#.#
is the next version (i.e.5.0.0
). Read more about Mayflower and semantic versioning to ensure that your are creating the right type of version.- Add release notes to the top of release notes based on the "changelog.txt" files, remove all the "changelog.txt" files and then commit these changes.
- Run
npm install
in case the release includes new packages. - Update the version of the npm package by editing the
version
field in thepackage.json
with#.#.#
for the release. - Commit your version change from
package.json
. - Push release branch to
massgov/mayflower
(i.e.git push <remote> release-#.#.#
).
- Wait for the circle build to pass, which will deploy your release branch to staging automagically :).
- Verify release notes against the site rendered at:
https://mayflower.digital.mass.gov/b/<your-release-branch>/index.html
. - Smoke test Mayflower (a quick way to do this is to browse around to some of the different pages in the "pages" menu and do a quick gut check)
- Open a Github Pull Request to merge (no squash!) the release branch into the
master
branch.- Add the relevant release notes to the PR notes.
- This is a great time to verify one more time that your release is following semantic versioning properly (i.e. not pushing out breaking changes in a minor release).
- Create a production release off the
master
branch in GitHub:- Tag version:
#.#.#
(your release number) - @ Target:
master
<<<<<<- important! :) - Release title:
#.#.#
(your release number) - Describe the release: paste your release notes markdown here, after the release version/date line, add a link to the release PR (protip: type
#
and you'll get an autocomplete dropdown to get to your pr)
- Tag version:
- Wait for the circle builds to pass
- Smoke test Prod
- Make sure the home page reflects the date and version
- Open a GitHub Pull Request to merge
master
intodev
(this should only bring an updatedrelease-notes.md
,package.json
). If a feature was reverted on the release branch, have a peer do the merge after a review. - In JIRA Go to the DP project.
- Click on the Releases icon on the left side (it looks like a boat/ship).
- Add a new release version with today's date.
- Go to each shipped JIRA issue and update the Fix Version/s field.
- Go to the list of issues contained within the release version and copy the URL (link to this issue from release notes).
- Follow the Communicate Releases instructions for Deployment Completed to email Release Notes to the team.
- Celebrate!!