Awesome
yabs
Test, Build, Deliver!
Overview
Build and deployment automation for Python projects.
A typical release workflow may look like this:
- Check preconditions: Is the workspace clean, anything to commit?, Is GitHub reachable?, Are we on the correct branch?, ...
- Make sure static code linters and unit tests pass.
- Bump the project's version number (major, minor, or patch, according to Semantic Versioning). <br> Then patch the version string into the respective Python module or text file.
- Build sdist, wheel and msi installer assets.
- Tag the version, commit, and push.
- Upload distribution to PyPI.
- Create a new release on GitHub and upload assets.
- Create a new release on the Windows Package Manager Repository.
- Bump, tag, commit, and push for post-release.
Custom tasks may be added using the plugin framework.
Read the documentation for details.
Preconditions
- Use git, PyPI, and GitHub.
- Version numbers follow roughly the Semantic Versioning pattern.
- The project's version number is maintained in one of the supported locations
(See grunt-yabs for a node.js variant if you have a JavaScript based development stack.)
<!-- [![asciicast](https://asciinema.org/a/6jPN5JTNBt2LT52C6R8HZEK1g.svg)](https://asciinema.org/a/6jPN5JTNBt2LT52C6R8HZEK1g) --> <!-- ![logo](https://raw.githubusercontent.com/mar10/yabs/master/docs/screenshot_ps_dryrun.png) -->