-
Notifications
You must be signed in to change notification settings - Fork 18
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
Parallelize CI workflows #100
Comments
@orozery , any thoughts here? |
I think I disagree with an implicit assumption that you have that fix-and-retest should depend on CI. |
Thanks @orozery . I agree that on a day-to-day basis fix-and-retest shouldn't depend on CI. However, this is complex project with many external dependencies. I'm afraid that expecting every developer to always have exactly the same environment as in the CI might be too much to ask for. From time-to-time a developer will have a slightly different version of Go/linter/kind/docker/make/Ubuntu/... and then checks may pass locally but fail on the CI. And now you have at least one iteration of fix-and-retest. In addition, for the same reasons as above, I prefer to first open a Draft PR, see that CI passes, and only then ask for reviews. It will really help if I can wait only 5 minutes instead of 10. Last point: what do we lose from parallelization? If we do it right, it may take exactly the same CPU time as the serial version. |
I actually don't like the current split of unit-tests. Indeed we waste cycles just for the additional setup+build. |
I see variance between jobs. Anyhow, I'm good with splitting to static-check, build+unit-test. |
How do you like then the proposal to parallelize the 3 e2e tests (second bullet in the first comment)? |
I'm actually working on a writing a suite that has a single k8s-kind setup that serves all tests. |
Currently, time from opening a PR to getting full testing results is at least 10 minutes. This makes fix-and-retest iterations rather slow. Furthermore, time to get even partial results is too long (e.g., unit tests do not run until lint is done). Splitting work to jobs and running these jobs in parallel can speed up this process.
In particular:
.github/workflows/pr-check.yml
:unit-tests
doesn't have to be dependent onstatic-checks-and-build
. Moreover,make build
runs in both jobs, which is redundant..github/workflows/pr-e2e-test.yml
: A first job can build docker images and upload them as an artifact. Then the 3 end-to-end tests can download this artifact and run their tests in parallel. See an example hereThe text was updated successfully, but these errors were encountered: