From efadfc8e840a2b6b6e3172d1efd1b0a94a752fb7 Mon Sep 17 00:00:00 2001 From: Jake Bailey <5341706+jakebailey@users.noreply.github.com> Date: Wed, 3 Jun 2026 18:03:57 -0700 Subject: [PATCH] Switch from bot PAT to GitHub App token via Azure Key Vault --- .github/workflows/publish-packages.yml | 40 ++++++++++++++++++++++---- 1 file changed, 34 insertions(+), 6 deletions(-) diff --git a/.github/workflows/publish-packages.yml b/.github/workflows/publish-packages.yml index 3a74a3b21c93..1fb4a45e3dce 100644 --- a/.github/workflows/publish-packages.yml +++ b/.github/workflows/publish-packages.yml @@ -6,22 +6,25 @@ on: workflow_dispatch: permissions: - contents: write - pull-requests: write + contents: read + id-token: write concurrency: ${{ github.workflow }}-${{ github.ref }} jobs: build: runs-on: ubuntu-latest + environment: + name: azure + deployment: false if: github.repository == 'microsoft/TypeScript-Website' steps: - - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 with: fetch-depth: 0 filter: blob:none - token: ${{ secrets.TS_BOT_TOKEN }} + persist-credentials: false - uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0 with: node-version: "20.x" @@ -34,9 +37,34 @@ jobs: pnpm bootstrap pnpm build + - uses: azure/login@532459ea530d8321f2fb9bb10d1e0bcf23869a43 # v3.0.0 + with: + client-id: ${{ vars.AZURE_CLIENT_ID }} + tenant-id: ${{ vars.AZURE_TENANT_ID }} + subscription-id: ${{ vars.AZURE_SUBSCRIPTION_ID }} + + - name: Create GitHub App token + id: app-token + uses: microsoft/create-github-app-token-via-key-vault@5ba0d436e9c3cac52feff4d1f2f66f9698ce4a2d # v1 + with: + client-id: ${{ vars.TYPESCRIPT_AUTOMATION_GITHUB_APP_CLIENT_ID }} + key-id: ${{ vars.TYPESCRIPT_AUTOMATION_GITHUB_APP_KEY_ID }} + owner: microsoft + repositories: TypeScript-Website + permission-contents: write + permission-pull-requests: write + - name: Configure git for GitHub App token + shell: bash + env: + GITHUB_APP_TOKEN: ${{ steps.app-token.outputs.token }} + run: | + set -euo pipefail + basic_auth="$(node -e 'process.stdout.write(Buffer.from("x-access-token:" + process.env.GITHUB_APP_TOKEN).toString("base64"))')" + echo "::add-mask::$basic_auth" + git config --local http.https://github.com/.extraheader "AUTHORIZATION: basic ${basic_auth}" - uses: changesets/action@6a0a831ff30acef54f2c6aa1cbbc1096b066edaf # v1.7.0 with: publish: pnpm ci:publish env: - GITHUB_TOKEN: ${{ secrets.TS_BOT_TOKEN }} - NODE_AUTH_TOKEN: ${{ secrets.NPM_PUBLISH_TOKEN }} + GITHUB_TOKEN: ${{ steps.app-token.outputs.token }} + NODE_AUTH_TOKEN: ${{ secrets.NPM_PUBLISH_TOKEN }}