-
Notifications
You must be signed in to change notification settings - Fork 5
Parallelise our CI/CD jobs #250
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
Comments
It would be pretty simple to make multiple jobs for running tests. the question is how granular would we want the tests to be? I assume there is some cost to using more runners at a time. I can do 1 test job per domain but really we just need to split the expensive ones up and keep or the trivial tests together. |
Because it is open source, it costs free! I suppose this has a relationship with optimising testing. So for tests that have complicated side effects that are centralised then it can be done separately. More info in #264. |
It is being attempted here: #292 Although I think better grouping than |
Being done in #292. |
We are now automatically splitting all tests jobs by subdirectories. Any subdirectory in Note that this works in a hierarchical way. Test modules in a parent directory get executed as their own job, but all subdirectories are separate jobs. |
Doing this led to some discoveries regarding how gitlab CI/CD variables are used across pipelines. Recommend reading #292 (comment) for any future work/maintenance on this feature. |
Uh oh!
There was an error while loading. Please reload this page.
Details from https://gitlab.com/MatrixAI/Engineering/Polykey/js-polykey/-/merge_requests/184#note_668294739
Using an ever longer delay is not a good way of doing these tests, they don't scale. Ideally we fix this up before going into prod.
I also noticed our tests taking longer now. Up to 30 minutes.
To speed up our testing, we can parallelise our testing. Now our jest tests are naturally parallelised by checking the number of cores the host environment has. But the CI/CD runners all have 1 CPU core:
There should be a way for us to configure with more cores or other wise increase the number of parallel jobs by splitting the test job, which would end up using multiple runners (somewhat inefficient) due to duplication of resources, and then adding our own custom runner with more cores.
A quick way to do this would to be create separate CI/CD jobs for each domain run. So
npm test tests/X
andnpm test tests/Y
might allow us to take advantage of gitlab CI/CD's splitting of each job in parallel. Only issue is the sharing of the Nix environment.Tasks
tests/*
tests/*
they can run under a single test pipelineThe text was updated successfully, but these errors were encountered: