Note: In order to complete all of the steps below a user will need:
- to be a member of the
openscope-admins
team within the openScope team on GitHub - have access to the openScope pipeline on Heroku
Each sprint is considered to progress through these three phases. Further details about each phase can be found in the sections below. The development phase lasts the majority of the sprint, with the first two days of the sprint being reserved to the initialization phase, and the last three being reserved to the testing phase.
- Initialization Phase (first two days)
- Development Phase
- Testing Phase (last three days)
The checklists below must be completed at the beginning of the phase for which they are named.
Note: Except on the first merge of a hotfix/bugfix/feature branch, please always use git merge branchName
with up-to-date local branches, and not git pull origin branchName
, as the latter forces a non-FF merge, which is often undesirable.
In total, each sprint cycle will include the following actions in the following order:
- Sprint Closeout Procedure
- Before Development Phase Checklist
- Proceed with development in accordance with the Development Procedures
- Testing Phase Checklist
- Release Procedure
- Clean up sprint board and milestone.
- Ensure they only contain resolved items.
- Move any items that have not been resolved.
- Close sprint (Zube) and milestone (GitHub).
- Checkout
develop
. - Attempt to merge
master
intodevelop
withgit merge master
.- By design, develop should contain no changes, resulting in git replying
Already up-to-date
.
- By design, develop should contain no changes, resulting in git replying
- If changes were merged, push to origin.
- Delete previous release branch, and leave only the latest release branch.
- Merging feature and bugfix branches:
- Use non-FF merges into
develop
via "the green button" or either of the below commands:git pull origin feature/###
(merges latest version of upstream branch)git merge --no-ff feature/###
(merges local version of branch)
- Set/amend the merge commit's message to take the following form:
- Include summary of
Merge [category]/### (#[PRNumber])
. - Include description that very briefly explains the purpose of that branch.
- Include summary of
- Use non-FF merges into
- Merging hotfix branches:
- Use non-FF merges into
master
via "the green button" or either of the below commands:git pull origin hotfix/###
(merges latest version of upstream branch)git merge --no-ff hotfix/###
(merges local version of branch)
- Set/amend the merge commit's message to take the following form:
- Include summary of
Merge hotfix/### (#[PRNumber])
. - Include description that very briefly explains the purpose of that branch.
- Include summary of
- Merge
master
intodevelop
withgit merge master
.- Note that this merge will have conflicts due to the different version numbers and CHANGELOG. Resolve and allow the merge commit.
- Include summary of
Merge hotfix/### (#[PRNumber]) from master
. - Include the same description in the second line.
- Use non-FF merges into
At least three days prior to the end of the sprint, we will create a release
branch that represents the state of the simulator after the current sprint's work. This release branch is temporary and has a short lifespan. It exists solely to provide a testing environment segregated from both the development and production versions of the app.
- Checkout
develop
. - Create new branch
release/#.#.#
fromdevelop
. - Open a pull request for
release/#.#.#
intomaster
.- Include a title of the version number, eg 'v#.#.#'.
- Include a description of copied from the
CHANGELOG
.
- On Heroku, change staging app to point to this new release branch.
- Broadcast publishing of testing app and seek feedback and/or bug reports. Any bugs should be reported to the
#bugs
room in slack and will be triaged from there. - Merge any applicable bugfix branches into
release/#.#.#
.- Include summary of
Merge bugfix/ (#[PRNumber])
- Then on
develop
, rungit merge release/#.#.#
(results in a FF) and push.
- Include summary of
Only bugfix branches may be merged (to release/#.#.# --> develop
) during this phase.
- Checkout
release/#.#.#
. - Commit and push to origin the following finalizations to the release branch.
- Set new release's version number in
package.json
. - Clean up changelog file.
- Remove the extra empty lines in each section.
- Update current sprint's version number and release date.
- Use commit message
ARCH - Finalize CHANGELOG and set version number for v#.#.# release
- Set new release's version number in
- Merge
release/#.#.#
intomaster
by accepting the existing pull request for therelease/#.#.#
branch.- Include summary of
Deploy v#.#.# (#[PRNumber])
.
- Include summary of
- Checkout
master
. - Create and push a new version tag.
git tag v#.#.#
andgit push origin v#.#.#
- On the repository's tags page, find the newly created tag and add release notes.
- Include title of the version number, eg
v#.#.#
. - Include a description copied from the
CHANGELOG
.
- Include title of the version number, eg
- On Heroku, change staging app to maintenance mode.
- Checkout
develop
. - Merge
master
intodevelop
withgit merge master
(results in a FF). - Commit with
ARCH - Prepare CHANGELOG and set beta version for upcoming sprint
and push.- Set version number to planned number for this sprint, plus
-BETA
, egv#.#.#-BETA
. - Prepare changelog for next sprint by adding sections and whitespace.
- Set version number to planned number for this sprint, plus
Only hotfix branches may be merged (to master --> develop
) during the initialization phase. Always add tags and release notes with each hotfix.