Prepare server build for arm64#5630
Open
EvgeniyPatlan wants to merge 5 commits into
Open
Conversation
- build-server-rpm: namespace the S3 build cache by architecture
(RELEASE/el9-aarch64, PR-BUILDS/el9-aarch64). Without this, arm64
builds hit the amd64-populated cache keys, skip the build, and
produce an x86-contaminated server image. x86_64 paths are unchanged.
- grafana.spec: allow aarch64 in ExclusiveArch and install Go binaries
from bin/linux/%{go_arch} instead of hardcoded amd64.
- pmm-images ansible role: make the percona-release repo disable and
the local repo description architecture-neutral.
percona-dashboards.spec already handles arm64 (linux_arm64 plugin
platform), and build/packer already defines the arm64 agent AMI.
- packer/pmm.json: new 'amazon-ebs-arm64' builder — AlmaLinux 9 arm64 base (source_ami_filter on the AlmaLinux owner account, most recent), c7g.xlarge, same disks/network/tags/provisioners as the x86_64 builder. The provisioning roles are architecture-agnostic: they podman-pull the (multi-arch) pmm-server image, which resolves to the arm64 layer on a Graviton build instance. - manifest post-processor now includes the arm64 builder so AMI_ID extraction in Jenkins (jq .builds[-1].artifact_id) keeps working. - Makefile: 'make pmm-ami-arm64' target (-only amazon-ebs-arm64).
The playbook provisions both amd64 and arm64 agents but hardcoded the yq_linux_amd64 binary, leaving arm64 agents with a non-executable /usr/bin/yq. Uses the existing ansible_architecture_alt fact (amd64/arm64), so the amd64 URL is unchanged.
The cloud-node role edits /etc/cloud/cloud.cfg.d/00_ol-default-user.cfg, which only exists on Oracle Linux — the AlmaLinux arm64 base failed there. Everything before that task ran clean on aarch64.
…Linux 9 Oracle does not appear to publish OL9 aarch64 AMIs under the expected name pattern. AlmaLinux 9 arm64 is proven to boot and provision (first run passed 14/15 cloud-node tasks); the one failure was this task, whose 'when' already claimed AlmaLinux support but edited an Oracle-only file (/etc/cloud/cloud.cfg.d/00_ol-default-user.cfg). Split it per distro: OL keeps the exact same behavior, Alma edits /etc/cloud/cloud.cfg.
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #5630 +/- ##
==========================================
+ Coverage 43.59% 43.80% +0.20%
==========================================
Files 415 415
Lines 43134 42893 -241
==========================================
- Hits 18804 18789 -15
+ Misses 22454 22231 -223
+ Partials 1876 1873 -3
Flags with carried forward coverage won't be shown. Click here to find out more. ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This makes it possible to build pmm-server natively on arm64. The client side has been building on arm for a while, the server was the missing piece.
All of it is a no-op on x86_64: cache paths stay byte-identical, the grafana spec change only adds an arch, the yq url resolves to the same file on amd64.
Tested by building the full server on a Graviton instance from this branch (all 7 rpms, docker image, watchtower) - the image comes up, readyz returns 200, supervisorctl shows everything running, api-tests pass. The arm64 AMI builds with packer from this branch and boots.