/autopub

Automatically publish package releases upon pull request merge

Primary LanguagePythonGNU Affero General Public License v3.0AGPL-3.0

AutoPub

Build Status PyPI Version

AutoPub enables project maintainers to release new package versions to PyPI by merging pull requests.

Environment

AutoPub is intended for use with continuous integration (CI) systems such as GitHub Actions, CircleCI, or Travis CI. Projects used with AutoPub are built via build and published via Twine. Contributions that add support for other CI and build systems are welcome.

Configuration

AutoPub settings can be configured via the [tool.autopub] table in the target project’s pyproject.toml file. Required settings include Git username and email address:

[tool.autopub]
git-username = "Your Name"
git-email = "your_email@example.com"

Release Files

Contributors should include a RELEASE.md file in their pull requests with two bits of information:

  • Release type: major, minor, or patch
  • Description of the changes, to be used as the changelog entry

Example:

Release type: patch

Add function to update version strings in multiple files.

Usage

The following autopub sub-commands can be used as steps in your CI flows:

  • autopub check: Check whether release file exists.
  • autopub prepare: Update version strings and add entry to changelog.
  • autopub build: Build the project.
  • autopub commit: Add, commit, and push incremented version and changelog changes.
  • autopub githubrelease: Create a new release on GitHub.
  • autopub publish: Publish a new release.

For systems such as Travis CI in which only one deployment step is permitted, there is a single command that runs the above steps in sequence:

  • autopub deploy: Run prepare, build, commit, githubrelease, and publish in one invocation.