Pondi is a helper tool to build release assets (binaries, source code archive), create a release on GitHub and upload the files. It is specifically tailored to the programming language Go and the style and requirements tools around the restic backup program have.
Goals (what pondi should do once it's finished):
- Generate a changelog file using
calens
- Update the version in the source code as well as the
VERSION
file (if it exists) - Create a new release tag (if it does not exist yet)
- Build binaries for all architectures and OS, in a reproducible way
- Create
tar.gz
files for each architecture/OS - Build a source archive
- Create a
SHA256SUMS
of all created files and and sign it - Generate release notes using
calens
- Create a release on GitHub with the generated release notes and upload the assets
- Build and push Docker images
The program should be idempotent, so if you re-run pondi it should continue where it left of instead of starting from the beginning again.
Pondi helps automating the following steps:
- Tag a new release, operate on the checkout
- Check that the target tag (
v1.2.3
for version1.2.3
) does not exist yet. - Run hooks (
go mod download
,go generate
), abort if any command fails. - Check that the source has not been modified (so all changes were already committed), abort if otherwise.
- Run checks on the source code.
- Check that the target tag (
- Build binaries and the source code archive in a reproducible way, operate on the tagged release
- Publish a new release on GitHub and upload all assets