-
-
Notifications
You must be signed in to change notification settings - Fork 5.5k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
RFC: experimenting with docker containers on Travis #13569
Conversation
|
I would just change this in your branch to kick Travis off again but don't want to mess you up. |
Saw that, I don't think it would get much further though, as it's also failing to install My next option here is trying to make Julia-build docker container(s) that we could have building on docker hub and pull from them for deps. I think @malmaud started trying this (he was more interested in Cxx support IIRC, but they could overlap to a large extent) and would be curious to know how far he got. |
Just to make sure I understand, are you proposing something like this?
|
Exactly. Ref http://blog.travis-ci.com/2015-08-19-using-docker-on-travis-ci/ I'm not really sure how long the download for step 3 would take, and since you reported the time limits on dockerhub are a bit tight, steps 1-2 might need to be split into several layered dockerfiles - maybe one for llvm, one for openblas, and another for the rest. |
I think this is a great idea. It's worth keeping in mind that you don't have to use the Dockerhub buildbot - you can push binary images that were built anywhere onto Dockerhub. There are other opensource projects that will build Dockerhub files as service that might be more generous with resources, or someone could just take responsibility for building the dependencies image locally and pushing them when one of the dependencies changes. They're all guaranteed to produce the same image. Regarding the time needed to download the image, it'll really just depend on how big it ends up being and the bandwidth Travis provides. It's always possible the host the image on a private repository like S3 if the limiting factor is the egress bandwidth of Dockerhub. |
644a6c1
to
47c3011
Compare
64-bit Linux tests are running, anyways, so that's progress. |
aww, almost worked:
|
I'm somewhat doubtful whether udp will work inside Travis' docker containers if it doesn't work in the host here, but I have a trio of containers up on docker hub with all Julia deps in them: https://hub.docker.com/r/tkelman/julia-openblas https://github.com/tkelman/julia-openblas/blob/master/Dockerfile
|
Pleasant surprise, the socket test passes if I run it from inside a docker container: https://travis-ci.org/tkelman/julia/jobs/85385799 So you can do |
This. Changes. Everything.
|
I'm going to close this for now. #13577 has at least hidden the OOM under the rug a bit. Running the tests in a Docker container would work quite nicely on master, but be a bit harder to get running on PR's and branch builds. Would basically have to use Docker hub as a really roundabout way of creating a tarball of the compiled dependencies. We could use Travis' inbuilt caching feature for this too, but I don't think we can do a full source build of everything within the time limit. Would have to populate the cache in stages, which layered Dockerfiles work well for but travis.yml files don't. |
919d737
to
e3ece76
Compare
Revisited this. Travis is going to be forcing a migration to newer infrastructure in a few weeks, which does not have IPv6 available so would cause some of our tests to fail - travis-ci/travis-ci#4964 As I noticed last month, the tests seem to work when run from inside a docker container, just not when run directly from the newer-infrastructure host. I was able to get docker auto-builds to work for all dependencies of Julia, rather than having to use the PPA. This requires a fairly roundabout setup with a chain of 4 different containers, 2 for 64 bit deps and 2 for 32 bit deps. Docker Hub used to have a setup where it would automatically trigger linked chains of builds when you modify the parent, but that doesn't seem to be working right now. These auto builds were also timing out for a while, something seems to have gotten faster recently and I hope it'll stay that way? |
e3ece76
to
e2b1608
Compare
Anyone mac-savvy know why this is giving |
b24d74e
to
4efd7b9
Compare
3d504e5
to
243b48b
Compare
Turns out building and running in a docker container was actually overkill. The The time limit is nominally 50 minutes per build which is a bit tight for a from-scratch build of all of LLVM, OpenBLAS, etc in default configurations, but apparently it's not enforced all that strictly? When cached copies of the deps are available and used, the timings are comparable or maybe a bit better than what we have now using the PPA for Linux deps. |
It might also worth trying using system libunwind on linux again. (which might save a minute or so...). |
I'm actually not using system anything on Linux here. |
If travis starts inexplicably failing on the socket test with an ENETUNREACH any time in the next couple of weeks, this will (should) fix it. The first run after this gets merged will take about an hour on Travis to prime the deps cache, but from then on all other branches and PR's should use the master cache by default (or release-0.4 if this gets backported, for PR's against that branch) and take the usual half hour or so. |
something is still wrong with make install on osx, filtering out dSYMs try running with bash -lc [av skip]
with cached source build of deps [av skip]
when an old PR build gets restarted after some time, the travis API request might not return enough builds to include the most recent one for the PR, so the null result would incorrectly cause a 'superceded' fast-fail condition
23c174c
to
111f5e5
Compare
RFC: experimenting with docker containers on Travis
may help with #11553 ?will close #10205
[av skip]