TravisCI brings order and maturity to its deployment tooling


The team behind continuous integration project TravisCI has rewritten its deployment tooling and introduced a maturity model for providers to make the sometimes messy open source world that little bit more consistent.

TravisCI co-founder Sven Fuchs took to the company’s blog to introduce a developer preview release of dpl v2, which is the culmination of the last few month’s work. The company’s dev team took the opportunity of the new major version to “correct early decisions that have turned out not that great” and clean the project up a bit. After all, the diverse community of TravisCI contributors subscribes to a variety of coding styles and approaches, so a bit of a refactoring can’t hurt to keep dpl maintainable. 

The result is a reworked and better documented tool with improved testing and a number of functional changes. Dpl v2 will for example always throw an error should a deployment fail, which wasn’t the case for all providers before, and it includes a new OpenShift provider, which should work with version 3 of the platform. Apart from that the npm provider now allows the specification of a custom registry and there’s a new strategy for deploying to GitHub Pages via their HTTP API.

To make sure the project information is always up to date, dpl’s README is now generated automatically. A rich command line parser provides a DSL for specifying options, which should reduce complexity and enforce consistency, while having implementers “worry less about our specific implementation requirements” as Fuchs puts it. The team also separated shell commands and user facing log messages from the implementation code, for better maintainability, and introduced a three-tiered test concept spanning a suite of unit tests, runtime dependency installation tests, and end-to-end integration tests respectively.

Breaking changes included in v2 are mainly modifications of some default behaviours that haven’t proven practical in the last couple of years. skip_cleanup for example has been deprecated, since it had been used often enough to constitute the standard. Instead cleanup is now false by default. Users who need their working directories cleaned after a build can still opt in by changing it to true in the deployment options.

Similarly, the default behaviour of the GitHub Pages provider has been updated to keep the history of a target repository and branch. The old standard can be reinstated by setting keep_history to false. Issues found in the preview can be shared via GitHub.

Along with the refactoring of dpl comes a maturity model for dpl providers, which should help with expectation management for provider stability. It consists of the four levels dev, alpha, beta, and stable, with dev being the initial level and stable signaling production readiness with no critical open issues. Providers marked as alpha are fully tested. A switch to beta only happens after “successful real-world production deployments” have been witnessed and the provider has spent at least a month in alpha phase.

Currently most providers are in alpha, so the team would like feedback about the ones in production to move them up the maturity ladder (however, this is planned to get automated at some stage). Equally they’re looking for help in getting test deployments going for the dev providers.

TravisCI was acquired by Idera in January 2019. Back then, co-founder Konstantin Haase predicted that the involvement of the Texan-based company would let the TravisCI team “be able to invest in expanding and improving our core product”. 

The first outside reactions however showed users rather unimpressed, given Idera’s portfolio and the slew of TravisCI employees who rather suddenly popped up looking for new places to work.

The new developer preview can be seen as a first step into the direction Haase mentioned and might come as a bit of a relief to onlookers who mainly noticed Travis for a major outage earlier this year. Let’s keep our fingers crossed that there will be more of the former in the months to come.