For those who don’t know, we at CircleCI maintain a fleet of Docker images, which we call Convenience Images, for various languages and databases. These images are designed to run your CI environment.
The Docker build system we are using is old and complicated so we’ve been designing a new suite of images. This of course includes a new Clojure image.
If you’re already using CircleCI to build/test/deploy your Clojure project (or want to), I would love it if you could try out our new image. The image is cimg/clojure with the tag being a Clojure version such as 1.10 or specifically 1.10.1, with Leiningen installed.
It’s all open source so you can find the GitHub repo here and the Docker Hub repo here.
We’re looking to:
Provide a Clojure Docker image useful for CI.
Get feedback on if this image is working for your project or if it’s missing something or doing something “wrong” in your opinion.
Get feedback on how this image is working for you if you’re coming from our legacy image, circleci/clojure.
Other Preview Images
You can view all of the Next-Gen images that have reached preview here.
I’m a little concerned that the default variant of this image includes Leiningen. I don’t use Leiningen, and for at least a year or two now the default installation of Clojure via clojure.org has included/recommended using tools.deps. So I think perhaps that should be the default toolset included in the the default variant.
I have no problem with Leiningen, and there should definitely be variants of the image that include it, but I just don’t think it should be the default.
I’ve used the current images on and off in my project — for example, I was recently using them in a CI job named Scan dependencies for vulnerabilities which uses Snyk, but then I dropped down to the OpenJDK images so I could install the very latest release of Clojure to because it included a bugfix I wanted to take advantage of.
Right now most of my CI jobs that use Clojure use the OpenJDK images because I found it easier to control exactly what version of Clojure was installed, and so that I could adopt new releases of Clojure very soon after they were released.
If the new images had a tools.deps variant (whether the default or not) and if they were updated regularly to track new releases of Clojure tooling (I’d be happy to elaborate what I mean by that) then I’d happily use them for most of my CI jobs. That would make the jobs simpler, and that’s something I value greatly.
My two cents, but I’d still like Leiningen to be installed by default - it’s still very prevalent across the ecosystem and this would be a blocker using the new convenience images at my work. We’re using the beta images now and they’re working great.
We’ve rebooted the beta for this image. We will actively work on it until we can GA the image. Please, if you’re still interested in this image leave feedback in the new beta post here.