Waiting for Jenkins

Marc Cataford
Top Hat Engineering Blog
2 min readFeb 1, 2019

People often say Move fast, break things when talking about software development when they should really say Move fast, break things and wait for CI. As projects grow in size, time spent building and testing on continuous integration systems like Jenkins, CircleCI and Travis balloons and tends to quickly outgrow time spent writing code. Even though build machines handle the heavy lifting of CI, a long, unoptimized build process still represents a bottleneck for development velocity: you can’t merge before you pass CI.

Relevant XKCD

If you disregard some of the more complex aspects of CI, you can reduce build pipeline optimization to two main actionable items: maximizing parallelization and minimizing the duration of sequential build steps. The more you can do at once and the shorter the resulting steps are, the faster your build goes through. However, while improving on these factors depends on CI features and on the code being run, applying either efficiently and strategically requires some insights about the pipeline’s behaviour and tools to get those insights are not necessarily available. To tackle this problem, we turned to Jenkins and its plugin API to create the Jenkins Timeline, an open-source pipeline visualization solution to your slow builds.

What can it do for me?

By visualizing the Jenkins build process as a Gantt chart, the timeline allows you to quickly hone in on the stages or steps that are holding up your builds so that you can invest your optimization efforts where they will have the most impact. It can also help you estimate the potential gains of parallelizing certain steps of your build process. By quickly looking at your pipeline’s timeline, you can know right away if spending the next day or so tinkering with your CI configuration will yield good results.

Beyond what the plugin gives you out-of-the-box, it is also a budding open source project. If it does not fit your use case, you can easily suggest changes that would bridge the gap, making it better for everyone.

Where can I get my hands on it?

The project is currently hosted on Github, has its own website and is available on the Jenkins Marketplace. Don’t hesitate to reach out on Github if you’d like to get your hands dirty and contribute!

Shout out to contributors

It’s important to shout out the contributors that made the project possible so far. After all, the saying “It takes a village to raise a child” applies to many things, including open source; it’s exponentially easier to write great software in projects supported by great people. Special thanks, in no particular order, to Jake Bolam, Brandon Baksh, Savio Joanes, Martin Ringehahn, Siavash Mahmoudian and Shouvik D’Costa for pitching in in different capacities over the past few months to help prop this up!

--

--