Testing GitHub actions, Cirrus CI, documentation, and publishing releases of Python packages.
Project description
workflow-sandbox
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 therelease-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 release0.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
as0.3.0devN
, e.g.0.3.0dev1
(ee03672, E below); - On
maintenance/0.2.x
as0.2.0rc2.dev1
(6006a6f, D below).
- A new branch
- 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
andmaintenance/*
branches are published on TestPyPI automatically with an appropriatedev
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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
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
Algorithm | Hash digest | |
---|---|---|
SHA256 | c77f15733b9c15a552eebcad18e644028aa90034fb67ab3beb1920dd9819a73e |
|
MD5 | e44feafc32faa6eae168b90160e7c117 |
|
BLAKE2b-256 | f27c6566ea2cab14a2dba608c15c1901f8086c1c9a65d7d77b4b2a865a9555d7 |
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
Algorithm | Hash digest | |
---|---|---|
SHA256 | 6742cd50c804894ae25c5e819ea768d2cbe980204fcd31412f2d3863544cf9a4 |
|
MD5 | 3b964c0a5e9af489909dfc3d5ad3847e |
|
BLAKE2b-256 | 9941b0f69bf0210f19d760e1d3d3a797d46cf9dd86125b7bd43f9b22635cd0c1 |