This project provides tooling and templates to ease the creation of releases on GitHub and their publication on PyPI. It is primarily designed for Robot Framework and the tools and libraries in its ecosystem, but can naturally be used by other projects as well.
To successfully adopt this project, you should be familiar with at least the basics of Python packaging.
The core features of rellu are organized into reusable utilities and generic Invoke tasks:
These utilities can be used by custom Invoke tasks and are directly importable from the rellu module:
- Setting the project version, including automatically setting it to the next suitable development version.
- Setting common labels in the issue tracker.
- Generating release notes based on issues in the tracker. This requires the project to use predefined labels.
- Cleaning up temporary files and directories.
tasks.py: An example file implementingInvoketasks using the aforementioned utilities. Other projects can use it as an example or template.BUILD.rst: A file containing step-by-step instructions for creating releases using theInvoketasks defined intasks.py, Git, and other tools. This file can also be used as a template.setup.py: A file that follows general good practices and can also serve as a template. A very simpleMANIFEST.infile is also included, though this project does not require asetup.cfg.
Rellu is designed to be used together with Invoke, which is also utilized internally. All project dependencies are listed in the requirements.txt and requirements-build.txt files.
- Python:
Relluitself works only with Python 3.10 or newer. Projects that use it can, of course, also support older Python releases. - Operating System: It is developed and tested on Linux, but ought to work just fine on OSX. Using it on Windows may work, but this is neither tested nor officially supported.
To be able to automatically generate release notes, the project's issue tracker must be configured using these rules:
- Milestones must match project versions and use the format
v1.2orv1.2.1. - Labels must be configured using the provided utility.
- Milestones and labels must be used consistently:
- Valid issues must have their type defined as a label:
bug,enhancement, ortask. Issues with thetasktype are not included in the release notes. - Issues should have their priority set using the appropriate
prio-labels. - Issues belonging to a certain milestone should have that milestone set.
- Issues included in certain preview releases should have a matching label set (e.g.,
a1,b2,rc3).
- Valid issues must have their type defined as a label: