Skip to content

Commit e9a891e

Browse files
committed
Merge branch 'main' into wsun/clean-up-react-navigation-stack
2 parents bb4b8e4 + bd42563 commit e9a891e

278 files changed

Lines changed: 9212 additions & 2677 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/workflows/auto-create-release-pr.yml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,6 @@ jobs:
4343
id-token: write
4444
uses: ./.github/workflows/create-release-pr.yml
4545
secrets:
46-
github-token: ${{ secrets.PR_TOKEN }}
4746
google-application-creds-base64: ${{ secrets.GCP_RLS_SHEET_ACCOUNT_BASE64 }}
4847
with:
4948
semver-version: ${{ needs.extract.outputs.semver }}

.github/workflows/build-rc-auto.yml

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -123,11 +123,10 @@ jobs:
123123
if: needs.validate-and-find-pr.outputs.has-pr == 'true' && needs.validate-and-find-pr.outputs.rc-frozen != 'true'
124124
permissions:
125125
contents: write
126+
id-token: write
126127
with:
127128
base-branch: ${{ needs.validate-and-find-pr.outputs.branch-name }}
128129
build_number: ${{ needs.generate_rc_build_version.outputs.build-version }}
129-
secrets:
130-
PR_TOKEN: ${{ secrets.PR_TOKEN }}
131130

132131
trigger-ios-rc-build:
133132
name: Trigger iOS RC Build

.github/workflows/commit-build-version.yml

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -19,29 +19,32 @@ on:
1919
description: 'Build number from generate-build-version.yml outputs.build-version'
2020
required: true
2121
type: string
22-
secrets:
23-
PR_TOKEN:
24-
description: 'GitHub token for checkout and push operations'
25-
required: false
2622
outputs:
2723
commit-hash:
2824
description: 'Commit SHA with build version bumped'
2925
value: ${{ jobs.commit.outputs.commit-hash }}
3026

3127
permissions:
32-
contents: write
28+
id-token: write
3329

3430
jobs:
3531
commit:
3632
runs-on: ubuntu-latest
3733
outputs:
3834
commit-hash: ${{ steps.bump-build-version.outputs.commit-hash }}
3935
steps:
36+
- name: Get token
37+
id: get-token
38+
uses: MetaMask/github-tools/.github/actions/get-token@v1
39+
with:
40+
token-exchange-url: ${{ vars.TOKEN_EXCHANGE_URL }}
41+
permissions: |
42+
contents: write
4043
- uses: actions/checkout@v4
4144
with:
4245
fetch-depth: 0
4346
ref: ${{ inputs.base-branch }}
44-
token: ${{ secrets.PR_TOKEN || github.token }}
47+
token: ${{ steps.get-token.outputs.token }}
4548
- name: Bump build version
4649
id: bump-build-version
4750
shell: bash

.github/workflows/create-release-pr.yml

Lines changed: 21 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -22,12 +22,8 @@ on:
2222
type: boolean
2323
default: false
2424
secrets:
25-
github-token:
26-
required: false
2725
google-application-creds-base64:
2826
required: false
29-
PR_TOKEN:
30-
required: false
3127
GCP_RLS_SHEET_ACCOUNT_BASE64:
3228
required: false
3329

@@ -109,6 +105,21 @@ jobs:
109105
name: Create Release Pull Request using Github Tools
110106
runs-on: ubuntu-latest
111107
steps:
108+
# Mint a short-lived token via the token-exchange service (OIDC). It needs:
109+
# - contents: write → push the release / version-bump / changelog branches
110+
# - pull_requests: write → open the release PRs
111+
# - members: read → auto-changelog --autoCategorize resolves PR author teams (read:org)
112+
# OIDC works on every trigger, so no workflow_dispatch vs workflow_call token split is needed.
113+
- name: Get token
114+
id: get-token
115+
uses: MetaMask/github-tools/.github/actions/get-token@v1
116+
with:
117+
token-exchange-url: ${{ vars.TOKEN_EXCHANGE_URL }}
118+
permissions: |
119+
contents: write
120+
pull_requests: write
121+
members: read
122+
112123
- name: Create Release PR (semver / native version bump)
113124
if: needs.resolve-bases.outputs.is_ota != 'true'
114125
uses: MetaMask/github-tools/.github/actions/create-release-pr@v1
@@ -119,10 +130,7 @@ jobs:
119130
semver-version: ${{ inputs.semver-version }}
120131
previous-version-ref: ${{ needs.resolve-previous-ref.outputs.previous_ref }}
121132
mobile-build-version: ${{ needs.generate-build-version.outputs.build-version }}
122-
# Needs write to metamask-mobile and read to metamask-planning. Prefer PR_TOKEN (workflow scope / bot) over GITHUB_TOKEN.
123-
# workflow_dispatch: use secrets.PR_TOKEN directly.
124-
# workflow_call: reusable workflows only receive secrets explicitly passed in; auto-create-release-pr maps github-token → PR_TOKEN.
125-
github-token: ${{ github.event_name == 'workflow_dispatch' && secrets.PR_TOKEN || secrets.github-token }}
133+
github-token: ${{ steps.get-token.outputs.token }}
126134
google-application-creds-base64: ${{ github.event_name == 'workflow_dispatch' && secrets.GCP_RLS_SHEET_ACCOUNT_BASE64 || secrets.google-application-creds-base64 }}
127135

128136
# Check PR before checkout/bump/push so retries do not overwrite OTA_VERSION again when a PR already exists.
@@ -133,7 +141,7 @@ jobs:
133141
env:
134142
SEMVER: ${{ inputs.semver-version }}
135143
RELEASE_BASE: ${{ needs.resolve-bases.outputs.release_base }}
136-
GH_TOKEN: ${{ github.event_name == 'workflow_dispatch' && secrets.PR_TOKEN || secrets.github-token }}
144+
GH_TOKEN: ${{ steps.get-token.outputs.token }}
137145
run: |
138146
set -euo pipefail
139147
BRANCH="release/${SEMVER}-ota"
@@ -151,15 +159,15 @@ jobs:
151159
uses: actions/checkout@v4
152160
with:
153161
ref: release/${{ inputs.semver-version }}-ota
154-
token: ${{ github.event_name == 'workflow_dispatch' && secrets.PR_TOKEN || secrets.github-token }}
162+
token: ${{ steps.get-token.outputs.token }}
155163
fetch-depth: 0
156164

157165
- name: Bump OTA_VERSION and push (OTA hotfix)
158166
if: needs.resolve-bases.outputs.is_ota == 'true' && steps.ota_release_pr.outputs.exists != 'true'
159167
shell: bash
160168
env:
161169
SEMVER: ${{ inputs.semver-version }}
162-
GH_TOKEN: ${{ github.event_name == 'workflow_dispatch' && secrets.PR_TOKEN || secrets.github-token }}
170+
GH_TOKEN: ${{ steps.get-token.outputs.token }}
163171
run: |
164172
set -euo pipefail
165173
BRANCH="release/${SEMVER}-ota"
@@ -199,7 +207,7 @@ jobs:
199207
if: needs.resolve-bases.outputs.is_ota == 'true' && steps.ota_release_pr.outputs.exists != 'true'
200208
shell: bash
201209
env:
202-
GITHUB_TOKEN: ${{ github.event_name == 'workflow_dispatch' && secrets.PR_TOKEN || secrets.github-token }}
210+
GITHUB_TOKEN: ${{ steps.get-token.outputs.token }}
203211
GIT_AUTHOR_NAME: metamaskbot
204212
GIT_AUTHOR_EMAIL: metamaskbot@users.noreply.github.com
205213
run: |
@@ -223,7 +231,7 @@ jobs:
223231
env:
224232
SEMVER: ${{ inputs.semver-version }}
225233
RELEASE_BASE: ${{ needs.resolve-bases.outputs.release_base }}
226-
GH_TOKEN: ${{ github.event_name == 'workflow_dispatch' && secrets.PR_TOKEN || secrets.github-token }}
234+
GH_TOKEN: ${{ steps.get-token.outputs.token }}
227235
run: |
228236
set -euo pipefail
229237
BRANCH="release/${SEMVER}-ota"

.github/workflows/publish-slack-release-testing-status.yml

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,15 +10,24 @@ jobs:
1010
name: Publish Slack release testing status
1111
runs-on: ubuntu-latest
1212
permissions:
13-
contents: write
14-
pull-requests: write
13+
contents: read
14+
id-token: write
1515
steps:
16+
- name: Get token
17+
id: get-token
18+
uses: MetaMask/github-tools/.github/actions/get-token@v1
19+
with:
20+
token-exchange-url: ${{ vars.TOKEN_EXCHANGE_URL }}
21+
permissions: |
22+
contents: read
23+
pull_requests: read
24+
1625
- name: Publish Slack release testing status
1726
uses: MetaMask/github-tools/.github/actions/publish-slack-release-testing-status@v1
1827
with:
1928
platform: 'mobile'
2029
test-only: 'true'
2130
google-document-id: '1tsoodlAlyvEUpkkcNcbZ4PM9HuC9cEM80RZeoVv5OCQ'
2231
slack-api-key: ${{ secrets.SLACKBOT_RLS_TOKEN }}
23-
github-token: ${{ secrets.PR_TOKEN }}
32+
github-token: ${{ steps.get-token.outputs.token }}
2433
google-application-creds-base64: ${{ secrets.GCP_RLS_SHEET_ACCOUNT_BASE64 }}

.github/workflows/run-e2e-smoke-tests-android.yml

Lines changed: 10 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -92,23 +92,6 @@ jobs:
9292
runner_provider: ${{ inputs.runner_provider }}
9393
secrets: inherit
9494

95-
identity-android-smoke:
96-
if: contains(fromJson(inputs.selected_tags), 'ALL') || contains(fromJson(inputs.selected_tags), 'SmokeIdentity')
97-
strategy:
98-
matrix:
99-
split: [1]
100-
fail-fast: false
101-
uses: ./.github/workflows/run-e2e-workflow.yml
102-
with:
103-
test-suite-name: identity-android-smoke-${{ matrix.split }}
104-
platform: android
105-
test_suite_tag: 'SmokeIdentity'
106-
split_number: ${{ matrix.split }}
107-
total_splits: 1
108-
changed_files: ${{ inputs.changed_files }}
109-
runner_provider: ${{ inputs.runner_provider }}
110-
secrets: inherit
111-
11295
network-abstraction-android-smoke:
11396
if: contains(fromJson(inputs.selected_tags), 'ALL') || contains(fromJson(inputs.selected_tags), 'SmokeNetworkAbstractions')
11497
strategy:
@@ -265,13 +248,21 @@ jobs:
265248
report-android-smoke-tests:
266249
name: Report Android Smoke Tests
267250
runs-on: ${{ inputs.runner_provider == 'namespace' && 'namespace-profile-metamask-ci-linux' || 'ubuntu-latest' }}
268-
if: ${{ !cancelled() && inputs.selected_tags != '[]' && inputs.selected_tags != '["FlaskBuildTests"]' }}
251+
# Appium migration: skip rollup when every Detox shard is skipped (e.g. AI selects
252+
# an Appium-only tag like SmokeAccounts). Non-empty tags still trigger this workflow.
253+
if: >-
254+
${{
255+
!cancelled() &&
256+
(
257+
contains(toJSON(needs), '"result":"success"') ||
258+
contains(toJSON(needs), '"result":"failure"')
259+
)
260+
}}
269261
needs:
270262
- swap-android-smoke
271263
- stake-android-smoke
272264
- perps-android-smoke
273265
- wallet-platform-android-smoke
274-
- identity-android-smoke
275266
- network-abstraction-android-smoke
276267
- network-expansion-android-smoke
277268
- confirmations-android-smoke

.github/workflows/run-e2e-smoke-tests-ios.yml

Lines changed: 10 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -114,24 +114,6 @@ jobs:
114114
runner_provider: ${{ inputs.runner_provider }}
115115
secrets: inherit
116116

117-
identity-ios-smoke:
118-
if: contains(fromJson(inputs.selected_tags), 'ALL') || contains(fromJson(inputs.selected_tags), 'SmokeIdentity')
119-
strategy:
120-
matrix:
121-
split: [1]
122-
fail-fast: false
123-
uses: ./.github/workflows/run-e2e-workflow.yml
124-
with:
125-
test-suite-name: identity-ios-smoke-${{ matrix.split }}
126-
platform: ios
127-
test_suite_tag: 'SmokeIdentity'
128-
split_number: ${{ matrix.split }}
129-
total_splits: 1
130-
changed_files: ${{ inputs.changed_files }}
131-
build_type: 'main'
132-
runner_provider: ${{ inputs.runner_provider }}
133-
secrets: inherit
134-
135117
network-abstraction-ios-smoke:
136118
if: contains(fromJson(inputs.selected_tags), 'ALL') || contains(fromJson(inputs.selected_tags), 'SmokeNetworkAbstractions')
137119
strategy:
@@ -279,14 +261,22 @@ jobs:
279261
report-ios-smoke-tests:
280262
name: Report iOS Smoke Tests
281263
runs-on: ${{ inputs.runner_provider == 'namespace' && 'namespace-profile-metamask-ci-linux' || 'ubuntu-latest' }}
282-
if: ${{ !cancelled() && inputs.selected_tags != '[]' && inputs.selected_tags != '["FlaskBuildTests"]' }}
264+
# Appium migration: skip rollup when every Detox shard is skipped (e.g. AI selects
265+
# an Appium-only tag like SmokeAccounts). Non-empty tags still trigger this workflow.
266+
if: >-
267+
${{
268+
!cancelled() &&
269+
(
270+
contains(toJSON(needs), '"result":"success"') ||
271+
contains(toJSON(needs), '"result":"failure"')
272+
)
273+
}}
283274
needs:
284275
- confirmations-ios-smoke
285276
- swap-ios-smoke
286277
- stake-ios-smoke
287278
- perps-ios-smoke
288279
- wallet-platform-ios-smoke
289-
- identity-ios-smoke
290280
- network-abstraction-ios-smoke
291281
- network-expansion-ios-smoke
292282
- prediction-market-ios-smoke

.github/workflows/runway-production-builds.yml

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -39,12 +39,10 @@ jobs:
3939
needs: generate-build-version
4040
uses: ./.github/workflows/commit-build-version.yml
4141
permissions:
42-
contents: write
42+
id-token: write
4343
with:
4444
base-branch: ${{ inputs.source_branch || github.ref_name }}
4545
build_number: ${{ needs.generate-build-version.outputs.build-version }}
46-
secrets:
47-
PR_TOKEN: ${{ secrets.PR_TOKEN }}
4846

4947
build:
5048
name: Build iOS + Android (main-prod)

.github/workflows/runway-rc-builds.yml

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -39,12 +39,10 @@ jobs:
3939
needs: generate-build-version
4040
uses: ./.github/workflows/commit-build-version.yml
4141
permissions:
42-
contents: write
42+
id-token: write
4343
with:
4444
base-branch: ${{ inputs.source_branch || github.ref_name }}
4545
build_number: ${{ needs.generate-build-version.outputs.build-version }}
46-
secrets:
47-
PR_TOKEN: ${{ secrets.PR_TOKEN }}
4846

4947
build:
5048
name: Build iOS + Android (main-rc)

.github/workflows/update-release-changelog.yml

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -52,12 +52,22 @@ jobs:
5252
permissions:
5353
contents: write
5454
pull-requests: write
55+
id-token: write
5556
steps:
57+
- name: Get token
58+
id: get-token
59+
uses: MetaMask/github-tools/.github/actions/get-token@v1
60+
with:
61+
token-exchange-url: ${{ vars.TOKEN_EXCHANGE_URL }}
62+
permissions: |
63+
contents: write
64+
pull_requests: write
65+
5666
- name: Checkout release branch
5767
uses: actions/checkout@v4
5868
with:
5969
ref: ${{ github.ref_name }}
60-
token: ${{ secrets.PR_TOKEN }}
70+
token: ${{ steps.get-token.outputs.token }}
6171
fetch-depth: 0
6272

6373
- name: Checkout github-tools
@@ -75,15 +85,13 @@ jobs:
7585
- name: Update Release Changelog
7686
shell: bash
7787
env:
78-
GITHUB_TOKEN: ${{ secrets.PR_TOKEN }}
88+
GITHUB_TOKEN: ${{ steps.get-token.outputs.token }}
7989
GIT_AUTHOR_NAME: metamaskbot
8090
GIT_AUTHOR_EMAIL: metamaskbot@users.noreply.github.com
8191
run: |
8292
set -euo pipefail
8393
git config user.name metamaskbot
8494
git config user.email metamaskbot@users.noreply.github.com
85-
corepack enable
86-
yarn install --immutable
8795
bash .github/scripts/run-update-release-changelog-mobile.sh \
8896
"${{ github.ref_name }}" \
8997
mobile \

0 commit comments

Comments
 (0)