Skip to content

ci: migrate primary CI jobs to ARM runners#7232

Draft
thepastaclaw wants to merge 4 commits intodashpay:developfrom
thepastaclaw:ci/migrate-to-arm-runners
Draft

ci: migrate primary CI jobs to ARM runners#7232
thepastaclaw wants to merge 4 commits intodashpay:developfrom
thepastaclaw:ci/migrate-to-arm-runners

Conversation

@thepastaclaw
Copy link

Summary

Migrate the primary CI path from x86 to ARM runners, reducing costs and providing native aarch64 build+test coverage.

Changes

Moved to ARM runners (runner-arm64)

  • depends-linux64 (shared depends for linux64, fuzz, sqlite, ubsan)
  • src-linux64 + test-linux64 (primary native build+test)
  • src-linux64_fuzz (fuzz build)
  • src-linux64_sqlite + test-linux64_sqlite (SQLite build+test)
  • src-linux64_ubsan + test-linux64_ubsan (UBSan build+test)
  • multiprocess + tsan were already on ARM — no change

Removed

  • depends-aarch64-linux + src-aarch64-linux — the cross-compile job for aarch64-linux-gnu from x86 runners. We don't ship arm-linux-gnueabihf binaries, and native aarch64 coverage is now provided by the migrated jobs.
  • ci/test/00_setup_env_aarch64.sh — the cross-compile setup script

Remaining on x86 (runner-amd64)

  • nowallet (build + test) — sole native x86_64 coverage
  • mac, win64 — cross-compile targets
  • lint — architecture-independent

Setup script fix

Updated ci/test/00_setup_env_native_qt5.sh to dynamically detect HOST based on uname -m instead of hardcoding x86_64-pc-linux-gnu, matching the pattern already used by multiprocess and tsan setup scripts.

Validation

  • Verified all moved jobs reference runner-arm64 in build.yml
  • Verified 00_setup_env_native_qt5.sh uses the same arch-detection pattern as 00_setup_env_native_multiprocess.sh and 00_setup_env_native_tsan.sh
  • Verified fuzz, sqlite, and ubsan setup scripts don't hardcode HOST (they use config.guess which auto-detects)
  • Verified previous release binaries exist for aarch64-linux-gnu (needed by linux64's DOWNLOAD_PREVIOUS_RELEASES)
  • No references to deleted depends-aarch64-linux or src-aarch64-linux remain in build.yml

Move depends-linux64 and its consumers (linux64, fuzz, sqlite, ubsan)
to ARM runners, making aarch64 the primary CI architecture. This
includes both build and test stages.

Drop the aarch64-linux cross-compile job (depends + src) and its
setup env script since we don't ship arm-linux-gnueabihf binaries
and now have native aarch64 coverage through the migrated jobs.

Jobs remaining on x86:
- nowallet (build + test): sole x86_64 native coverage
- mac, win64: cross-compile targets (x86 host)
- lint: architecture-independent

Update 00_setup_env_native_qt5.sh to dynamically detect HOST based
on the runner architecture instead of hardcoding x86_64.
@thepastaclaw
Copy link
Author

@coderabbitai review

@coderabbitai
Copy link

coderabbitai bot commented Mar 16, 2026

✅ Actions performed

Review triggered.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

@github-actions
Copy link

github-actions bot commented Mar 16, 2026

✅ No Merge Conflicts Detected

This PR currently has no conflicts with other open PRs.

@coderabbitai
Copy link

coderabbitai bot commented Mar 16, 2026

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro

Run ID: 5ef076b2-12f1-4dde-b2b0-d59e14029c24

📥 Commits

Reviewing files that changed from the base of the PR and between 9985e10 and 936cc6c.

📒 Files selected for processing (4)
  • .github/workflows/build.yml
  • ci/dash/matrix.sh
  • ci/test/00_setup_env_aarch64.sh
  • ci/test/00_setup_env_native_qt5.sh
💤 Files with no reviewable changes (1)
  • ci/test/00_setup_env_aarch64.sh

Walkthrough

The changes restructure CI/CD workflows and environment setup scripts, primarily removing aarch64 Linux build support and realigning the build infrastructure. The GitHub Actions build workflow is updated to remove aarch64-specific jobs and rename linux64 builds, with runner targets changing from amd64 to arm64 across multiple jobs. The CI matrix script removes aarch64-linux initialization, and the corresponding environment setup script is deleted entirely. The native Qt5 setup script is enhanced with architecture detection logic based on system properties (uname and dpkg output) and new environment variable exports for test execution and download configuration.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~15 minutes

🚥 Pre-merge checks | ✅ 3
✅ Passed checks (3 passed)
Check name Status Explanation
Title check ✅ Passed The title accurately summarizes the primary change: migrating CI jobs from x86 to ARM runners, which aligns with the core objective of the changeset.
Description check ✅ Passed The description is comprehensive and directly related to the changeset, detailing the jobs moved to ARM runners, removed cross-compile jobs, and the setup script fix.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
📝 Coding Plan
  • Generate coding plan for human review comments

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Tip

CodeRabbit can generate a title for your PR based on the changes with custom instructions.

Set the reviews.auto_title_instructions setting to generate a title for your PR based on the changes in the PR with custom instructions.

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