Skip to content

ci: use arm runner for arm image build#1327

Merged
MrAlias merged 9 commits into
open-telemetry:mainfrom
skl:skl/optimise-docker-build-push
Feb 18, 2026
Merged

ci: use arm runner for arm image build#1327
MrAlias merged 9 commits into
open-telemetry:mainfrom
skl:skl/optimise-docker-build-push

Conversation

@skl
Copy link
Copy Markdown
Member

@skl skl commented Feb 18, 2026

The image builds for obi and obi-cache were taking ~45m and ~18m respectively, mostly due to the ARM images being built inside a QEMU ARM VM on x86 runners.

This PR instead uses native ARM runners in parallel with the standard x86.

Affected workflows:

  • pull_request_docker_build_test.yml (PR build only, ARM previously skipped)
  • publish_dockerhub_main.yml (main obi build and push)
  • publish_dockerhub_k8s_cache_main.yml (main cache build and push)

Outputs:

  • Same tags, registries, multi-arch manifest, labels, and signing as before.
  • Adds arm64 on a native runner and removes the QEMU VM for image building.
  • Only the build process itself has been optimised.

The expectation is that these workflows should be significantly faster (est. <10m).

@skl skl requested a review from a team as a code owner February 18, 2026 16:00
@codecov
Copy link
Copy Markdown

codecov Bot commented Feb 18, 2026

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 44.27%. Comparing base (c9aa003) to head (c0e3c05).
⚠️ Report is 3 commits behind head on main.

Additional details and impacted files
@@            Coverage Diff             @@
##             main    #1327      +/-   ##
==========================================
+ Coverage   37.96%   44.27%   +6.30%     
==========================================
  Files         304      303       -1     
  Lines       32793    27690    -5103     
==========================================
- Hits        12451    12259     -192     
+ Misses      19602    14702    -4900     
+ Partials      740      729      -11     
Flag Coverage Δ
integration-test ?
integration-test-arm ?
integration-test-vm-x86_64-5.15.152 ?
integration-test-vm-x86_64-6.10.6 ?
k8s-integration-test ?
oats-test ?
unittests 44.27% <ø> (ø)

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Sentry.
📢 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.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

This PR optimizes Docker image builds for ARM architecture by using native ARM runners instead of QEMU emulation on x86 runners, significantly reducing build times from ~45 minutes to an estimated <10 minutes.

Changes:

  • Updated three workflows to use native ARM runners (ubuntu-24.04-arm) in parallel with x86 runners
  • Refactored publish workflows to split building and manifest creation into separate jobs
  • Removed QEMU setup steps as they're no longer needed with native ARM runners

Reviewed changes

Copilot reviewed 3 out of 3 changed files in this pull request and generated 4 comments.

File Description
.github/workflows/pull_request_docker_build_test.yml Added ARM builds using native runners; removed QEMU setup; updated matrix to build both Dockerfiles on both platforms
.github/workflows/publish_dockerhub_main.yml Split into parallel build jobs by platform and a manifest creation/signing job; uses digest-based multi-arch manifest creation
.github/workflows/publish_dockerhub_k8s_cache_main.yml Same pattern as main workflow but for k8s-cache image; parallel builds with digest-based manifest creation

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread .github/workflows/publish_dockerhub_main.yml Outdated
Comment thread .github/workflows/publish_dockerhub_k8s_cache_main.yml Outdated
Comment thread .github/workflows/publish_dockerhub_main.yml Outdated
Comment thread .github/workflows/publish_dockerhub_k8s_cache_main.yml Outdated
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

Copilot reviewed 3 out of 3 changed files in this pull request and generated 6 comments.


💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread .github/workflows/publish_dockerhub_main.yml
Comment thread .github/workflows/publish_dockerhub_main.yml
Comment thread .github/workflows/publish_dockerhub_main.yml Outdated
Comment thread .github/workflows/publish_dockerhub_k8s_cache_main.yml
Comment thread .github/workflows/publish_dockerhub_k8s_cache_main.yml
Comment thread .github/workflows/publish_dockerhub_k8s_cache_main.yml Outdated
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

Copilot reviewed 3 out of 3 changed files in this pull request and generated 2 comments.


💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread .github/workflows/publish_dockerhub_k8s_cache_main.yml Outdated
Comment thread .github/workflows/publish_dockerhub_main.yml Outdated
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

Copilot reviewed 3 out of 3 changed files in this pull request and generated 3 comments.


💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread .github/workflows/publish_dockerhub_k8s_cache_main.yml Outdated
Comment thread .github/workflows/pull_request_docker_build_test.yml Outdated
Comment thread .github/workflows/publish_dockerhub_main.yml Outdated
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

Copilot reviewed 3 out of 3 changed files in this pull request and generated 2 comments.


💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread .github/workflows/publish_dockerhub_main.yml
Comment thread .github/workflows/publish_dockerhub_k8s_cache_main.yml
Copy link
Copy Markdown
Contributor

@grcevski grcevski left a comment

Choose a reason for hiding this comment

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

LGTM! Epic!

Copy link
Copy Markdown
Contributor

@MrAlias MrAlias left a comment

Choose a reason for hiding this comment

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

🥇

@MrAlias MrAlias merged commit e064737 into open-telemetry:main Feb 18, 2026
9 checks passed
@skl skl deleted the skl/optimise-docker-build-push branch February 19, 2026 10:52
@MrAlias MrAlias added this to the v0.6.0 milestone Feb 23, 2026
@MrAlias MrAlias mentioned this pull request Mar 5, 2026
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