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-semverversion scheme. - When a release candidate was identified (a574270, C below):
- A new branch
maintenance/0.2.xwas 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
masteras0.3.0devN, e.g.0.3.0dev1(ee03672, E below); - On
maintenance/0.2.xas0.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
bodyabove 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
masterandmaintenance/*branches are published on TestPyPI automatically with an appropriatedevversion 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-pagesbranch.
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)
| File | Size | Uploaded | |
|---|---|---|---|
| workflow-sandbox-0.5.0.tar.gz | 55.5 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| 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
|