ci: run Linux CI on Namespace shadow behind NAMESPACE_SHADOW_LINUX_AUTO_DISPATCH#33387
ci: run Linux CI on Namespace shadow behind NAMESPACE_SHADOW_LINUX_AUTO_DISPATCH#33387alucardzom wants to merge 2 commits into
Conversation
|
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. |
PR template — items to address before "Ready for review"Warnings — informational, address before merging:
See docs/readme/ready-for-review.md for the full Definition of Ready for Review. |
1 similar comment
PR template — items to address before "Ready for review"Warnings — informational, address before merging:
See docs/readme/ready-for-review.md for the full Definition of Ready for Review. |
🔍 Smart E2E Test Selection
click to see 🤖 AI reasoning detailsE2E Test Selection:
No application source code, test specs, page objects, selectors, flows, or performance-sensitive code was modified. These are purely CI infrastructure plumbing changes that control when jobs run on Namespace shadow infrastructure — they have zero impact on any user-facing functionality or test behavior. No E2E smoke tags are warranted. Performance Test Selection: |
|



Description
Extends the Namespace shadow CI (introduced in #32893) so we can also benchmark Linux CI jobs on Namespace runners, controlled by a second repo Actions variable.
What is the reason for the change?
The Namespace shadow currently runs iOS-only (gated by
NAMESPACE_SHADOW_AUTO_DISPATCH, enabled since Jul 13). The next step of the Namespace evaluation is getting Linux CI runs (lint/dedupe/scripts/unit/component/integration tests) onnamespace-profile-metamask-ci-linuxrunners, toggleable independently from the iOS pipeline.What is the improvement/solution?
A namespace shadow run is now composed of two independently-flagged pipelines:
NAMESPACE_SHADOW_AUTO_DISPATCH(existing)NAMESPACE_SHADOW_LINUX_AUTO_DISPATCH(new)truefalse/unsetfalse/unsettruetruetruefalse/unsetfalse/unsetworkflow_dispatchyields a near-empty scaffolding runThe Linux pipeline covers everything that runs on Linux runners — the quality jobs on
namespace-profile-metamask-ci-linuxand Android build + Android E2E smoke onnamespace-profile-metamask-android-build— matching what the Phase 5 benchmark exercised (verified against Phase 5 shadow run 27025678155, where all Android jobs ran on Namespace runners).ci-namespace-shadow.yml— the dispatch gate now ORs the two flags: PR/push auto-dispatch happens when either variable istrue(manualworkflow_dispatchalways works; fork-PR guard unchanged).ci.yml—dedupe,git-safe-dependencies,scripts,js-bundle-size-check,check-workflows,prepare-ci-js-deps,unit-tests,component-view-tests,integration-tests,merge-unit-and-component-view-tests,build-android-apks,e2e-smoke-tests-androidnow use(inputs.runner_provider != 'namespace' || vars.NAMESPACE_SHADOW_LINUX_AUTO_DISPATCH == 'true')instead of a hard namespace skip. All of them already had namespace runner ternaries and nscloud checkout/cache/artifact steps from the Phase 5 benchmark — no step changes needed.prepare-ci-js-depsis included becausemerge-unit-and-component-view-testsexplicitly requires it to have succeeded.integration-tests(added toci.ymlafter ci: re-enable Namespace shadow CI (iOS-only) behind NAMESPACE_SHADOW_AUTO_DISPATCH #32893) previously had no shadow gate at all; it now follows the same BITRISE/NAMESPACE-SHADOW pattern (skipped on Bitrise shadow, flag-gated on Namespace shadow).check-diffandbuild-ios-apps(the macOS entry jobs) are now gated onNAMESPACE_SHADOW_AUTO_DISPATCH == 'true'for namespace runs, so a Linux-only shadow uses no macOS runners. Downstream iOS jobs cascade-skip vianeeds.appium-smoke-tests-android(pinned torunner_provider: current/Cirrus until Namespace parity is ready, and it cannot download namespace-built APKs — they live in Namespace's artifact store, not GitHub's), performance tests,report-fixture-validation(PR comments), SonarCloud analysis + quality gate (would collide with the real run's analysis of the same commit),cleanup-ci-js-deps,check-all-jobs-pass,log-merge-group-failure.Normal CI runs (
runner_providerempty/current) and Bitrise shadow runs are unaffected — every new clause short-circuits to the previous behavior when the provider is notnamespace.Rollout:
Create the new variable (can be prepared in advance — merging this PR alone changes nothing for Linux):
Greenlight Linux auto-dispatch: set the variable to
true.Kill switch (either pipeline, no code PR needed): set the respective variable back to
false.Pre-merge verification (done): with
NAMESPACE_SHADOW_LINUX_AUTO_DISPATCH=trueandNAMESPACE_SHADOW_AUTO_DISPATCH=false, "CI (Namespace shadow)" was dispatched on this branch — shadow ci.yml run (auto-dispatched by theready_for_reviewevent, superseding the initial manual run via the ci.yml concurrency group — the auto-dispatch gate itself verified in the process) — in parallel with the normal pull_request run:namespace-profile-metamask-ci-linux✅Build Android E2E APKs+ Android E2E smoke ran onnamespace-profile-metamask-android-build✅Check diffandBuild iOS Apps(and all downstream iOS jobs) skipped — the iOS flag gate works ✅skippedwhile both flags werefalse✅Changelog
CHANGELOG entry: null
Related issues
Fixes: N/A — no Jira ticket yet (number can be added to the PR title later). Related prior work: #32893 (
NAMESPACE_SHADOW_AUTO_DISPATCH, iOS-only namespace shadow), INFRA-3631 / INFRA-3678 (Namespace evaluation), INFRA-3679 (Bitrise shadow pattern).Manual testing steps
Screenshots/Recordings
CI workflow change — evidence is the verification runs:
Before
Namespace shadow runs were iOS-only: example run (Linux/Android jobs hard-skipped for
runner_provider=namespace).After
Linux-pipeline shadow run with
NAMESPACE_SHADOW_LINUX_AUTO_DISPATCH=true, iOS flag off: shadow run 29453403464 — Linux + Android jobs on Namespace runners, iOS jobs skipped, parallel normal PR run unaffected.Pre-merge author checklist
Performance checks (if applicable)
trace()for usage andaddTokenfor an exampleFor performance guidelines and tooling, see the Performance Guide.
Pre-merge reviewer checklist