Skip to content

Fix silent CI failure on macOS arm64 build - #2706

Open
sensei-hacker wants to merge 3 commits into
iNavFlight:maintenance-9.xfrom
sensei-hacker:fix-configurator-ci-macos-arm64-oom
Open

Fix silent CI failure on macOS arm64 build#2706
sensei-hacker wants to merge 3 commits into
iNavFlight:maintenance-9.xfrom
sensei-hacker:fix-configurator-ci-macos-arm64-oom

Conversation

@sensei-hacker

Copy link
Copy Markdown
Member

Summary

  • The build-mac-arm64 CI job OOMs during electron-builder packaging, finishes in ~80s instead of the expected 4-5 min, uploads no artifact, and still reports success — every PR silently ships without a real arm64 build check.
  • Adds NODE_OPTIONS: --max-old-space-size=4096 to the arm64 build step, mirroring the identical setting already present on the working x64 sibling step.
  • Adds if-no-files-found: error to all 15 actions/upload-artifact@v4 steps in the file (not just arm64), so a missing build output fails the job loudly instead of silently passing, on any platform.

Fixes #2701

Test plan

  • YAML validated with yaml.safe_load
  • Confirmed all 15 upload-artifact steps now have if-no-files-found: error, none missed
  • Confirmed the arm64 NODE_OPTIONS block is an exact match of the existing working x64 step
  • CI on this PR: arm64 job should now take a real build duration (comparable to x64, not ~80s) and produce an artifact

The arm64 job OOMs during electron-builder packaging with no
NODE_OPTIONS memory bump (unlike the x64 job, which already has it),
finishes in ~80s instead of the expected 4-5 min, uploads no artifact,
and still reports success. Add the same --max-old-space-size=4096
already used for x64, and add if-no-files-found: error to every
upload-artifact step so a missing build output fails the job instead
of silently passing, on any platform.
@qodo-code-review

Copy link
Copy Markdown
Contributor

ⓘ Qodo reviews are paused because the subscription is no longer active. Ask your workspace admin to reactivate the subscription to resume reviews. Manage billing

@qodo-free-for-open-source-projects

Copy link
Copy Markdown

PR Summary by Qodo

Fail CI loudly on missing artifacts; add memory bump for macOS arm64 packaging

🐞 Bug fix ⚙️ Configuration changes 🕐 10-20 Minutes

Grey Divider

AI Description

• Add Node heap limit to prevent macOS arm64 electron-builder OOM during packaging.
• Make artifact uploads fail when outputs are missing to avoid silent green builds.
• Ensure arm64 build time/artifacts reflect real build success across platforms.
Diagram

graph TD
  A[".github/workflows/ci.yml"] --> B["build-mac-arm64 job"] --> C["Package app (yarn make)"] --> D["NODE_OPTIONS: 4GB"]
  A --> E["All upload-artifact steps"] --> F{{"Fail if no files"}} --> G[("GitHub Artifacts")]

  subgraph Legend
    direction LR
    _file["Workflow file"] ~~~ _job["CI job"] ~~~ _decision{{"Failure gate"}} ~~~ _store[("Artifacts")]
  end
Loading
High-Level Assessment

The following are alternative approaches to this PR:

1. Pre-upload validation step (explicit file existence checks)
  • ➕ Can provide clearer, custom error messages per expected artifact
  • ➕ Allows conditional logic (e.g., print directory listings on failure)
  • ➖ More YAML/logic to maintain across many jobs
  • ➖ Duplicates behavior already supported by upload-artifact
2. Move NODE_OPTIONS into shared env for all packaging jobs
  • ➕ Avoids drift between x64/arm64 configs
  • ➕ Makes memory policy explicit and centralized
  • ➖ May unintentionally increase memory for steps that don’t need it
  • ➖ Requires refactoring job definitions / shared composites if not already present

Recommendation: Current approach is the right baseline: adding the same NODE_OPTIONS used by the working macOS x64 job addresses the likely OOM root cause with minimal change, and setting if-no-files-found: error on all upload-artifact steps closes the broader class of silent-CI-success failures across platforms. Consider an additional explicit validation/logging step only if you need richer diagnostics than upload-artifact provides.

Files changed (1) +17 / -0

Other (1) +17 / -0
ci.ymlHarden CI artifacts and fix macOS arm64 packaging OOM behavior +17/-0

Harden CI artifacts and fix macOS arm64 packaging OOM behavior

• Adds NODE_OPTIONS --max-old-space-size=4096 to the macOS arm64 packaging step to avoid electron-builder OOM exits. Updates every actions/upload-artifact@v4 invocation to use if-no-files-found: error so missing outputs fail the job rather than silently passing.

.github/workflows/ci.yml

@qodo-free-for-open-source-projects

Copy link
Copy Markdown

Code Review by Qodo

🐞 Bugs (0) 📘 Rule violations (0) 📎 Requirement gaps (0)

Grey Divider

Great, no issues found!

Qodo reviewed your code and found no material issues that require review

Grey Divider

Tip of the day
💡 Did you know, you can route each action level your way: inline, summary, both, or drop

More tips ↗ | Customize Qodo ↗ | Qodo docs ↗

Grey Divider

Qodo Logo

@github-actions

github-actions Bot commented Aug 17, 2026

Copy link
Copy Markdown

Configurator test build ready — commit 82946cf

Download build artifacts for PR #2706

Available platforms (scroll to the Artifacts section at the bottom of the run page):

  • Windows x64 (ZIP, MSI) and x32 (ZIP, MSI)
  • macOS arm64 (ZIP, DMG) and x64 (ZIP, DMG)
  • Linux x64 (DEB, RPM, ZIP) and aarch64 (DEB, RPM, ZIP)

A GitHub login is required to download artifacts. Build is for testing only.

@sonarqubecloud

Copy link
Copy Markdown

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