This may sound vague because it may be a skill issue, but I'm looking for a truly expressive build system.

I've used Jenkins for years and it hasn't clicked for me. Jenkinsfiles are arbitrary and inconsistent and I find myself taking a long time to develop good ones. Doing dynamic stages is difficult, and it feels as unexpressive and restrictive as coding in ADA or Java. I'm deeply dissatisfied with its restrictions and generally clunky syntax.

What I'd like is a build system that has excellent internal consistency with respect to its main programming language. Jenkins isn't that; Jenkinsfiles are a Groovy-inspired DSL, plugins are written in Java, and shared library code is in Groovy, and shared library code isn't even really a first-class feature; it's provided via a plugin. It also isn't even really Groovy. I can't tell you the number of times I've run into a problem that default Groovy didn't solve because default Groovy rules don't really apply (use of non-serializable objects, for example).

My dissatisfaction may be a skill issue, but technologies that I learn to love are ones I usually understand after a relatively short time of dedicated use. Jenkins has definitely not hit that mark for me. I'm looking for something that

  • Allows me to write arbitrary build/deployment logic that follows the stock rules of an available programming language.
  • The programming language in question is an expressive, dynamic language like Python or Lisp.
  • The system provides for secret management and ability to deploy jobs on multiple nodes.

Does anyone have a build system in mind that they've fallen in love with? Something whose offerings you defend as I defend Python, the Unix philosophy, Rust, or Lisp? Otherwise, I'm going to go write one.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Browse other questions tagged or ask your own question.