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"
0 commit comments