Skip to content

Development Cycle

Issue driven development

  1. Choose an issue from the current milestone.
  2. Create a branch (based on main) for that issue.
  3. Develope code in dedicated branch.
  4. Create Pull Request (PR) for merging issue branch back in to main.
  5. Code in PR is reviewed and tested before merging.

Only issues from current milestone will be merged!

While you can include work for an issue from a later milestone, it is at the discretion of the developer whether to change the issue to the current milestone for inclusion in the next release.

The release cycle

Warning

Only the repository administrators can perform these actions.

  1. Create a milestone for the new release.
  2. Create issues for tasks to be achieved during milestone.
  3. Development is issue-driven, as described in the next section.
  4. The release is ready when all issues in milestone have been addressed, and main test successfully.
  5. The main branch is checked out at the last commit that completes the milestone.
  6. The version is bumped and committed.
  7. A release is created with a new tag set to the version commit.
  8. The release is published on GitHub.

Updating the release notes

After publishing a release on GitHub, update the docs release notes page:

  1. Copy the appropriate template from docs/releases/ to a new file named docs/releases/vX.Y.Z.md:

    • patch-template.md for a patch release (e.g. v0.0.8)
    • minor-template.md for a minor release (e.g. v0.1.0)
    • major-template.md for a major release (e.g. v1.0.0)
  2. Fill in the new file: replace the placeholder date, populate the change sections, and update the Full Changelog compare URL.

  3. Open docs/releases/index.md and add a new section for the release immediately after the page introduction:

    ## vX.Y.Z
    
    
    ---
    

Publishing a release

Warning

For package administrators only!

Once a release has been published on GitHub, it can be published to PyPI.

  1. Checkout the release tag with
git fetch origin

and then

git checkout refs/tags/v.X.Y.Z

where v.X.Y.Z is the version tag you want to publish.

  1. Build the package with
hatch build --clean
  1. Publish the package with
hatch publish

Example

Eventually, the developer would like to have this automated by GitHub actions. Then the publishing of a release on PyPI would be directly tied to when the release is published on GitHub.

Setup for hatch publish

To run this command, you need to have setup a .pypirc file in your HOME directory with the following contents:

[com_pac]
  repository = https://upload.pypi.org/legacy/
  username = __token__
  password = <actual_token_goes_here>

The token is generated through the admin interface of PyPI for the com_pac package.