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
Use flatware to parallelize CI specs #27663
Conversation
4e52914
to
9f073cf
Compare
It's challening to get good numbers here because it's so variable on each run. Some recent actions runs (all from after merging in the matrix reduction):
Those are all looking just at the narrow rspec run portion of the larger job. I think the discrepancy in the flatware times is that the ruby 3.0 job is using 4 cores and the others are using 2 each. Another benefit here might be to cache the rspec status persistence file between runs -- if it's present flatware can use it to split tests between cores based on exected times (it defaults to just a numeric split w/out that file). I think this probably makes sense to apply, but I can also wait until we have more runtime data post-matrix-removal and see what things actually look like. |
9f073cf
to
afb06fa
Compare
This pull request has merge conflicts that must be resolved before it can be merged. |
ac1d8b7
to
d2a79fc
Compare
This pull request has resolved merge conflicts and is ready for review. |
d2a79fc
to
f0fd0b9
Compare
Codecov ReportAll modified and coverable lines are covered by tests ✅
Additional details and impacted files@@ Coverage Diff @@
## main #27663 +/- ##
===========================================
- Coverage 85.01% 0.00% -85.02%
===========================================
Files 1059 1060 +1
Lines 28277 41653 +13376
Branches 4538 0 -4538
===========================================
- Hits 24040 0 -24040
- Misses 3074 41653 +38579
+ Partials 1163 0 -1163 ☔ View full report in Codecov by Sentry. |
f0fd0b9
to
42ea602
Compare
Rebased again. These run times remain variable due to differences in underlying hardware/env, but recently the full runs of "Ruby Testing" task for successful runs is in the ~13-15 minute zone. This PRs most recent rebased run was just over ~8 mins. The narrow rspec run portion of that (for each ruby version) tends to be in the 8-12 min zone (again, quite variable) on the non-parallel runs. This PRs most recent was ~4 mins. I suspect part of the variability is in how many cores happen to be allocated for a given runner ... so ~15 mins might be a worst-case on the non-parallel runs and just under ~4 mins might be expected on parallel runs when the runner gets 4 cores. Maybe as importantly - none of these runs have shown any intermittent failures or other parallelism issues; so I think this is probably safe if we want a CI speedup. |
42ea602
to
edb5704
Compare
This pull request has merge conflicts that must be resolved before it can be merged. |
edb5704
to
384fba7
Compare
This pull request has resolved merge conflicts and is ready for review. |
384fba7
to
a91f454
Compare
With the sidekiq fake PR merged, this one is probably the next most impactful (in terms of CI performance). Rebased this again to include the sidekiq improvements here. When the flatware runners get 4 cores on CI, looks like the most recent runs were just over ~3 mins each for the full rspec run portion of the CI suite (vs 6-7 mins for other recent post-sidekiq-merge runs from other PRs). |
a91f454
to
ac9c905
Compare
5a174cf
to
0ef1ead
Compare
0ef1ead
to
5125503
Compare
5125503
to
9bb91e5
Compare
cf9d2b8
to
1c400c6
Compare
There was a configuration interaction issue here briefly ... since simplecov is only loaded/run when the ruby matrix version matches ruby-version on CI, the other versions (currently 3.1 and 3.3) were failing/timing-out their CI runs. Pushed an update to only set up the flatware fork config when we want simplecov active. I think that will resolve it ... but will monitor and publish another status summary after this CI run. |
Looks like that last push resolved the CI issues, and we are now re-combining simplecov output locally correctly. Looks like codecov is not combining though, and needs more configuration to do that. Will attempt that next. |
e08e80a
to
3ffbc03
Compare
The codecov integration is the last remaining portion of this to sort out. The first few obvious seeming things did not work. Before I spend more time on that ... is the codecov integration useful? I rarely look at it, but when I do it seems confusing. Like right now its comparing recent open PRs to a commit from ~3 months ago? I don't know if the service only sort of works, or if we broke the integration somehow, or if I'm interpreting it wrong? |
3ffbc03
to
95697ff
Compare
@mjankowski simplecov support is a pretty new flatware feature. If that's a blocker here I'd love to help. Would be cool to see this merge. |
@briandunn thanks for the offer (and for flatware, it's great!). I think at this point...
I found one load order oddity (not a bug, just mistake I made) when I was working on how to configure the flatware/simplecov integration ... maybe I'll open an issue or documentation update for you on flatware repo. |
95697ff
to
c32d0ae
Compare
c38c678
to
22bbc35
Compare
22bbc35
to
cc6bf55
Compare
0494cb3
to
34c71f9
Compare
34c71f9
to
b3b9b3a
Compare
Closing this in favor of #30284 (basically same thing, just new PR). |
In addition to #27660 - here's another idea for maintaining some parallelization setup, while not paying the cost of all the setup times.
Opening this initially because I want to see if the CI setup/speedup is as easy as it was locally. Will review the actual numbers and post about that after it completes...