We had our 7th gathering in the CoDe Alliance a few months ago and have worked to distill and evolve many of the good ideas that came out of our sessions. Our aim is to turn our interesting discussions into tangible projects and running code.
In mid-November 2017 I went to the 7th gathering of the Continuous Delivery Alliance. I, like many of you, didn’t want to miss it. It was great to see so many familiar faces and so much enthusiasm put in the discussions.
In this post I’ll give an overview of some of the topics and tools that we discussed and have worked on since.
Thank you AB Volvo
But let’s start with a truly heartfelt thank you to Volvo for hosting us!
And thanks for igniting a lot of good thoughts and ideas around what is actually possible within automated testing. Your host presentation was followed up well by an amazing tour. Without revealing too much, it’s pretty amazing when testing includes the possibility for virtual reality.
Traceability was the theme - or was it metrics?
The broad theme of the 7th gathering was traceability, and it evolved into two directions. One group involved itself in creating traceability and the visualization of the complete software development process using the Eiffel protocol. A second, larger group branched off to discuss metrics related to the software development process and KPIs.
I was part of the first group. If you’re new to Eiffel, refer to my prior blog post to learn more about it.
Tracey using the Eiffel protocol
Together we sketched out how a simple MVP could use Eiffel to get full traceability of your software development process, something that is really needed as traceability with Eiffel has a rather steep learning curve. We would continue to use Praqma’s proof-of-concept reference tool suite, called Tracey, that currently implements part of it.
Members that already use these tools will benefit from extending them, especially the command line tool, so they become more flexible and easier to use. Those not yet up and running will be able to spin up our planned containerized setup, making a nice proof-of-concept to show the power of traceability within their organisation.
You can already benefit from the first member-funded effort in this project as we have updated the Bitbucket post-receive hook plugin to work with Bitbucket 5.4 and per repository hook configuration. We’ve yet to release the plugin on the Atlassian Marketplace, but it is available on Github Releases and can be easily installed on your Bitbucket server.
There is more to come regarding our plans for the MVP, so stay tuned.
Metrics for software development
In any change program it can be useful to take regular measurements to assess progress. When moving to Continuous Delivery your development process changes, the way you use version control changes, and the release process changes. At the CoDe Alliance meeting we were discussing what particular metrics can help you to track change and understand where improvements are still needed.
At one of Praqma’s customers we are mining data held in their version control system to enable us to measure and visualize some metrics about their process. So far we can show the lead time and frequency of software releases and visualize inventory - that is, unmerged commits. As you adopt Continuous Delivery you expect the lead time of new code releases to go down and the release frequency to go up. Inventory should drop to zero as you adopt Trunk-Based Development.
These scripts we’ve developed are a good start, but it was really useful to discuss them with the other CoDe Alliance members. There are a lot of ways of using version control, branching strategies, etc., and our scripts won’t necessarily work for others. We plan to trial it with this one customer and learn from our experiences there before introducing similar metrics with other customers.
Jenkins Configuration as Code
Imagine all your global Jenkins configuration was as code as in human-readable YAML files under version control. Then you could manage your Jenkins as code following the paradigm of infrastructure as code. Everything as code.
We gave you a glimpse of this project at our latest gathering. Although it is still in its early stages we have high hopes and ambitions for it. Our goal is to have a foundation running at the end of Q1 2018 which could receive CoDe Alliance contributions.
Praqma will travel to FOSDEM 2018 in Brussels and cooperate with CloudBees to promote this new project in order to garner more community contribution, possibly starting with the post-FOSDEM Jenkins Hackfest.
We presented our small tool called PlusBump which solves a generic and interesting problem for all of us. PlusBump puts version increments in the hands of the developers because they are the ones that truly know when a version needs to be bumped. After all, they are writing the code.
Plusbump allows developers to decide which version number to bump as part of a git commit, e.g.
git commit -m "#77 Bugfix help text, bumps +minor"
git commit -m "#100 New core, bumps +major".
+minor was mentioned once or more since last release the new release will be bumped one minor level. If
+major was mentioned we bump the major version number, and reset the other number to zero. Easy, right? It will even work if you cherry-pick changes.
It is available in Ruby and runs in production at two CoDe Alliance member companies. The concept can be supported in many ways and we will be applying it to a few of our own projects before the next gathering.
Git Phlow and Pretested Integration Plugin
We summarized recent changes sponsored by one of your fellow CoDe Alliance members. Everyone using JIRA and Windows can now use the latest git-phlow git extension to ease daily work while using the automated git phlow.
We will also soon release a new major version of the Pretested Integration Plugin for Jenkins which supports Pipeline job syntax.
Join our CoDe Alliance Slack channel for more details and news. Expect a newsletter about our next gathering that will take place in the late spring 2018.