Skip to content

Commit 911abd7

Browse files
authored
Merge branch 'main' into fix/ledger-monad-swap-issue
2 parents ba86883 + 9c8f15e commit 911abd7

58 files changed

Lines changed: 4311 additions & 1564 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/CONTRIBUTING.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,4 +23,8 @@ When you're done with your project / bugfix / feature and ready to submit a PR,
2323
- [ ] **Get the PR reviewed by code owners**: At least two code owner approvals are mandatory before merging any PR.
2424
- [ ] **Ensure the PR is correctly labeled.**: More detail about labels definitions can be found [here](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/LABELING_GUIDELINES.md).
2525

26+
### Shadow CI jobs
27+
28+
CI jobs prefixed with `[shadow]` (e.g., from `ci-namespace-shadow.yml`) are **advisory only** and never gate merge. They run the same test suite on Namespace runners for performance benchmarking. If a shadow job fails, it does not indicate a problem with your PR -- it reflects the state of the Namespace runner migration trial.
29+
2630
And that's it! Thanks for helping out.

.github/workflows/build-android-e2e.yml

Lines changed: 25 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ jobs:
4545
CACHE_GENERATION: v1 # Increment this to bust the cache (v1, v2, v3, etc.)
4646
YARN_ENABLE_GLOBAL_CACHE: 'true' # Enable Yarn global cache for faster installs
4747
outputs:
48-
apk-uploaded: ${{ steps.upload-apk.outcome == 'success' }}
48+
apk-uploaded: ${{ steps.upload-apk-namespace.outcome == 'success' || steps.upload-apk.outcome == 'success' }}
4949
apk-target-path: ${{ steps.determine-target-paths.outputs.apk-target-path }}
5050
test-apk-target-path: ${{ steps.determine-target-paths.outputs.test-apk-target-path }}
5151
artifact_name: ${{ steps.determine-target-paths.outputs.artifact_name }}
@@ -452,17 +452,39 @@ jobs:
452452
GOOGLE_SERVICES_B64_ANDROID: ${{ secrets.GOOGLE_SERVICES_B64_ANDROID }}
453453
MM_INFURA_PROJECT_ID: ${{ secrets.MM_INFURA_PROJECT_ID }}
454454

455-
- name: Upload Android APK
455+
- name: Upload Android APK (Namespace)
456+
id: upload-apk-namespace
457+
if: ${{ inputs.runner_provider == 'namespace' }}
458+
uses: namespace-actions/upload-artifact@f6ccaacc655aec41b93af180d1d7eef21af862d2 # v1.0.3
459+
with:
460+
name: ${{ inputs.build_type }}-${{ inputs.metamask_environment }}-release.apk
461+
path: ${{ steps.determine-target-paths.outputs.apk-target-path }}/${{ steps.determine-target-paths.outputs.artifact_name }}.apk
462+
retention-days: 7
463+
if-no-files-found: error
464+
465+
- name: Upload Android APK (current)
456466
id: upload-apk
467+
if: ${{ inputs.runner_provider != 'namespace' }}
457468
uses: actions/upload-artifact@v4
458469
with:
459470
name: ${{ inputs.build_type }}-${{ inputs.metamask_environment }}-release.apk
460471
path: ${{ steps.determine-target-paths.outputs.apk-target-path }}/${{ steps.determine-target-paths.outputs.artifact_name }}.apk
461472
retention-days: 7
462473
if-no-files-found: error
463474

464-
- name: Upload Android Test APK
475+
- name: Upload Android Test APK (Namespace)
476+
id: upload-test-apk-namespace
477+
if: ${{ inputs.runner_provider == 'namespace' }}
478+
uses: namespace-actions/upload-artifact@f6ccaacc655aec41b93af180d1d7eef21af862d2 # v1.0.3
479+
with:
480+
name: ${{ inputs.build_type }}-${{ inputs.metamask_environment }}-release-androidTest.apk
481+
path: ${{ steps.determine-target-paths.outputs.test-apk-target-path }}/${{ steps.determine-target-paths.outputs.artifact_name }}-androidTest.apk
482+
retention-days: 7
483+
if-no-files-found: error
484+
485+
- name: Upload Android Test APK (current)
465486
id: upload-test-apk
487+
if: ${{ inputs.runner_provider != 'namespace' }}
466488
uses: actions/upload-artifact@v4
467489
with:
468490
name: ${{ inputs.build_type }}-${{ inputs.metamask_environment }}-release-androidTest.apk

.github/workflows/build-ios-e2e.yml

Lines changed: 32 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -38,8 +38,8 @@ jobs:
3838
runs-on: ${{ inputs.runner_provider == 'namespace' && 'namespace-profile-metamask-ios-build' || (startsWith(github.base_ref, 'release/') && fromJSON('["ghcr.io/cirruslabs/macos-runner:tahoe-xl"]') || fromJSON('["ghcr.io/cirruslabs/macos-runner:tahoe-xl", "low-priority"]')) }}
3939
outputs:
4040
artifacts-url: ${{ steps.set-artifacts-url.outputs.artifacts-url }}
41-
app-uploaded: ${{ steps.upload-app.outcome == 'success' }}
42-
sourcemap-uploaded: ${{ steps.upload-sourcemap.outcome == 'success' }}
41+
app-uploaded: ${{ steps.upload-app-namespace.outcome == 'success' || steps.upload-app.outcome == 'success' }}
42+
sourcemap-uploaded: ${{ steps.upload-sourcemap-namespace.outcome == 'success' || steps.upload-sourcemap.outcome == 'success' }}
4343
env:
4444
XCODE_CACHE_VERSION: 1
4545
RCT_NO_LAUNCH_PACKAGER: 1
@@ -112,7 +112,8 @@ jobs:
112112

113113
- name: Find reusable build from prior run
114114
id: find-reusable-build
115-
if: ${{ steps.force-builds.outputs.force != 'true' && inputs.source-fingerprint != '' }}
115+
# Match Android: skip cross-run GitHub artifact reuse on Namespace until backend parity is proven.
116+
if: ${{ inputs.runner_provider != 'namespace' && steps.force-builds.outputs.force != 'true' && inputs.source-fingerprint != '' }}
116117
uses: ./.github/actions/find-reusable-build
117118
with:
118119
fingerprint: ${{ inputs.source-fingerprint }}
@@ -385,8 +386,20 @@ jobs:
385386
shell: bash
386387

387388
# Upload the iOS .app file that works in simulators
388-
- name: Upload iOS APP Artifact (Simulator)
389+
- name: Upload iOS APP Artifact (Simulator) (Namespace)
390+
id: upload-app-namespace
391+
if: ${{ inputs.runner_provider == 'namespace' }}
392+
uses: namespace-actions/upload-artifact@f6ccaacc655aec41b93af180d1d7eef21af862d2 # v1.0.3
393+
with:
394+
name: ${{ inputs.build_type }}-${{ inputs.metamask_environment }}-MetaMask.app
395+
path: ios/build/Build/Products/Release-iphonesimulator/MetaMask.app
396+
retention-days: 7
397+
if-no-files-found: error
398+
continue-on-error: true
399+
400+
- name: Upload iOS APP Artifact (Simulator) (current)
389401
id: upload-app
402+
if: ${{ inputs.runner_provider != 'namespace' }}
390403
uses: actions/upload-artifact@v4
391404
with:
392405
name: ${{ inputs.build_type }}-${{ inputs.metamask_environment }}-MetaMask.app
@@ -399,8 +412,20 @@ jobs:
399412
# Both paths produce it: `yarn build:ios:main:e2e` via
400413
# `scripts/ios/bundle-js-and-sentry-upload.sh` and `yarn build:repack:ios`
401414
# via `scripts/repack.js` both write to `sourcemaps/ios/index.js.map`.
402-
- name: Upload iOS Source Map
415+
- name: Upload iOS Source Map (Namespace)
416+
id: upload-sourcemap-namespace
417+
if: ${{ inputs.runner_provider == 'namespace' }}
418+
uses: namespace-actions/upload-artifact@f6ccaacc655aec41b93af180d1d7eef21af862d2 # v1.0.3
419+
with:
420+
name: ${{ inputs.build_type }}-${{ inputs.metamask_environment }}-index.js.map
421+
path: sourcemaps/ios/index.js.map
422+
retention-days: 7
423+
if-no-files-found: error
424+
continue-on-error: true
425+
426+
- name: Upload iOS Source Map (current)
403427
id: upload-sourcemap
428+
if: ${{ inputs.runner_provider != 'namespace' }}
404429
uses: actions/upload-artifact@v4
405430
with:
406431
name: ${{ inputs.build_type }}-${{ inputs.metamask_environment }}-index.js.map
@@ -418,8 +443,8 @@ jobs:
418443
echo "📦 Artifacts available at: ${ARTIFACTS_URL}"
419444
echo ""
420445
echo "Upload Status Summary:"
421-
echo "- APP (Simulator): ${{ steps.upload-app.outcome }}"
422-
echo "- Source Map: ${{ steps.upload-sourcemap.outcome }}"
446+
echo "- APP (Simulator): namespace=${{ steps.upload-app-namespace.outcome }} current=${{ steps.upload-app.outcome }}"
447+
echo "- Source Map: namespace=${{ steps.upload-sourcemap-namespace.outcome }} current=${{ steps.upload-sourcemap.outcome }}"
423448
424449
env:
425450
GITHUB_REPOSITORY: '${{ github.repository }}'
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
name: CI (Namespace shadow)
2+
3+
on:
4+
pull_request:
5+
types: [opened, synchronize, reopened, ready_for_review]
6+
paths-ignore:
7+
- 'docs/**'
8+
- '**/*.md'
9+
- '.github/CODEOWNERS'
10+
push:
11+
branches: [main]
12+
schedule:
13+
- cron: '0 * * * *'
14+
workflow_dispatch:
15+
16+
concurrency:
17+
group: ns-shadow-${{ github.workflow }}-${{ github.ref }}
18+
cancel-in-progress: true
19+
20+
jobs:
21+
shadow-ci:
22+
name: '[shadow] CI'
23+
uses: ./.github/workflows/ci.yml
24+
with:
25+
runner_provider: namespace
26+
secrets: inherit

0 commit comments

Comments
 (0)