Skip to content

Harden iOS CI retries for runner and gem flakes - #58809

Closed
cortinico wants to merge 1 commit into
react:mainfrom
cortinico:export-D122967026
Closed

cortinico wants to merge 1 commit into
react:mainfrom
cortinico:export-D122967026

Conversation

@cortinico

@cortinico cortinico commented Oct 2, 2026 •

Copy link
Copy Markdown
Contributor

Summary:
Two unrelated iOS CI jobs failed on main commit cd2de187e8878119896159371225acbb9dfa5d9c. The commit itself only changed Android autolinking code, so neither failure was attributable to its product change. This patch hardens the two affected CI paths without weakening their final failure semantics.

Dynamic-framework Bundler setup

Failed job: https://github.com/react/react-native/actions/runs/36918732275/job/110559233737

The Debug dynamic-framework job failed while ruby/setup-ruby was performing its implicit one-shot Bundler installation. Its Release sibling passed in the same workflow, and both lanes passed on the immediately preceding main commit. That evidence points to a transient RubyGems/Bundler setup failure rather than a deterministic React Native regression.

Disable the implicit installation with bundler: none, read the exact pinned Bundler version from Gemfile.lock, and install it with three bounded attempts and 10-/20-second backoff. The script fails immediately if the lockfile version cannot be determined, and persistent installation failures remain red after the third attempt.

E2E hosted-runner loss

Failed job: https://github.com/react/react-native/actions/runs/36918732275/job/110577294552

The Release E2E matrix cell lost communication with its GitHub-hosted runner before reaching the step that writes its explicit status output. The downstream report job checked only that output. Because runner loss left the output empty rather than setting it to failure, the report job incorrectly emitted success and skipped the existing fresh-runner retry chain.

Also inspect needs.test.result. Any non-successful matrix result now propagates failure and activates the existing retry jobs, while successful jobs and explicit test failures retain their previous behaviour. This changes failure reporting only; it does not alter E2E test execution.

Changelog: [Internal]

Differential Revision: D122967026

@meta-cla meta-cla Bot added the CLA Signed This label is managed by the Facebook bot. Authors need to sign the CLA before a PR can be reviewed. label Oct 2, 2026
@facebook-github-tools facebook-github-tools Bot added p: Facebook Partner: Facebook Partner labels Oct 2, 2026
@cortinico
cortinico force-pushed the export-D122967026 branch 3 times, most recently from 9fccf9d to 7ba1860 Compare October 2, 2026 07:58
Summary:
Two unrelated iOS CI jobs failed on `main` commit `cd2de187e8878119896159371225acbb9dfa5d9c`. The commit itself only changed Android autolinking code, so neither failure was attributable to its product change. This patch hardens the two affected CI paths without weakening their final failure semantics.

### Dynamic-framework Bundler setup

Failed job: https://github.com/react/react-native/actions/runs/36918732275/job/110559233737

The Debug dynamic-framework job failed while `ruby/setup-ruby` was performing its implicit one-shot Bundler installation. Its Release sibling passed in the same workflow, and both lanes passed on the immediately preceding `main` commit. That evidence points to a transient RubyGems/Bundler setup failure rather than a deterministic React Native regression.

Disable the implicit installation with `bundler: none`, read the exact pinned Bundler version from `Gemfile.lock`, and install it with three bounded attempts and 10-/20-second backoff. The script fails immediately if the lockfile version cannot be determined, and persistent installation failures remain red after the third attempt.

### E2E hosted-runner loss

Failed job: https://github.com/react/react-native/actions/runs/36918732275/job/110577294552

The Release E2E matrix cell lost communication with its GitHub-hosted runner before reaching the step that writes its explicit status output. The downstream report job checked only that output. Because runner loss left the output empty rather than setting it to `failure`, the report job incorrectly emitted success and skipped the existing fresh-runner retry chain.

Also inspect `needs.test.result`. Any non-successful matrix result now propagates failure and activates the existing retry jobs, while successful jobs and explicit test failures retain their previous behaviour. This changes failure reporting only; it does not alter E2E test execution.

Changelog: [Internal]

Differential Revision: D122967026
@meta-codesync

meta-codesync Bot commented Oct 2, 2026

Copy link
Copy Markdown

@cortinico has exported this pull request. If you are a Meta employee, you can view the originating Diff in D122967026.

@meta-codesync meta-codesync Bot closed this in c69c54a Oct 2, 2026
@meta-codesync meta-codesync Bot added the Merged This PR has been merged. label Oct 2, 2026
@meta-codesync

meta-codesync Bot commented Oct 2, 2026

Copy link
Copy Markdown

This pull request has been merged in c69c54a.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

CLA Signed This label is managed by the Facebook bot. Authors need to sign the CLA before a PR can be reviewed. Merged This PR has been merged. meta-exported p: Facebook Partner: Facebook Partner

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant