Skip to content

👷 QD-16987 Build arm64 base images on native runners instead of QEMU (262) - #1142

Closed
Ivan Efimov (ivanovec) wants to merge 1 commit into
262from
QD-16987-arm-native-base-262
Closed

Ivan Efimov (ivanovec) wants to merge 1 commit into
262from
QD-16987-arm-native-base-262

Conversation

@ivanovec

Copy link
Copy Markdown
Collaborator

Pull Request Details

Description

Backport of #1137 to 262 (clean cherry-pick of f603f9a with -x).

Base images are built natively per platform instead of under QEMU: amd64 on ubuntu-latest, arm64 on ubuntu-24.04-arm. On push, every target is pushed by digest; the merge job then creates the multi-arch tags from docker-bake.hcl via .github/scripts/merge-base-images.py.

Related Issue

QD-16987

Motivation and Context

Node/V8 under QEMU crashes randomly on arm64 (qemu: uncaught target signal 4, exit 132), which makes the Base workflow flaky on release branches too.

How Has This Been Tested

  • .github/workflows/base.yml, docker-bake.hcl and .github/scripts/ on 262 were identical to main before 👷 QD-16987 Build arm64 base images on native runners instead of QEMU #1137, so the change is the same as in main.
  • actionlint 1.7.12: clean.
  • docker buildx bake --print for all 13 groups, default and PUSH_BY_DIGEST=true BASE_PLATFORMS=linux/arm64: OK.
  • The PR run of this workflow builds both platforms; push by digest and the merge job run after merge.

Types of changes

  • Docs change / refactoring / dependency upgrade
  • Bug fix (non-breaking change which fixes an issue)
  • New feature (non-breaking change which adds functionality)
  • Breaking change (fix or feature that would cause existing functionality to change)

…1137)

* 👷 QD-16987 Build arm64 base images on native runners instead of QEMU

QEMU-emulated arm64 builds on ubuntu-latest are slow and intermittently
crash Node/V8 with SIGILL (exit code 132).

- Build each bake group per platform: amd64 on ubuntu-latest,
  arm64 on ubuntu-24.04-arm; drop setup-qemu
- On push, push untagged images by digest (a tagged ref can't be pushed
  by digest), then the merge job creates the multi-arch tags from
  docker-bake.hcl via `docker buildx imagetools create`
- Use a separate GHA cache scope per group and platform instead of one
  shared "provenance" scope overwritten by all jobs

* 👷 QD-16987 Address review: push mode in docker-bake.hcl, merge script in Python

- docker-bake.hcl: BASE_PLATFORMS / PUSH_BY_DIGEST variables and a tags() function
  replace the jq bake override (based on the patch from review)
- matrix platform as objects instead of include
- group list shared via YAML anchor, comments restored, groups job removed
- merge logic moved to .github/scripts/merge-base-images.py; validates the whole
  group before tagging, so tags are never partially updated

(cherry picked from commit f603f9a)
@ivanovec
Ivan Efimov (ivanovec) requested a review from a team as a code owner November 13, 2026 13:26
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Nov 13, 2026 •

Copy link
Copy Markdown
Codex Review Summary: ✅ Completed

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-11-13T13:27:24.340081Z 20e3136 PR opened
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@github-actions

Copy link
Copy Markdown

Qodana for Go

129 new problems were found

Inspection name Severity Problems
Check dependency licenses 🔴 Failure 5
Vulnerable declared dependency 🔴 Failure 4
Check GO source code coverage 🔶 Warning 47
Unhandled error 🔶 Warning 13
Potential resource leak 🔶 Warning 6
Check dependency licenses 🔶 Warning 4
Deprecated element 🔶 Warning 4
Vulnerable declared dependency 🔶 Warning 3
Imported package name as a name identifier 🔶 Warning 1
Reserved word used as name 🔶 Warning 1
Missing 'case' statements for 'iota' consts in 'switch' 🔶 Warning 1
Vulnerable API usage ◽️ Notice 14
Unsorted imports ◽️ Notice 9
Name starts with a package name ◽️ Notice 8
Vulnerable declared dependency ◽️ Notice 4
Empty slice declared using a literal ◽️ Notice 3
Redundant type conversion ◽️ Notice 1
Comment of exported element starts with the incorrect name ◽️ Notice 1
@@ Code coverage @@
+ 69% total lines covered
11120 lines analyzed, 7706 lines covered
# Calculated according to the filters of your coverage tool

☁️ View the detailed Qodana report

Contact Qodana team

Contact us at qodana-support@jetbrains.com

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.

1 participant