python-terrascript/RELEASING.md

74 lines
2.6 KiB
Markdown

## Creating a new release
Steps for creating a new release of Terrascript (as of November 2020).
### Create release branch
Releases should be done from a branch to prevent blocking development.
* Create a new branch ``release/x.x.x`` from ``develop``.
```
git checkout -b release/x.x.x
```
* Generate the provider modules.
- Execute ``make providers`` to generate the provider modules.
- Execute ``make test_providers`` to run the tests for the provider modules.
- Review ``PROVIDERS.md`` which was auto-generated in the previous steps.
* Review and update if needed:
- ``setup.py``
- ``CHANGELOG.md``
- ``CONTRIBUTORS.md``
- ``DEVELOPMENT.md``
- ``.travis.yml``
* Run ``make black``.
* Run ``make test``.
* Run ``make docs``.
* Commit and push the branch ``release/x.x.x`` to Github.
```
git commit -a -m 'Preparing release x.x.x'
git push origin release/x.x.x
```
* Commit (or merge in) any outstanding changes that will got into the next release.
* Check whether all tests on [Travis-CI](https://www.travis-ci.org/mjuenema/python-terrascript) pass.
* Fix any problems before continuing.
### Create release candidates
For each release, one or more release candidates could be created to verify that the release works as expected.
* Update version to `x.x.xrcN` in ``terrascript/__init__.py`` and ``docs/conf.py`` (replace `N` with candidate).
* Tag and push the tag release candidate to Github.
```
git tag -a x.x.xrcN -m 'Release candidate N for x.x.x'
git push --tags
```
* Test installing release candidate from PyPi.
```
mkvirtualenv terrascript-test
pip install -i https://test.pypi.org/simple/ terrascript==x.x.xrcN
deactivate
rmvirtualenv terrascript-test
```
* Verify functionality of release candidate.
* Make and commit changes if necessary.
### Finalizing the release
When the release candidate are stable, finish the release.
* Update version to `x.x.x` in ``terrascript/__init__.py``, ``docs/conf.py`` and ``CHANGELOG.md``.
* Tag and push the release tag to Github.
```
git tag -a x.x.x -m 'Release x.x.x'
git push --tags
```
* Merge the branch ``release/x.x.x`` into ``master`` and push to Github.
```
git checkout master
git merge release/x.x.x
git push origin master
```
* Delete branch ``release/x.x.x``.
```
git push --delete origin release/x.x.x
```
* Merge ``master``` back into ``develop``.
```
git checkout develop
git merge master
git push origin develop
```
* Add a `## [Unreleased] - <date>` to ``CHANGELOG.md`` and place unreleased changes under it.