This documents the process for issuing and deploying a new release for CALC.
These docs walk through the process of creating release 0.0.4.
You can simply replace this value for your own, or
run docker-compose run app python manage.py releasehelp to generate a
customized version of these instructions for the version number you're releasing.
(CALC follows semantic versioning, and you can tell what version it's
currently on by looking at the CHANGELOG.)
Note: When following these instructions, ensure that no one else is
merging any PRs into develop; at the time of this writing, cloud.gov will
run out of memory quota if multiple branches of CALC are deployed
simultaneously!
To release version 0.0.4 of CALC:
-
Create a branch off
developcalledv0.0.4-rcand push it to GitHub:git checkout -b v0.0.4-rc develop git push -u git@github.com:18F/calc.git v0.0.4-rc -
As you've worked on CALC through the last sprint, you should have updated the "Unreleased" section of
CHANGELOG.mdwith major features, bug fixes, and pull requests. Now, you'll want to verify that it is up-to-date by comparing it against GitHub's commit list, and then describing the changes in a human-meaningful form (see previous release entries for the appropriate level of human-friendliness).Feel free to move more important, less technical entries to the top of the list. Remember, it will be read by both developers and users, so avoid the use of jargon where possible.
If you've changed anything in
CHANGELOG.md, go ahead and commit it now:git add CHANGELOG.md git commit -m "Updated changelog." git push -
Issue a PR to merge your branch into
mastertitled "Tag and release v0.0.4 to production". Paste in the latest changes from the topmost "Unreleased" section ofCHANGELOG.mdinto the description of the PR so stakeholders know what's changed. If you're on OS X, you can easily copy this to your clipboard with the following command:docker-compose run app python manage.py unreleased_changelog | pbcopy -
Wait for the stakeholders to sign-off on the release if there are functional or product changes, but do not merge the PR yet. The release candidate has just been approved to become the new release, so you'll need one more commit to make it official.
-
Update the version number in
calc/version.pyto0.0.4and then run:docker-compose run app python manage.py bump_changelogThis will create a new entry for the new version in
CHANGELOG.md, and it will also output your new version's release notes totag-message-v0.0.4.txt. -
Commit the changes to git and push them:
git commit -a -m "Release v0.0.4." git push -
Make sure that all automated QA services (CircleCI, etc) think the PR looks good.
-
Merge the PR into
mastervia the Create a merge commit merge strategy (i.e., do not squash or rebase). Once CircleCI is finished, the site will be deployed to production. -
Visit the production instance and make sure all is functioning as expected.
-
Tag the release and push it, so that the release shows up in the project's releases page:
git tag -a v0.0.4 -F tag-message-v0.0.4.txt git push origin v0.0.4 -
Merge
masterback intodevelopon the remote repository:git fetch git checkout develop git pull https://github.com/18F/calc.git develop git merge origin/master git push https://github.com/18F/calc.git develop
Hooray, you're done!