-
-
Notifications
You must be signed in to change notification settings - Fork 37
Description
Missing functionality
Currently, the release process (to GitHub and PyPi) is done manually, it's prone to errors, and the two scripts used work best in happy-path use-case scenarios while edge-case even though less to worry about are not taken care of, as well as they could have been.
The release to PyPi should be fail-safe as there is no way to revert if a mistake is made.
Proposed feature
Automate the process and checks and balances:
- check if the git state is valid, report invalid state and abort step
- Check if version information is tagged/entered into the
CHANGELOG.md
- if the__version__is the same, let the user know it needs to be entered before proceeding
- otherwise, mention the presence and proceed - version checking: compare local version stamp with that on
gitrepo (releases/tags) and warn accordingly- if the
__version__is the same, let the user know it needs to be incremented before proceeding - otherwise mention local version and remote version and proceed with the process
- if the
- version checking: compare local version stamp with that on
pypiand warn accordingly- if the
__version__is the same, let the user know it needs to be incremented before proceeding - otherwise mention local version and remote version and proceed with the process
- if the
- synchronise local and remote repo (part of the scripts)
- [x] by runningGITHUB_TOKEN=$MY_GITHUB_TOKEN ./release-to-github.sh - ability to delete release and tag from local and remote with a switch in the script
- [ ] add to./release-to-github.sh - ask the user when running the
pypirelease script if they REALLY wish to proceed
- [ ] when running./release-to-pypi.sh - synchronise local and remote repo after releasing (part of the scripts) (already done when it's run the first time)
- [x] by runningGITHUB_TOKEN=$MY_GITHUB_TOKEN ./release-to-github.sh
Provide tangible steps or CLI commands when suggesting solutions for the above steps. Also, add messages to suggest next steps for the two scripts when it finishes executing.
Alternatives considered
Manual intervention: perform all the above steps manually using the above checklist as the release process is a highly infrequent process.
Also, libraries like bumpversion could be taken into consideration, depending on how useful and flexible they are.