Fork me on GitHub

So, when I do a boot build on a new host (which we get quite often on our Jenkins box as it redeploys regularly and doesn't have persistent disks) it seems to pull down every version (including alphas etc ) of Clojure from 1.4.0 up to 1.10.0-alpha4. This despite there being a in the directory boot is being run from which specifies BOOT_CLOJURE_VERSION=1.8.0, and build.boot specifying (set-env! :dependencies '[[org.clojure/clojure "1.8.0"]])


Is there any way to stop that, and get it to just pull down the Clojure version we want?

Alex Miller (Clojure team)15:05:31

is it pulling the poms or the jars?

Alex Miller (Clojure team)15:05:52

Maven will sometimes pull poms to determine metadata (to do version resolution)


Aah, good point. It is pulling down the poms. It just seems to take a surprisingly long time to get each one even though they're only 2-3K apiece


2 ways to speed it up that come to mind are 1) persist ~/.m2 across builds and 2) run sonatype nexus with a proxy repository near or on the jenkins box


although 1) adds brittleness and 2) is kind of a pain


to alleviate 1) you could run 2 builds, one that uses shared m2 and runs quickly (like maybe for smoke tests) and a second longer-running build that starts with fresh m2


we persist ~/.m2 in our cloud CI setup - haven't had any problems with it in the year or so it's been up and running


speaking of caching ~/.m2, i've been playing with AWS CodeBuild lately and getting good results by doing that


i was actually curious about caching the boot cache too... is that a good idea?


@dave we do that on circleci, I see no reason it's not equally applicable.


nice! good to know!


Yep, the .m2 directory is eminently cacheable. The only place I could see issues if you are saving the cache after installing your project to the m2 cache, especially if it wasn't installed as a SNAPSHOT version


that makes sense -- if your build includes installing arbitrary stuff to your .m2, you are messing with what is otherwise conceptually a collection of immutable artifacts


i guess if your application depends on SNAPSHOT versions of things, another caveat of caching .m2 is that you won't get updated snapshots. but maybe that's OK

Alex Miller (Clojure team)21:05:14

yo, I heard immutable append-only data stores were imminently cacheable

Alex Miller (Clojure team)21:05:37

someone should make a db like that

😂 4