Description
The way I phrased my information in #129 (comment) may have led to the conclusion that GitHub Actions are unlimited in every way for open source projects. It is true that the total number of minutes does not have a limit. It is not true that the number of concurrent jobs is unlimited.
There are two limits on the number of concurrent jobs for free, open source plans:
- 20 total concurrent jobs
- 5 of which may be macOS jobs
We're hitting at least the first limit. Due to the proliferation of the number of jobs in a CI run (#357, #373, etc.), combined with the high level of activity on this project, a number of jobs end up waiting in the queue for a slot to open for them to run.
For example, take a look at this run. If it had been able to launch all the jobs simultaneously, it would have completed in 45 seconds because clippy quickly failed. But the clippy job didn't get a chance to start for ~6 minutes because of other concurrent jobs from other pull requests.
Currently there are 9 jobs defined. That means we can only have 2 concurrent CI runs before we start piling up delays. I would suggest, at a minimum, to collapse 3 of the jobs (2 tests, 1 clean) into 2 of the build jobs, for a total of 6 jobs. Tests already have to build the code, so there shouldn't be any reduction in what CI is checking there. Adding the "clean" stuff on top of one of those may increase the max runtime of that particular job a little bit, but if we pick the job which completes the fastest on average, we may avoid increasing the max job time at all. Even if we do increase max job time by a few seconds, the overall increase in throughput is a clear win.
If no one else beats me to it, I'm willing to make a PR for this later this week. I won't complain if someone else would rather do it, though. 😄
/cc @AngelOnFira