One of our ClojureScript builds takes a long time, over 20 min. Significant periods of time are:
- Getting dependencies (~1 min.)
- Deps are cached, but
- Migrating DBs (~1 min.)
- Not much we can do about this, I think
- Testing (~4 min.)
- Actually pretty good as far as testing goes
- Uberjar (~5 min. 30 s)
- Build and publish image to Quay.io (~5 min.)
AFAICS we don’t have more to gain by using caching.
Would it be reasonable to use parallelism to improve build times?
- Separate tests and uberjar/building image
- Publish image to Quay.io if tests pass
If so, is there an example of such dependency between parallel tasks that I can refer to?
This is CircleCI 1.0. I’m not familiar enough with CircleCI 2.0 to know whether it might offer some different optimizations.