The release procedure is a process in which different parts of the repository are involved.
These symbols help with orientation:
- 🐙 GitHub
- 💠 git (Bash)
- 📝 File
- 💻 Command Line (CMD)
This software follows the Semantic Versioning (SemVer).
It always has the format MAJOR.MINOR.PATCH
, for example 1.5.0
.
The data follows the Calendar Versioning (CalVer).
It always has the format YYYY-MM-DD
, for example 2022-05-16
.
Following the Semantic Versioning, different workflows for Major, Minor, or Patch
releases are possible.
For Major and Minor releases, follow the complete workflow.
For a Patch Release (Hotfix), start at section 3.
- Create New classic project
- Use the project template Automated kanban with reviews
- Named
oemetadata-v0.1.0
- Add a meaningful description
- Track project progress
- Some days before the release, inform all developers
- Merge the open Pull Requests
- On release day, start the release early to ensure sufficient time for reviews
- Merge everything on the
develop
branch
- Use
📝issue_template_release
- Name
Release - Minor Version - 0.1.0
- Complete the necessary details from the template
- Start here for a Patch Release (Hotfix)
- Draft a new release
- Enter the release version number
0.1.0
as title - Summarize key changes from changelog in the description
## [0.1.0] Minor Release - Name - Date
### Added
### Changed
### Removed
**Complete changelog:** [CHANGELOG.md](https://github.com/OpenEnergyPlatform/oemetadata/blob/production/CHANGELOG.md)
**Compare versions:** [0.1.0 - 0.2.0](https://github.com/OpenEnergyPlatform/oemetadata/compare/v0.1.0...v0.2.0)
**Main developers:** @Ludee @jh-RLI
- Save draft
- Change to
develop
branch: 💠git checkout develop
- Update with online version: 💠
git pull
- Run Pre-commit Hooks: 💻
pre-commit run --all-files
- Create branch: 💠
git checkout -b release-v0.1.0
- Push branch: 💠
git push --set-upstream origin release-v0.1.0
- Run bumpversion: 💻
bump-my-version bump --current-version 0.1.0 minor
📝CITATION.cff
- Update
version
- Update
date-released
- Update
📝pyproject.toml
- Update
version
- Update
📝uv.lock
- Update
version
- Update
- Update the
📝CHANGELOG.md
- Check that all Pull Request are included
- Rename
Unreleased
section with release title from issue - Follow
[0.0.0] Minor Release - Name of Release - 20YY-MM-DD
- Merge
release
intoproduction
branch - Remove details from template
- Assign two reviewers to check the release
- Run all test
- Execute the software locally
- Wait for reviews and tests
- Merge Pull Request and delete
release
branch
production
branch!
- Change to
production
branch: 💠git checkout production
- Update with online version: 💠
git pull
- Check existing tags: 💠
git tag -n
- Create new tag: 💠
git tag -a v0.1.0 -m "oemetadata Minor Release v0.1.0"
- This commit will be the final version for the release, breath three times and check again
- Push tag: 💠
git push --tags
If you messed up, remove tags and start again
- Delete local tag: 💠
git tag -d v0.1.0
- Delete remote tag: 💠
git push --delete origin v0.1.0
- Navigate to releases and open the draft release
- Choose the correct
Git Tag
- Choose the
production
branch - Select
Set as the latest release
- Select
Create a discussion for this release
in categoryAnnouncements
- Publish release
- Check GitHub Action
- The GitHub release starts the automated upload to PyPI
- Check on PyPI if release arrived
- If automated released failed, release manually
- Change to
production
branch: 💠git checkout production
- Update with online version: 💠
git pull
- Activate environment and enter repository: 💻
activate py310
- Test version: 💻
mike serve
- Publish new version: 💻
mike deploy --push --update-aliases 0.1 latest
- Create a Pull Request from
production
todevelop
- Named
Set up new development after release v0.1.0
- Checkout
develop
branch and pull - Create a new Unreleased section in the
📝CHANGELOG.md
## [Unreleased]
### Added
### Changed
### Removed
- Close all solved issues and PR and set tags and status
- Create a new GitHub Project by cloning the latest project
- Change to
develop
branch: 💠git checkout develop
- Update with online version: 💠
git pull
- Create branch: 💠
git checkout -b deployment-test
- Push branch: 💠
git push --set-upstream origin deployment-test
- Check GitHub Action
- Check Test-PyPI
- Delete remote branch: 💠
git branch -d origin deployment-test
- Delete local branch: 💠
git branch -D deployment-test
- Note: Each version can only be released on Test-PyPI once. If needed, increment the Patch version
- Run bumpversion: 💻
bump-my-version bump --current-version 0.1.0 patch
- Run bumpversion: 💻
- Change to
production
branch: 💠git checkout production
- Update with online version: 💠
git pull
- Navigate to git folder: 💻
cd D:\git\github\USER\Repository\
- Activate conda environment: 💻
activate py310
- Create package using: 💻
python -m build
- Check that files have been created in folder: 📝
dist
- Check build: 💻
twine check dist/*
- Upload to Test PyPI using: 💻
twine upload -r testpypi dist/NAME_0.2.0.tar.gz
- Upload to PyPI using: 💻
twine upload dist/NAME_0.2.0.tar.gz
- Enter
name
andpassword
!!! note "Used Icons" 🐙 GitHub | 💠 git | 📝 File | 💻 Command Line