Skip to content

[FEATURE] Automate library release process to GitHub and PyPi #49

@neomatrix369

Description

@neomatrix369

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 git repo (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
  • version checking: compare local version stamp with that on pypi 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
  • synchronise local and remote repo (part of the scripts)
    - [x] by running GITHUB_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 pypi release 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 running GITHUB_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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions