Evaluate Circle CI (23171 but from a branch in JuliaLang) (#23188)
This runs in circleci's python 2.7 docker image which is based on
debian jessie, mostly for convenience since that image has a non-root
user added and some of the Julia tests work differently when run as root.
Circle CI caching is a little odd - I'm using ccache here since it's
actually fast enough to handle it pretty well, about 15 minutes to build
deps from scratch and about 3 minutes to build deps with a primed ccache.
We save the ARCH, HOME (default location where ccache saves its data, in
case we switch containers and try to run tests as a different user), and
year and week number into a tag file, then determine which saved circleci
cache tag to load from based on the checksum of that tag file. So this
will throw out the cache and have to rebuild it once a week, but since that
only adds about 10-15 minutes to a build that's not a big deal. It would be
better if circle's cache worked like Travis and AppVeyor's where it loads
the latest and checksums the content to decide whether to upload a new
replacement cache, but that's up to circle to fix.
This has to skip the socket tests, since circle doesn't currently support
ipv6 in their docker workers. They have other types of workers, but they
aren't anywhere near as fast to build or run tests.
This currently doesn't do a doc build or deployment, that's a TODO if
we decide to switch to this. It also looks like it checks out the branch
tip instead of the merge commit, but that should be fixable.
Here I've set JULIA_CPU_CORES to 6 - in some testing on my fork this was a
few minutes faster, but may run a higher risk of getting OOM killed.
The merge commit is checked out manually due to Circle limitations.