Skip to content

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

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

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

Conversation

@ivanovec

Copy link
Copy Markdown
Collaborator

Pull Request Details

Description

Backport of #1137 to 263 (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 263 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:03.941725Z 48924c8 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

133 new problems were found

Inspection name Severity Problems
Vulnerable declared dependency 🔴 Failure 4
Check GO source code coverage 🔶 Warning 67
Unhandled error 🔶 Warning 13
Interprocedural potential nil dereference 🔶 Warning 10
Deprecated element 🔶 Warning 4
Imported package name as a name identifier 🔶 Warning 3
Vulnerable declared dependency 🔶 Warning 3
Reserved word used as name 🔶 Warning 1
Potential resource leak 🔶 Warning 1
Missing 'case' statements for 'iota' consts in 'switch' 🔶 Warning 1
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 @@
+ 65% total lines covered
10625 lines analyzed, 6977 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