Skip to content
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

Do not test everything in every travis run, to speed things up #7

Closed
tovrstra opened this issue Aug 31, 2017 · 18 comments
Closed

Do not test everything in every travis run, to speed things up #7

tovrstra opened this issue Aug 31, 2017 · 18 comments

Comments

@tovrstra
Copy link
Member

Tagged commits:

  • Build packages with good optimization flags
  • Build for all Python versions and OSes of interest.

Other commits and PRs:

  • Build packages with development/debug/coverage flags
  • Build just for one Py3.6 on Linux
@matt-chan
Copy link
Member

For the OSes, there's a significant snag. The main reason a build takes so long is because travis is always short of OSX VMs. Even though a build takes 5min, it will often wait for 1 hour in the queue to get a worker. There's no way to have code run before the worker is requested.

The best solution I can think of for now is to mark the OSX builds as allowed to fail, and then to allow fast-finishing. This means we'll get a checkmark on github as soon as the linux jobs are done. However, we would still need to check the travis page to see when OSX finishes.

The other downside to this approach is that we fill up our job queue. We can't start CI on another commit in the same repo until the previous commits are done (including OSX). We can get around it slightly by telling travis to cancel previous builds if a new commit is made.

@tovrstra
Copy link
Member Author

tovrstra commented Sep 1, 2017

I've also noticed that they are short on OSX vms. We can do a few things about it:

@matt-chan
Copy link
Member

matt-chan commented Sep 1, 2017 via email

@tovrstra
Copy link
Member Author

tovrstra commented Sep 1, 2017

This will eventually become useful for speedups https://docs.travis-ci.com/user/build-stages/

@matt-chan
Copy link
Member

matt-chan commented Sep 1, 2017 via email

@tovrstra
Copy link
Member Author

tovrstra commented Sep 1, 2017

Someone once asked the question on build matrix and TRAVIS_TAG here: https://stackoverflow.com/questions/31867394/excluding-jobs-in-travis-ci-build-matrix-for-non-tag-builds It does not seem to work but we should try to be sure.

@matt-chan
Copy link
Member

matt-chan commented Sep 1, 2017 via email

@matt-chan
Copy link
Member

@tovrstra So do we still do the dynamic lint tests for tagged releases? Currently the code only does cardboard for the inplace builds. I can copy it over for the dynamic ones, but I think the only real addition would be pylint, since there won't be coverage for the others.

@tovrstra
Copy link
Member Author

tovrstra commented Sep 1, 2017

I guess pylint is not so essential when building packges. I think it is OK to drop the dynamic ones when building a package for release.

@matt-chan
Copy link
Member

Sounds good.

@tovrstra is there a reason that for the inplace build, we do the Py project first (depending on conda's C++ install) and then the C++ after? With the split builds, I have to build the C++ first and then the Py after.

@tovrstra
Copy link
Member Author

tovrstra commented Sep 1, 2017

The in-place build was just the easiest way to compile and test with debugging options enabled. I also guessed that coverage data would be easier to process because all files involved are relative to the source tree. (The latter argument may not matter much. I did not test.)

@matt-chan
Copy link
Member

matt-chan commented Sep 1, 2017 via email

@tovrstra
Copy link
Member Author

tovrstra commented Sep 1, 2017 via email

@matt-chan
Copy link
Member

Yes, but since the C++ library is being built in-place (and not with conda), then the library link path/include path are wrong. Also it's not on the LD search path, so that needs to be updated too. The only thing the conda gcc does for us is give cellcutoff for free. The C++ qcgrids project doesn't get it that benefit =/.

I think we could do a C++ install alternatively... It shouldn't really matter if we munge the system directories. It'll be destroyed later anyways...

@tovrstra
Copy link
Member Author

tovrstra commented Sep 1, 2017 via email

@matt-chan
Copy link
Member

matt-chan commented Sep 1, 2017 via email

@tovrstra
Copy link
Member Author

tovrstra commented Sep 1, 2017

I'm going to take a quick look at the PR, see if I can already help out. Just a sec.

@tovrstra
Copy link
Member Author

tovrstra commented Sep 2, 2017

This is fixed by #10 and #11

@tovrstra tovrstra closed this as completed Sep 2, 2017
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants