Skip to main content

Testing GitHub actions, Cirrus CI, documentation, and publishing releases of Python packages.

Project description

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.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

workflow-sandbox-0.5.0.tar.gz (55.5 kB view details)

Uploaded Source

Built Distribution

workflow_sandbox-0.5.0-py3-none-any.whl (4.7 kB view details)

Uploaded Python 3

File details

Details for the file workflow-sandbox-0.5.0.tar.gz.

File metadata

  • Download URL: workflow-sandbox-0.5.0.tar.gz
  • Upload date:
  • Size: 55.5 kB
  • Tags: Source
  • Uploaded using 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

File hashes

Hashes for workflow-sandbox-0.5.0.tar.gz
Algorithm Hash digest
SHA256 c77f15733b9c15a552eebcad18e644028aa90034fb67ab3beb1920dd9819a73e
MD5 e44feafc32faa6eae168b90160e7c117
BLAKE2b-256 f27c6566ea2cab14a2dba608c15c1901f8086c1c9a65d7d77b4b2a865a9555d7

See more details on using hashes here.

File details

Details for the file workflow_sandbox-0.5.0-py3-none-any.whl.

File metadata

  • Download URL: workflow_sandbox-0.5.0-py3-none-any.whl
  • Upload date:
  • Size: 4.7 kB
  • Tags: Python 3
  • Uploaded using 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

File hashes

Hashes for workflow_sandbox-0.5.0-py3-none-any.whl
Algorithm Hash digest
SHA256 6742cd50c804894ae25c5e819ea768d2cbe980204fcd31412f2d3863544cf9a4
MD5 3b964c0a5e9af489909dfc3d5ad3847e
BLAKE2b-256 9941b0f69bf0210f19d760e1d3d3a797d46cf9dd86125b7bd43f9b22635cd0c1

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page