Talks
Events

A Clojure DSL for defining CI/CD orchestrations at scale

Rohit Kumar, Viraj Purang at Clojure/conj 2016

At Oracle, we do things at scale: 1000 Hudson/Jenkins masters, 2000 Artifactory repositories, 100 TB of Artifacts, every conceivable OS, SCM and the list goes on. Given this backdrop, we developed Carson to integrate lifecycle events from a variety of CI/CD/ALM applications. At the heart of Carson is an event driven workflow engine that orchestrates asynchronous jobs. It reacts to a diverse set of events that teams need to build CI/CD pipelines such as Git commits, Artifactory publishes, Hudson/Jenkins job transitions, Mesos task events. It does so by using a Clojure DSL to define handlers on these “channels” of events and dispatch actions. The DSL materializes pipelines as directed acyclic graphs which are visualized using D3.js.