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
devbranch: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 installin case the release includes new packages. - Update the version of the npm package by editing the
versionfield in thepackage.jsonwith#.#.#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
masterbranch.- 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
masterbranch 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
masterintodev(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!!