Deployments
Deploying a new release
Execute the following commands substituting the appropriate values for
<version>, <upstream-branch>, and <branch>.:
git checkout <branch> # the target release branch
git rebase -v origin/<branch> # make sure it is up to date
git merge --ff-only origin/<upstream-branch> # advance the tip of from upstream-branch
git tag <version> # create the release candidate
git push --tags origin <branch> # publish the tag
Version Naming Semenatics
Releases
The version number is composed of three parts: <major>.<minor>.<patch>.
The <major> and <minor> parts are incremented for major and minor
releases respectively. The <patch> part is incremented for bugfix
releases. The <patch> part is reset to 0 when the <minor>
part is incremented.
<major> releases signify a breaking change in the API or functionality.
<minor> releases signify a new feature that will not impact existing
functionality. <patch> releases signify a bugfix that will not impact
existing functionality.
Release Candidates
Release candidates are tagged with the rc suffix. For example, the
first release candidate for version v1.0.0 is tagged as v1.0.0rc1.
Branch Specific Procedures
The following sections describe the procedures for each branch.
Dev Branch
The dev branch is release procedure is very loose and fluid. It is
intended to be a place where new features can be developed and tested
before being merged into the qa branch for testing. The dev
branch is not intended to be a stable branch. It is a collaboration
point for devlopers to collect and orient new code such that it is
acceptable for the qa branch for testing.
The dev version of SNAPRed is released on every merge to the dev branch.
QA Branch
The qa branch is the branch that is used for testing new features
and bugfixes. It is intended to be a semi-stable branch that allows end users
to test/approve new features and bugfixes before they are merged into the
main branch and released.
The qa version of SNAPRed is released on manual tag and push by a contributor with appropriate access to the repository.
Main Branch
The main branch is the branch that is used for production deployments.
It is intended to be a stable branch representing the latest release of
production code.
The main version of SNAPRed is released manually after a release candidate
has been tested and approved. The main branch then follows the same
release procedure as the qa branch except it is no longer tagged with
the rc suffix.