Skip to content

fix: speed up CI - #634

Merged
maxday merged 4 commits into
mainfrom
maxday/speed-up-ci
Aug 20, 2026
Merged

fix: speed up CI#634
maxday merged 4 commits into
mainfrom
maxday/speed-up-ci

Conversation

@maxday

@maxday maxday commented Aug 18, 2026

Copy link
Copy Markdown
Member

Speeds up the Runtime Interface Client (RIC) CI by running each architecture on a native GitHub runner instead of cross-building both architectures on a single x86_64 runner under QEMU emulation.

Previously the build and smoke-test jobs ran on ubuntu-latest and used QEMU to emulate linux/arm64/v8. Under emulation mvn install recompiles curl for aarch64, which took ~30 minutes. This PR splits the work per-architecture so the aarch64 half runs on a native ARM runner (ubuntu-24.04-arm), eliminating the emulation cost.

Results:

Measured on the RIC PR workflow (both jobs run in parallel, so the reported wall-clock is the longest job).

Job Before (QEMU, single x86_64 runner) After (native runners)
build 44m 06s x86_64: 5m 31s · aarch64: 4m 47s
smoke-test 45m 51s x86_64: 8m 55s · aarch64: 9m 24s
Workflow wall-clock ~46 min ~13 min

Net gain: ~33 minutes faster (~71% reduction) in end-to-end CI time. The bulk of the saving comes from smoke-test, which dropped from ~46 min to ~9 min (~37 min, ~80% faster) by eliminating the emulated aarch64 curl recompile.

By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.

maxday added 2 commits August 18, 2026 18:48
The multiArch=false path skips architectures whose name doesn't match
the host arch, but ARCHITECTURES uses Maven's classifier spelling
'aarch_64' while `arch` reports 'aarch64'. On the ARM runner this
mismatch caused every arch to be skipped, so no .so was built and the
unit tests crashed loading the native library.

Normalize the host arch to 'aarch_64' before comparing.
@codecov

codecov Bot commented Aug 18, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 65.79%. Comparing base (b668333) to head (884dd85).

Additional details and impacted files
@@             Coverage Diff              @@
##               main     #634      +/-   ##
============================================
+ Coverage     65.38%   65.79%   +0.40%     
- Complexity      212      213       +1     
============================================
  Files            34       34              
  Lines           991      991              
  Branches        143      143              
============================================
+ Hits            648      652       +4     
+ Misses          290      287       -3     
+ Partials         53       52       -1     

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@maxday
maxday marked this pull request as ready for review August 19, 2026 03:15
@fabisev

fabisev commented Aug 19, 2026

Copy link
Copy Markdown
Contributor

Nice speedup!

One thing I noticed is that making build and smoke-test matrix jobs changes the check names to build (x86_64) etc. Main requires a check named just build, so it's stuck pending.
One thing I did for the build-integration-test.yml workflow is:

build:
    needs: build-arch
    if: always()
    runs-on: ubuntu-latest
    steps:
      - name: Check build results
        run: |
          if [ "${{ needs.build-arch.result }}" != "success" ]; then
            echo "Build failed on one or more architectures"
            exit 1
          fi
          

So a build-arch job with a build job aggregator, that would keep the build check reporting without touching the branch protection.

@fabisev fabisev assigned fabisev and unassigned fabisev Aug 19, 2026
@maxday
maxday requested a review from fabisev August 19, 2026 16:22

@darklight3it darklight3it left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nice but I think we need to check something more here for example this. I think we can probably get rid of it and all the dockeremu pipeline right?

@maxday

maxday commented Aug 19, 2026

Copy link
Copy Markdown
Member Author

@darklight3it I think your comment got truncated?
I agree there's more cleanup we could do, but this PR delivers a huge performance win on its own, and I'd love to get it merged ASAP so we can start benefiting from it. We can then handle the remaining QEMU config in follow-up PRs. WDYT? I've tackled par of the removal in #633

@darklight3it

Copy link
Copy Markdown
Collaborator

@maxday fine for me as long as we create the new PR immediately I don't want dead code to stay long. The package is already huge and confusing.

@maxday
maxday merged commit a32b1e4 into main Aug 20, 2026
10 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants