Release early and release often.
That’s fine if it’s close to a noop.
The Cockpit team also has great atuomation in this area, but here a few words on how we do this in KubeVirt.
Assumption: The git tree is our source and git tags map to logical releases.
Kudos: To GitHub and Travis CI.
- Have a working CI in order toverify that a commit is good
You’ll need to write test cases and have travis running them. I strongly recommended to have a great coverage, it keeps your .. inbox clean.
- Tagging and release in order to mark a commit as a release
Here you want to either use plain annotated git tags, or even better git-evtag which is signing the whole tree.
- Building images and binaries
Travis has everything you need to build images and binaries (although I wonder when buildah will land here).
Besides building images you can also push them to a registry of your choice.
All triggered by tags mentioned above.
The travis deployment feature is also pretty handy, as you can directly create a GitHub release and upload artifacts.
Do it manually. You can generate changelogs, but reading them … is nto nice for humans. Thus maybe a sentenc or two – but written by a real human – might be good.
All steps combined should give you: CI on each commit, github releases and pushed images for every tag you do.
All in all it’s a lazy – or cheap – release.