Skip to content

ci(INFRA-3628): Phase 5b - nscloud checkout action#30139

Merged
alucardzom merged 10 commits into
mainfrom
phase5b/nscloud-checkout-action
May 14, 2026
Merged

ci(INFRA-3628): Phase 5b - nscloud checkout action#30139
alucardzom merged 10 commits into
mainfrom
phase5b/nscloud-checkout-action

Conversation

@bsgrigorov

@bsgrigorov bsgrigorov commented May 13, 2026

Copy link
Copy Markdown
Contributor

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

Manual testing steps

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

  • I've followed MetaMask Contributor Docs and MetaMask Mobile Coding Standards.
  • I've completed the PR template to the best of my ability
  • I've included tests if applicable (validated via pull_request CI and Namespace workflow_dispatch trials on this branch)
  • I've documented my code using JSDoc format if applicable (N/A — YAML / workflow config only)
  • I've applied the right labels on the PR (see labeling guidelines). 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 to import wallets with many accounts and tokens
  • I've instrumented key operations with Sentry traces for production performance metrics

For performance guidelines and tooling, see the Performance Guide.

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.

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.

Reviewed by Cursor Bugbot for commit d58574f. Bugbot is set up for automated code reviews on this repo. Configure here.

@github-actions

Copy link
Copy Markdown
Contributor

CLA Signature Action: All authors have signed the CLA. You may need to manually re-run the blocking PR check if it doesn't pass in a few minutes.

@bsgrigorov bsgrigorov force-pushed the phase5b/nscloud-checkout-action branch 2 times, most recently from cb5e998 to bc641cd Compare May 13, 2026 18:50
@bsgrigorov bsgrigorov marked this pull request as ready for review May 13, 2026 19:48
@bsgrigorov bsgrigorov requested review from a team as code owners May 13, 2026 19:49
bsgrigorov and others added 7 commits May 13, 2026 15:41
Co-authored-by: Cursor <cursoragent@cursor.com>
Dual checkout for jobs that branch on runner_provider: check-diff,
git-safe-dependencies, scripts (fetch-depth parity), js-bundle-size-check,
check-workflows, ship-js-bundle-size-check, unit and component view tests,
merge coverage job, smart E2E selection (sparse parity), fixture report,
SonarCloud (full history parity), quality gate, and ci status gate.

Co-authored-by: Cursor <cursoragent@cursor.com>
Namespace path uses nscloud-checkout-action with the same ref, fetch-depth,
and submodule inputs as actions/checkout@v4 on the current path.

Co-authored-by: Cursor <cursoragent@cursor.com>
Add namespacelabs/nscloud-checkout-action alongside actions/checkout
for prepare, build matrix, emit-build-metadata in build.yml; first
step in build-android-e2e and build-ios-e2e when runner_provider is namespace.

Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
… pressure

Co-authored-by: Cursor <cursoragent@cursor.com>
@bsgrigorov bsgrigorov force-pushed the phase5b/nscloud-checkout-action branch from bc641cd to b449d9d Compare May 13, 2026 22:41
@codecov-commenter

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 81.79%. Comparing base (3751d9a) to head (fda7f8e).
⚠️ Report is 166 commits behind head on main.

Additional details and impacted files
@@            Coverage Diff             @@
##             main   #30139      +/-   ##
==========================================
+ Coverage   81.54%   81.79%   +0.24%     
==========================================
  Files        5343     5393      +50     
  Lines      142128   143839    +1711     
  Branches    32411    32848     +437     
==========================================
+ Hits       115899   117647    +1748     
+ Misses      18299    18170     -129     
- Partials     7930     8022      +92     

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@alucardzom alucardzom enabled auto-merge May 14, 2026 14:15
@github-project-automation github-project-automation Bot moved this to Needs dev review in PR review queue May 14, 2026
@github-actions

Copy link
Copy Markdown
Contributor

🔍 Smart E2E Test Selection

  • Selected E2E tags: None (no tests recommended)
  • Selected Performance tags: None (no tests recommended)
  • Risk Level: low
  • AI Confidence: 92%
click to see 🤖 AI reasoning details

E2E Test Selection:
All 11 changed files are CI/workflow infrastructure files with no application code changes. The changes introduce:

  1. Namespace checkout action: Adding namespacelabs/nscloud-checkout-action as an alternative to actions/checkout for Namespace-hosted runners across all workflows (build.yml, ci.yml, build-android-e2e.yml, build-ios-e2e.yml, run-e2e-smoke-tests-android.yml, run-e2e-smoke-tests-ios.yml, run-e2e-regression-tests-android.yml, run-e2e-regression-tests-ios.yml, run-e2e-workflow.yml, setup-node-modules.yml). The existing actions/checkout steps remain intact with if: ${{ inputs.runner_provider != 'namespace' }} guards.

  2. Configurable timeouts (setup-e2e-env/action.yml): Making js-retry-timeout-minutes and pod-install-timeout-minutes configurable inputs (defaulting to 15 min) instead of hardcoded values, to give Namespace iOS smoke runs more headroom (INFRA-3596).

  3. Increased timeouts for Namespace iOS (run-e2e-workflow.yml): Setting timeout-minutes to 45 (vs 25) for Namespace iOS runs, and passing 20/22 minute timeout values for JS/pod install steps on Namespace runners.

These are purely additive CI infrastructure changes:

  • No app source code modified
  • No test specs or page objects modified
  • No test framework or fixture changes
  • No changes to test logic or test data
  • Existing GitHub-hosted runner behavior is completely preserved
  • Changes only affect Namespace runner checkout and timeout behavior

Running E2E tests would not validate these CI infrastructure changes — they would only validate app functionality which hasn't changed. No E2E test tags are warranted.

Performance Test Selection:
All changes are CI infrastructure only (workflow YAML files, GitHub Actions). No application code, UI components, controllers, data loading, or performance-sensitive paths were modified. Performance tests measure app responsiveness and render times, which are unaffected by CI checkout action changes or timeout configuration adjustments.

View GitHub Actions results

@sonarqubecloud

Copy link
Copy Markdown

@alucardzom alucardzom added this pull request to the merge queue May 14, 2026
@github-project-automation github-project-automation Bot moved this from Needs dev review to Review finalised - Ready to be merged in PR review queue May 14, 2026
Merged via the queue into main with commit b2e95cf May 14, 2026
145 of 155 checks passed
@alucardzom alucardzom deleted the phase5b/nscloud-checkout-action branch May 14, 2026 19:12
@github-project-automation github-project-automation Bot moved this from Review finalised - Ready to be merged to Merged, Closed or Archived in PR review queue May 14, 2026
@github-actions github-actions Bot locked and limited conversation to collaborators May 14, 2026
@metamaskbotv2 metamaskbotv2 Bot added the release-7.78.0 Issue or pull request that will be included in release 7.78.0 label May 14, 2026
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

release-7.78.0 Issue or pull request that will be included in release 7.78.0 size-M team-dev-ops DevOps team

Projects

Archived in project

Development

Successfully merging this pull request may close these issues.

5 participants