Release workflow

  1. Fill the CHANGELOG.md with the new version. You can write it manually or use the auto-generated release notes by Github:

    1. Go to project’s releases and click on Draft a new release

    2. In Choose a tag, enter the new tag (obviously complying with SemVer)

    3. Click on Generate release notes

    4. Copy/paste the generated text from ## What's changed until the line before **Full changelog**:... in the CHANGELOG.md replacing What's changed with the tag and the publication date

    5. Close this tab.

    Warning

    DO NOT CREATE/PUBLISH THE RELASE THROUGH WEB INTERFACE: due to the Immutable Release policy, the publishing workflow won’t be unable to push assets to the release and it won’t be possible to edit it anymore. The only option would be to create a new tag, as we already experienced it with the 0.41.01.

  2. Commit changes with a message like release: bump version to X.x.x to the main branch

  3. Apply a git tag with the relevant version: git tag -a 0.3.0 {git commit hash} -m "New awesome feature"

  4. Push commit and tag to main branch: git push --tags

If things go wrong (failed CI/CD pipeline, missed step…), here comes the fix process:

git tag -d old
git push origin :refs/tags/old
git push --tags

And try again!


Manual upload to PyPi

This method requires an API token on PyPi

If the CI/CD fails for any reason, here comes the manual procedure:

  1. Install required packages:

    python -m pip install -U build setuptools-scm twine wheel
    
  2. Install package in editable mode:

    python -m pip install -e .
    
  3. Clean previous builds and build package artifacts:

    rm -rf dist/
    python -m build --no-isolation --sdist --wheel --outdir dist/ .
    
  4. Upload built artifacts to PyPi:

    twine upload -u __token__ dist/*