Most folks know that I like trunk-based-development, with branches made in advance of release.

Less well known is that I like my Continuous Integration configuration to be under source control too.

I’ve spent a lot of time in Jenkins recently configuring job, then copy-pasting that (after multiple clicks to navigate around) into similar jobs.

I would really like to be able to do all of that in Intellij, and just commit atomically, possibly in the same commits as regular changes. I’d also like to be able to make branches and push them to within the visibility of the CI master daemon, and it provision the implicit pipelines from that commit automatically.

What that means for me is that the CI tool should watch all commits, and be able to recognize its configuration files amongst the commits (new, changed and deleted) and reconfigure itself before it leaps into action to process the particular commit(s).

Cruise-Control was close in a bygone era. Indeed, I remember working with Paul Julius in 2005 to rework the XML-Include capability to be resilient to botched edits. That last would mean that the reconfig would not take down a whole pipeline if one dev forgot an angle bracket.

I wish the modern CI tools could be configured completely using commits, including new pipelines.

Updates

Nov 2013: Branchable CI with SnapCI blog entry from me.

Jan 2015: Ivan Moore talks up CI configuration under source control too.