6262 check-diff :
6363 name : Check diff
6464 runs-on : ${{ inputs.runner_provider == 'namespace' && 'namespace-profile-metamask-ios-build' || 'macos-latest' }}
65- if : ${{ needs.get_requirements.outputs.skip_everything != 'true' }}
65+ # NAMESPACE-SHADOW: macOS job — runs on Namespace shadow only when NAMESPACE_SHADOW_AUTO_DISPATCH=true (iOS pipeline)
66+ if : ${{ needs.get_requirements.outputs.skip_everything != 'true' && (inputs.runner_provider != 'namespace' || vars.NAMESPACE_SHADOW_AUTO_DISPATCH == 'true') }}
6667 needs :
6768 - get_requirements
6869 steps :
@@ -170,8 +171,8 @@ jobs:
170171 dedupe :
171172 name : Dedupe
172173 runs-on : ${{ inputs.runner_provider == 'namespace' && 'namespace-profile-metamask-ci-linux' || 'ubuntu-latest' }}
173- # BITRISE/NAMESPACE-SHADOW: skip for iOS-only shadow benchmark ( INFRA-3679) — revert to enable full pipeline
174- if : ${{ needs.get_requirements.outputs.skip_everything != 'true' && inputs.runner_provider != 'bitrise' && inputs.runner_provider != 'namespace' }}
174+ # BITRISE/NAMESPACE-SHADOW: skipped on Bitrise shadow (iOS-only, INFRA-3679); Namespace shadow runs this Linux job only when NAMESPACE_SHADOW_LINUX_AUTO_DISPATCH=true
175+ if : ${{ needs.get_requirements.outputs.skip_everything != 'true' && inputs.runner_provider != 'bitrise' && ( inputs.runner_provider != 'namespace' || vars.NAMESPACE_SHADOW_LINUX_AUTO_DISPATCH == 'true') }}
175176 needs :
176177 - get_requirements
177178 steps :
@@ -219,8 +220,8 @@ jobs:
219220 git-safe-dependencies :
220221 name : Run `@lavamoat/git-safe-dependencies`
221222 runs-on : ${{ inputs.runner_provider == 'namespace' && 'namespace-profile-metamask-ci-linux' || 'ubuntu-latest' }}
222- # BITRISE/NAMESPACE-SHADOW: skip for iOS-only shadow benchmark ( INFRA-3679) — revert to enable full pipeline
223- if : ${{ needs.get_requirements.outputs.skip_everything != 'true' && inputs.runner_provider != 'bitrise' && inputs.runner_provider != 'namespace' }}
223+ # BITRISE/NAMESPACE-SHADOW: skipped on Bitrise shadow (iOS-only, INFRA-3679); Namespace shadow runs this Linux job only when NAMESPACE_SHADOW_LINUX_AUTO_DISPATCH=true
224+ if : ${{ needs.get_requirements.outputs.skip_everything != 'true' && inputs.runner_provider != 'bitrise' && ( inputs.runner_provider != 'namespace' || vars.NAMESPACE_SHADOW_LINUX_AUTO_DISPATCH == 'true') }}
224225 needs :
225226 - get_requirements
226227 steps :
@@ -261,8 +262,8 @@ jobs:
261262 scripts :
262263 name : Run `${{ matrix.scripts }}`
263264 runs-on : ${{ inputs.runner_provider == 'namespace' && 'namespace-profile-metamask-ci-linux' || 'ubuntu-latest' }}
264- # BITRISE/NAMESPACE-SHADOW: skip for iOS-only shadow benchmark ( INFRA-3679) — revert to enable full pipeline
265- if : ${{ needs.get_requirements.outputs.skip_everything != 'true' && inputs.runner_provider != 'bitrise' && inputs.runner_provider != 'namespace' }}
265+ # BITRISE/NAMESPACE-SHADOW: skipped on Bitrise shadow (iOS-only, INFRA-3679); Namespace shadow runs this Linux job only when NAMESPACE_SHADOW_LINUX_AUTO_DISPATCH=true
266+ if : ${{ needs.get_requirements.outputs.skip_everything != 'true' && inputs.runner_provider != 'bitrise' && ( inputs.runner_provider != 'namespace' || vars.NAMESPACE_SHADOW_LINUX_AUTO_DISPATCH == 'true') }}
266267 needs :
267268 - get_requirements
268269 strategy :
@@ -307,22 +308,6 @@ jobs:
307308 command : yarn install --immutable
308309 - name : Clean state and following up dependencies installation
309310 run : yarn setup:github-ci --node
310- - name : Restore ESLint cache
311- if : ${{ matrix.scripts == 'lint' }}
312- uses : actions/cache@v4
313- with :
314- path : .eslintcache
315- key : eslintcache-${{ runner.os }}-${{ github.run_id }}
316- restore-keys : |
317- eslintcache-${{ runner.os }}-
318- - name : Restore TypeScript incremental build cache
319- if : ${{ matrix.scripts == 'lint:tsc' }}
320- uses : actions/cache@v4
321- with :
322- path : tsconfig.tsbuildinfo
323- key : tsbuildinfo-${{ runner.os }}-${{ github.run_id }}
324- restore-keys : |
325- tsbuildinfo-${{ runner.os }}-
326311 - run : yarn ${{ matrix['scripts'] }}
327312 - name : Require clean working directory
328313 shell : bash
@@ -337,8 +322,8 @@ jobs:
337322 js-bundle-size-check :
338323 name : JS bundle size check
339324 runs-on : ${{ inputs.runner_provider == 'namespace' && 'namespace-profile-metamask-ci-linux' || 'ubuntu-latest' }}
340- # BITRISE/NAMESPACE-SHADOW: skip for iOS-only shadow benchmark ( INFRA-3679) — revert to enable full pipeline
341- if : ${{ needs.get_requirements.outputs.skip_everything != 'true' && inputs.runner_provider != 'bitrise' && inputs.runner_provider != 'namespace' }}
325+ # BITRISE/NAMESPACE-SHADOW: skipped on Bitrise shadow (iOS-only, INFRA-3679); Namespace shadow runs this Linux job only when NAMESPACE_SHADOW_LINUX_AUTO_DISPATCH=true
326+ if : ${{ needs.get_requirements.outputs.skip_everything != 'true' && inputs.runner_provider != 'bitrise' && ( inputs.runner_provider != 'namespace' || vars.NAMESPACE_SHADOW_LINUX_AUTO_DISPATCH == 'true') }}
342327 needs :
343328 - get_requirements
344329 permissions :
@@ -650,8 +635,8 @@ jobs:
650635 check-workflows :
651636 name : Check workflows
652637 runs-on : ${{ inputs.runner_provider == 'namespace' && 'namespace-profile-metamask-ci-linux' || 'ubuntu-latest' }}
653- # BITRISE/NAMESPACE-SHADOW: skip for iOS-only shadow benchmark ( INFRA-3679) — revert to enable full pipeline
654- if : ${{ needs.get_requirements.outputs.skip_everything != 'true' && inputs.runner_provider != 'bitrise' && inputs.runner_provider != 'namespace' }}
638+ # BITRISE/NAMESPACE-SHADOW: skipped on Bitrise shadow (iOS-only, INFRA-3679); Namespace shadow runs this Linux job only when NAMESPACE_SHADOW_LINUX_AUTO_DISPATCH=true
639+ if : ${{ needs.get_requirements.outputs.skip_everything != 'true' && inputs.runner_provider != 'bitrise' && ( inputs.runner_provider != 'namespace' || vars.NAMESPACE_SHADOW_LINUX_AUTO_DISPATCH == 'true') }}
655640 needs :
656641 - get_requirements
657642 steps :
@@ -672,8 +657,8 @@ jobs:
672657 prepare-ci-js-deps :
673658 name : Prepare CI JS dependencies
674659 runs-on : ${{ inputs.runner_provider == 'namespace' && 'namespace-profile-metamask-ci-linux' || 'ubuntu-latest' }}
675- # BITRISE/NAMESPACE-SHADOW: skip for iOS-only shadow benchmark ( INFRA-3679) — revert to enable full pipeline
676- if : ${{ needs.get_requirements.outputs.skip_everything != 'true' && inputs.runner_provider != 'bitrise' && inputs.runner_provider != 'namespace' }}
660+ # BITRISE/NAMESPACE-SHADOW: skipped on Bitrise shadow (iOS-only, INFRA-3679); Namespace shadow runs this Linux job only when NAMESPACE_SHADOW_LINUX_AUTO_DISPATCH=true
661+ if : ${{ needs.get_requirements.outputs.skip_everything != 'true' && inputs.runner_provider != 'bitrise' && ( inputs.runner_provider != 'namespace' || vars.NAMESPACE_SHADOW_LINUX_AUTO_DISPATCH == 'true') }}
677662 needs :
678663 - get_requirements
679664 steps :
@@ -699,8 +684,8 @@ jobs:
699684 unit-tests :
700685 name : Unit tests (${{ matrix.shard }})
701686 runs-on : ${{ inputs.runner_provider == 'namespace' && 'namespace-profile-metamask-ci-linux' || 'ubuntu-latest' }}
702- # BITRISE/NAMESPACE-SHADOW: skip for iOS-only shadow benchmark ( INFRA-3679) — revert to enable full pipeline
703- if : ${{ !cancelled() && needs.get_requirements.result == 'success' && needs.get_requirements.outputs.skip_everything != 'true' && inputs.runner_provider != 'bitrise' && inputs.runner_provider != 'namespace' }}
687+ # BITRISE/NAMESPACE-SHADOW: skipped on Bitrise shadow (iOS-only, INFRA-3679); Namespace shadow runs this Linux job only when NAMESPACE_SHADOW_LINUX_AUTO_DISPATCH=true
688+ if : ${{ !cancelled() && needs.get_requirements.result == 'success' && needs.get_requirements.outputs.skip_everything != 'true' && inputs.runner_provider != 'bitrise' && ( inputs.runner_provider != 'namespace' || vars.NAMESPACE_SHADOW_LINUX_AUTO_DISPATCH == 'true') }}
704689 needs :
705690 - get_requirements
706691 - prepare-ci-js-deps
@@ -780,7 +765,8 @@ jobs:
780765 - integration-tests
781766 # Wait for integration shards so coverage can merge into Sonar, but still run
782767 # when integration fails — missing integration artifacts are tolerated below.
783- if : ${{ always() && github.event_name != 'merge_group' && inputs.runner_provider != 'bitrise' && inputs.runner_provider != 'namespace' && !cancelled() && needs.prepare-ci-js-deps.result == 'success' && needs.unit-tests.result == 'success' && needs.component-view-tests.result == 'success' }}
768+ # BITRISE/NAMESPACE-SHADOW: skipped on Bitrise shadow (iOS-only, INFRA-3679); Namespace shadow runs this Linux job only when NAMESPACE_SHADOW_LINUX_AUTO_DISPATCH=true
769+ if : ${{ always() && github.event_name != 'merge_group' && inputs.runner_provider != 'bitrise' && (inputs.runner_provider != 'namespace' || vars.NAMESPACE_SHADOW_LINUX_AUTO_DISPATCH == 'true') && !cancelled() && needs.prepare-ci-js-deps.result == 'success' && needs.unit-tests.result == 'success' && needs.component-view-tests.result == 'success' }}
784770 steps :
785771 - uses : namespacelabs/nscloud-checkout-action@938f5d2d403d6224d9a0c0dc559b1dae09c2ede4 # v8.1.1
786772 if : ${{ inputs.runner_provider == 'namespace' }}
@@ -1048,8 +1034,8 @@ jobs:
10481034 component-view-tests :
10491035 name : Component view tests
10501036 runs-on : ${{ inputs.runner_provider == 'namespace' && 'namespace-profile-metamask-ci-linux' || 'ubuntu-latest' }}
1051- # BITRISE/NAMESPACE-SHADOW: skip for iOS-only shadow benchmark ( INFRA-3679) — revert to enable full pipeline
1052- if : ${{ !cancelled() && needs.get_requirements.result == 'success' && needs.get_requirements.outputs.skip_everything != 'true' && inputs.runner_provider != 'bitrise' && inputs.runner_provider != 'namespace' }}
1037+ # BITRISE/NAMESPACE-SHADOW: skipped on Bitrise shadow (iOS-only, INFRA-3679); Namespace shadow runs this Linux job only when NAMESPACE_SHADOW_LINUX_AUTO_DISPATCH=true
1038+ if : ${{ !cancelled() && needs.get_requirements.result == 'success' && needs.get_requirements.outputs.skip_everything != 'true' && inputs.runner_provider != 'bitrise' && ( inputs.runner_provider != 'namespace' || vars.NAMESPACE_SHADOW_LINUX_AUTO_DISPATCH == 'true') }}
10531039 needs :
10541040 - get_requirements
10551041 - prepare-ci-js-deps
@@ -1115,7 +1101,8 @@ jobs:
11151101 integration-tests :
11161102 name : Integration tests
11171103 runs-on : ${{ inputs.runner_provider == 'namespace' && 'namespace-profile-metamask-ci-linux' || 'ubuntu-latest' }}
1118- if : ${{ !cancelled() && needs.get_requirements.result == 'success' && needs.get_requirements.outputs.skip_everything != 'true' }}
1104+ # BITRISE/NAMESPACE-SHADOW: skipped on Bitrise shadow (iOS-only, INFRA-3679); Namespace shadow runs this Linux job only when NAMESPACE_SHADOW_LINUX_AUTO_DISPATCH=true
1105+ if : ${{ !cancelled() && needs.get_requirements.result == 'success' && needs.get_requirements.outputs.skip_everything != 'true' && inputs.runner_provider != 'bitrise' && (inputs.runner_provider != 'namespace' || vars.NAMESPACE_SHADOW_LINUX_AUTO_DISPATCH == 'true') }}
11191106 needs :
11201107 - get_requirements
11211108 - prepare-ci-js-deps
@@ -1264,11 +1251,11 @@ jobs:
12641251
12651252 build-android-apks :
12661253 name : ' Build Android APKs'
1267- # BITRISE/NAMESPACE-SHADOW: skip for iOS-only shadow benchmark ( INFRA-3679) — revert to enable full pipeline
1254+ # BITRISE/NAMESPACE-SHADOW: skipped on Bitrise shadow (iOS-only, INFRA-3679); Namespace shadow runs this Linux-runner job only when NAMESPACE_SHADOW_LINUX_AUTO_DISPATCH=true
12681255 if : >-
12691256 ${{
12701257 inputs.runner_provider != 'bitrise' &&
1271- inputs.runner_provider != 'namespace' &&
1258+ ( inputs.runner_provider != 'namespace' || vars.NAMESPACE_SHADOW_LINUX_AUTO_DISPATCH == 'true') &&
12721259 !cancelled() &&
12731260 needs.get_requirements.outputs.android_e2e_needed == 'true' &&
12741261 !(fromJSON(needs.smart-e2e-selection.outputs.ai_confidence || '0') >= 85 && needs.smart-e2e-selection.outputs.ai_e2e_test_tags == '[]')
@@ -1342,25 +1329,19 @@ jobs:
13421329
13431330 e2e-smoke-tests-android :
13441331 name : ' Android E2E Smoke Tests'
1345- # BITRISE/NAMESPACE-SHADOW: skip for iOS-only shadow benchmark ( INFRA-3679) — revert to enable full pipeline
1332+ # BITRISE/NAMESPACE-SHADOW: skipped on Bitrise shadow (iOS-only, INFRA-3679); Namespace shadow runs this Linux-runner job only when NAMESPACE_SHADOW_LINUX_AUTO_DISPATCH=true
13461333 if : >-
13471334 ${{
13481335 inputs.runner_provider != 'bitrise' &&
1349- inputs.runner_provider != 'namespace' &&
1336+ ( inputs.runner_provider != 'namespace' || vars.NAMESPACE_SHADOW_LINUX_AUTO_DISPATCH == 'true') &&
13501337 !cancelled() &&
13511338 needs.build-android-apks.result == 'success' &&
13521339 (needs.prepare-e2e-timings.result == 'success' || needs.prepare-e2e-timings.result == 'failure' || needs.prepare-e2e-timings.result == 'skipped')
13531340 }}
13541341 permissions :
13551342 contents : read
13561343 id-token : write
1357- needs :
1358- [
1359- get_requirements,
1360- build-android-apks,
1361- smart-e2e-selection,
1362- prepare-e2e-timings,
1363- ]
1344+ needs : [get_requirements, build-android-apks, smart-e2e-selection, prepare-e2e-timings]
13641345 uses : ./.github/workflows/run-e2e-smoke-tests-android.yml
13651346 with :
13661347 changed_files : ${{ needs.get_requirements.outputs.changed_files }}
@@ -1374,9 +1355,12 @@ jobs:
13741355
13751356 build-ios-apps :
13761357 name : ' Build iOS Apps'
1358+ # NAMESPACE-SHADOW: iOS pipeline runs on Namespace shadow only when NAMESPACE_SHADOW_AUTO_DISPATCH=true
1359+ # (downstream iOS jobs cascade-skip via needs when this is skipped)
13771360 if : >-
13781361 ${{
13791362 !cancelled() &&
1363+ (inputs.runner_provider != 'namespace' || vars.NAMESPACE_SHADOW_AUTO_DISPATCH == 'true') &&
13801364 needs.get_requirements.outputs.ios_e2e_needed == 'true' &&
13811365 !(fromJSON(needs.smart-e2e-selection.outputs.ai_confidence || '0') >= 85 && needs.smart-e2e-selection.outputs.ai_e2e_test_tags == '[]')
13821366 }}
@@ -1414,13 +1398,7 @@ jobs:
14141398 permissions :
14151399 contents : read
14161400 id-token : write
1417- needs :
1418- [
1419- get_requirements,
1420- ios-tests-ready,
1421- smart-e2e-selection,
1422- prepare-e2e-timings,
1423- ]
1401+ needs : [get_requirements, ios-tests-ready, smart-e2e-selection, prepare-e2e-timings]
14241402 uses : ./.github/workflows/run-e2e-smoke-tests-ios.yml
14251403 with :
14261404 changed_files : ${{ needs.get_requirements.outputs.changed_files }}
@@ -1434,7 +1412,9 @@ jobs:
14341412
14351413 appium-smoke-tests-android :
14361414 name : ' Appium Smoke Tests (Android)'
1437- # BITRISE/NAMESPACE-SHADOW: skip for iOS-only shadow benchmark (INFRA-3679) — revert to enable full pipeline
1415+ # BITRISE/NAMESPACE-SHADOW: always skipped on shadow runs. Appium Android is pinned to
1416+ # runner_provider=current (Cirrus) below until Namespace parity is ready, and it cannot
1417+ # download namespace-built APKs (they live in Namespace's artifact store, not GitHub's).
14381418 if : >-
14391419 ${{
14401420 inputs.runner_provider != 'bitrise' &&
0 commit comments