You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
<!--
Please submit this PR as a draft initially.
Do not mark it as "Ready for review" until this PR meets the canonical
Definition of Ready For Review in `docs/readme/ready-for-review.md`.
In short: the template must be materially complete (not just section
titles
present), all status checks must be currently passing, and the only
expected
follow-up commits must be reviewer-driven.
-->
<!--
Automation: `.github/scripts/check-template-and-add-labels.ts` requires
the PR body
to contain every section title listed in
`.github/scripts/shared/template.ts` (exact
substring match). Do not delete **Screenshots/Recordings** or other
sections—even for
infra-only PRs. Use "N/A" (or a short note) under those headings
instead, or GitHub
applies **INVALID-PR-TEMPLATE**.
-->
## **Description**
**Goal:** Close **INFRA-3628 Phase 5b** — make Namespace-hosted CI jobs
use Namespace’s supported checkout path instead of treating them like
GitHub-hosted runners, without changing how **`runner_provider:
current`** behaves today.
**What we shipped:** Every place the workflow graph already chooses
Namespace via `runner_provider` now checks out with **nscloud checkout
on `namespace`** and keeps the **existing `actions/checkout` path on
`current`** (same majors / `if:` guards so the default path stays
equivalent). That covers the main **`ci`** graph, reusable builds and
node-modules setup, iOS/Android E2E build workflows, the callable
**`run-e2e-workflow`** runner, and the **smoke/regression report** jobs
that also land on Namespace Linux when trialing Namespace.
**E2E setup:** The shared **`setup-e2e-env`** composite accepts optional
**yarn** and **CocoaPods** per-attempt retry timeouts;
**`run-e2e-workflow`** raises the outer **`Set up E2E environment`** cap
for **Namespace + iOS** and passes those inputs so parallel iOS smoke is
less likely to die mid-install under contention. This is a stability
cushion; deeper Namespace CocoaPods cache work can follow the same
ticket / INFRA-3596 thread.
**Scope note:** No app or product behaviour changes — CI and composite
action YAML only.
## **Changelog**
CHANGELOG entry: null
## **Related issues**
Fixes:
[INFRA-3628](https://consensyssoftware.atlassian.net/browse/INFRA-3628)
## **Manual testing steps**
```gherkin
Feature: INFRA-3628 Namespace checkout pilot
Scenario: Current runner path is unchanged
Given ci (or downstream workflows) run with runner_provider current
When checkout steps execute
Then the same actions/checkout path runs as before and nscloud checkout is skipped
Scenario: Namespace runner path uses nscloud checkout
Given the same workflows run with runner_provider namespace
When checkout steps execute
Then nscloud checkout runs on Namespace profiles and actions/checkout is skipped
Scenario: Namespace iOS E2E smoke can finish environment setup more often
Given a Namespace dispatch with a full iOS smoke matrix
When each shard runs Set up E2E environment
Then setup is less likely to hit the previous hard timeout during CocoaPods under parallel load
```
## **Screenshots/Recordings**
N/A — infrastructure / CI only.
### **Before**
N/A
### **After**
N/A
## **Pre-merge author checklist**
- [x] I've followed [MetaMask Contributor
Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Mobile
Coding
Standards](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/CODING_GUIDELINES.md).
- [x] I've completed the PR template to the best of my ability
- [x] I've included tests if applicable (validated via `pull_request` CI
and Namespace `workflow_dispatch` trials on this branch)
- [x] I've documented my code using [JSDoc](https://jsdoc.app/) format
if applicable (N/A — YAML / workflow config only)
- [x] I've applied the right labels on the PR (see [labeling
guidelines](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/LABELING_GUIDELINES.md)).
Not required for external contributors.
#### Performance checks (if applicable)
N/A — no app or bundle changes.
- [ ] I've tested on Android
- Ideally on a mid-range device; emulator is acceptable
- [ ] I've tested with a power user scenario
- Use these [power-user
SRPs](https://consensyssoftware.atlassian.net/wiki/spaces/TL1/pages/edit-v2/401401446401?draftShareId=9d77e1e1-4bdc-4be1-9ebb-ccd916988d93)
to import wallets with many accounts and tokens
- [ ] I've instrumented key operations with Sentry traces for production
performance metrics
- See [`trace()`](/app/util/trace.ts) for usage and
[`addToken`](/app/components/Views/AddAsset/components/AddCustomToken/AddCustomToken.tsx#L274)
for an example
For performance guidelines and tooling, see the [Performance
Guide](https://consensyssoftware.atlassian.net/wiki/spaces/TL1/pages/400085549067/Performance+Guide+for+Engineers).
## **Pre-merge reviewer checklist**
- [ ] I've manually tested the PR (e.g. pull and build branch, run the
app, test code being changed).
- [ ] I confirm that this PR addresses all acceptance criteria described
in the ticket it closes and includes the necessary testing evidence such
as recordings and or screenshots.
[INFRA-3628]:
https://consensyssoftware.atlassian.net/browse/INFRA-3628?atlOrigin=eyJpIjoiNWRkNTljNzYxNjVmNDY3MDlhMDU5Y2ZhYzA5YTRkZjUiLCJwIjoiZ2l0aHViLWNvbS1KU1cifQ
<!-- CURSOR_SUMMARY -->
---
> [!NOTE]
> **Medium Risk**
> Touches a broad set of CI workflows and checkout paths; while behavior
is intended to be equivalent for `runner_provider: current`,
misconfigured `if:` guards or checkout options could break builds/tests
specifically on Namespace runners.
>
> **Overview**
> Updates the CI workflow graph (main `ci.yml`, reusable build
workflows, E2E smoke/regression runners, and `setup-node-modules`) to
**conditionally use `namespacelabs/nscloud-checkout-action` when
`runner_provider == 'namespace'`**, while keeping the existing
`actions/checkout` path for `current`.
>
> Extends the `setup-e2e-env` composite action with new inputs for
**per-attempt retry timeouts** (JS deps/Corepack and CocoaPods), and
updates `run-e2e-workflow.yml` to increase the overall setup timeout for
**Namespace+iOS** and pass larger timeout values into the composite.
>
> <sup>Reviewed by [Cursor Bugbot](https://cursor.com/bugbot) for commit
d58574f. Bugbot is set up for automated
code reviews on this repo. Configure
[here](https://www.cursor.com/dashboard/bugbot).</sup>
<!-- /CURSOR_SUMMARY -->
---------
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Ale Som <560018+alucardzom@users.noreply.github.com>
Copy file name to clipboardExpand all lines: .github/actions/setup-e2e-env/action.yml
+14-3Lines changed: 14 additions & 3 deletions
Original file line number
Diff line number
Diff line change
@@ -91,6 +91,17 @@ inputs:
91
91
description: 'Runner provider forwarded from the caller workflow chain. When set to "namespace", toolchain-install steps short-circuit if the pinned version is already on the image. Default "current" preserves byte-identical behaviour on existing GitHub-hosted / Cirrus runners.'
92
92
required: false
93
93
default: 'current'
94
+
js-retry-timeout-minutes:
95
+
description: >-
96
+
Per-attempt timeout (minutes) for Corepack and yarn install retry steps.
97
+
Namespace E2E matrix jobs often need more headroom (INFRA-3596).
98
+
required: false
99
+
default: '15'
100
+
pod-install-timeout-minutes:
101
+
description: >-
102
+
Per-attempt timeout (minutes) for the CocoaPods install retry step (iOS only).
0 commit comments