Cheap and lazy releases

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.

  1. 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.

  1. 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.

  1. 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.

  1. Announce

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.

::: {#footer} [ April 26th, 2018 8:58pm ]{#timestamp} [kubevirt]{.tag} [travis]{.tag} [github]{.tag} [release]{.tag} [fedora]{.tag} :::