.. vim: set fileencoding=utf-8: .. -*- coding: utf-8 -*- .. +--------------------------------------------------------------------------+ | | | Licensed under the Apache License, Version 2.0 (the "License"); | | you may not use this file except in compliance with the License. | | You may obtain a copy of the License at | | | | http://www.apache.org/licenses/LICENSE-2.0 | | | | Unless required by applicable law or agreed to in writing, software | | distributed under the License is distributed on an "AS IS" BASIS, | | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | | See the License for the specific language governing permissions and | | limitations under the License. | | | +--------------------------------------------------------------------------+ ******************************************************************************* Releases ******************************************************************************* The project follows `semantic versioning `_ for releases. Release Process =============================================================================== Initial Release Candidate ------------------------------------------------------------------------------- 1. Checkout ``master`` branch. 2. Pull from upstream to ensure all changes have been synced. 3. Checkout new release branch: ``release-.``. 4. Bump alpha to release candidate. Commit. :: hatch --env develop version rc 5. Tag. :: git tag v${rc_version} 6. Push release branch and tag to upstream with tracking enabled. 7. Checkout ``master`` branch. 8. Bump alpha to next minor version on ``master`` branch. Commit. :: hatch --env develop version minor,alpha 9. Tag start of development for next release. :: git tag i${next_release_version} Release ------------------------------------------------------------------------------- 1. Checkout release branch. 2. Bump release candidate to release. Commit. :: hatch --env develop version release 3. Run Towncrier. Commit. :: hatch --env develop run towncrier build --keep --version ${release_version} 4. Tag. :: git tag v${release_version} 5. Push release branch and tag to upstream. 6. Wait for the release workflow to complete successfully. 7. Clean up news fragments to prevent recycling in future releases. Commit. :: git rm documentation/towncrier/*.rst git commit -m "Clean up news fragments." 8. Push cleanup commit to upstream. 9. Cherry-pick Towncrier commits back to ``master`` branch. Postrelease Patch ------------------------------------------------------------------------------- 1. Checkout release branch. 2. Develop and test patch against branch. Add Towncrier entry. Commit. 3. Bump release to patch or increment patch number. Commit. :: hatch --env develop version patch 4. Run Towncrier. Commit. :: hatch --env develop run towncrier build --keep --version ${patch_version} 5. Tag. :: git tag v${patch_version} 6. Push release branch and tag to upstream. 7. Wait for the release workflow to complete successfully. 8. Clean up news fragments to prevent recycling in future releases. Commit. :: git rm documentation/towncrier/*.rst git commit -m "Clean up news fragments." 9. Push cleanup commit to upstream. 10. Cherry-pick patch and Towncrier commits back to ``master`` branch, resolving conflicts as necessary.