Skip to content

Split the community build into two jobs on the CI to speed it up? #9599

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

Closed
smarter opened this issue Aug 19, 2020 · 8 comments · Fixed by #10030
Closed

Split the community build into two jobs on the CI to speed it up? #9599

smarter opened this issue Aug 19, 2020 · 8 comments · Fixed by #10030

Comments

@smarter
Copy link
Member

smarter commented Aug 19, 2020

The community build is now taking about an hour to run, it would be nice if we could split it in two jobs to reduce the CI wait time. This is tricky since there's dependencies between various projects, perhaps the easiest split would be between lihaoyi's libraries and everything else, since lihaoyi's library tend to only depend on other lihaoyi's libraries, but I don't know if there's enough lihaoyi's libraries for this to be a good split. What do you think @anatoliykmetyuk ?

@nicolasstucki
Copy link
Contributor

We might reduce CI time by a bit less if we manage to split it in a balanced way.

Screenshot 2020-10-16 at 09 16 39

@anatoliykmetyuk what is the status on this?

@liufengyun
Copy link
Contributor

Another thing that might improve throughput is to cancel running jobs for previous commits if we push a new commit to a PR.

Not sure if Github actions support this. There is something related:

@nicolasstucki
Copy link
Contributor

But only if the commit is not in the branch. Subsequent commits that are in the current history should all run if pushed individually.

@nicolasstucki
Copy link
Contributor

Cancel Workflow Action seems to cancel all runs in progress. It will probably not work. Maybe it can work with some advanced setting.

@anatoliykmetyuk
Copy link
Contributor

I tried splitting the CB in #9652. But it didn't help: each half of the CB still took 50 minutes to run:

https://github.com/lampepfl/dotty/runs/1036016282
https://github.com/lampepfl/dotty/runs/1036016288

@nicolasstucki
Copy link
Contributor

Both those halfs ran scalatest.

@nicolasstucki
Copy link
Contributor

Both seem to have run all the tests

@smarter
Copy link
Member Author

smarter commented Oct 16, 2020

One approach if there's a lot of dependencies and it's hard to split things up would be to ditch junit, make one sbt task per project, declare dependencies between these tasks, and rely on sbt to run things in parallel.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
4 participants