Skip to main content

workflow-sandbox

Build Status Code style: black License PyPI Python Version

Dummy project used to test GitHub actions and Cirrus CI for building and publishing releases of Python packages.

This will be a (dummy) Python package on test PyPI in its own right, with package name workflow-sandbox and module name workflow_sandbox.

Practices

  • This dummy project loosely adopts the release flow branching model/strategy. (Loosley as I'm not going to always use feature branches.)
  • Versioning is introspected using the excellent setuptools_scm, using the release-branch-semver version scheme.
  • When a release candidate was identified (a574270, C below):
    • A new branch maintenance/0.2.x was created, to service the minor release 0.2.
    • The commit was tagged v0.2.0rc1, the first release candidate of this version.
    • Subsequent untagged commits are versioned (with local scheme no-local-version):
    • On master as 0.3.0devN, e.g. 0.3.0dev1 (ee03672, E below);
    • On maintenance/0.2.x as 0.2.0rc2.dev1 (6006a6f, D below).
  • In this example, the release candidate was deemed satisfactory and a dummy commit was used to create 6006a6f (F below) so that it could be uniquely tagged as v0.2.0.

In pictures, this looks like:

       D -- F [maintenance/0.2.x]
      /     ^ [v0.2.0]
B -- C---E [master]
     ^
[v0.2.0rc1]

Update: See #13 for a discussion of why this was necessary and a better alternative (tag C/D with both v0.2.0rc1 and v0.2.0).

Actual releases, e.g. 0.2.0 and bugfix releases 0.2.1, 0.2.2, etc. will be tagged on maintenance/0.2.x alone. This branch will contain no development, but cherry pick bug-fixes from master.

Roadmap

GitHub Actions

  • Create release using actions/create_release.
  • Publish release on GitHub using actions/upload-release-asset...
  • ... with the body above extracted from the appropriate release notes based on git tags (see #14).
  • Using pypa/gh-action-pypi-publish:
    • All tagged releases (including candidates) are published on PyPI and TestPyPI automatically.
    • All untagged pushes to master and maintenance/* branches are published on TestPyPI automatically with an appropriate dev version suffix.
  • Investigate triggering off creation vs branch push events (see #8).
  • Build multiple wheels using a branching workflow actions/[up/down]load-artifact (see e.g. chrisjbillington/desktop-app#7) and/or manylinux (GitHub Action RalfG/python-wheels-manylinux-build).
  • Automated documentation build and push to gh-pages branch.

CirrusCI

  • Formatting using black.
  • Linting using flake8.

Acknowledgements

Much of this is guided by the practices of other development communities, and many helpful conversations with @chrisjbillington and @philipstarkey.

Metadata

Release files for workflow-sandbox 0.5.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for workflow-sandbox 0.5.0
File Size Uploaded
workflow-sandbox-0.5.0.tar.gz 55.5 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for workflow-sandbox 0.5.0
File Interpreter ABI Platform
workflow_sandbox-0.5.0-py3-none-any.whl Python 3 none any Details

Total release size: 60.2 kB

Release files / workflow-sandbox-0.5.0.tar.gz

Download URL workflow-sandbox-0.5.0.tar.gz
Size 55.5 kB
Tags Source
SHA-256 checksum
How to use checksums
c77f15733b9c15a552eebcad18e644028aa90034fb67ab3beb1920dd9819a73e
BLAKE2b-256 checksum
How to use checksums
f27c6566ea2cab14a2dba608c15c1901f8086c1c9a65d7d77b4b2a865a9555d7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/46.4.0 requests-toolbelt/0.9.1 tqdm/4.46.0 CPython/3.7.7

Release files / workflow_sandbox-0.5.0-py3-none-any.whl

Download URL workflow_sandbox-0.5.0-py3-none-any.whl
Size 4.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
6742cd50c804894ae25c5e819ea768d2cbe980204fcd31412f2d3863544cf9a4
BLAKE2b-256 checksum
How to use checksums
9941b0f69bf0210f19d760e1d3d3a797d46cf9dd86125b7bd43f9b22635cd0c1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/46.4.0 requests-toolbelt/0.9.1 tqdm/4.46.0 CPython/3.7.7
Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page