Deployments =========== .. _deploy: Deploying a new release ----------------------- Execute the following commands substituting the appropriate values for ````, ````, and ````.: .. code-block:: sh git checkout # the target release branch git rebase -v origin/ # make sure it is up to date git merge --ff-only origin/ # advance the tip of from upstream-branch git tag # create the release candidate git push --tags origin # publish the tag Version Naming Semenatics -------------------------- Releases ```````` The version number is composed of three parts: ``..``. The ```` and ```` parts are incremented for major and minor releases respectively. The ```` part is incremented for bugfix releases. The ```` part is reset to ``0`` when the ```` part is incremented. ```` releases signify a breaking change in the API or functionality. ```` releases signify a new feature that will not impact existing functionality. ```` 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. .. _next: 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: 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: 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.