1414
1515 permissions :
1616 contents : write # Required to push changes
17- actions : write # Required to update secrets
17+ actions : write # Required to trigger workflows
18+ id-token : write # Required to mint secrets token
1819
1920 steps :
2021 - name : Checkout repository
@@ -33,50 +34,29 @@ jobs:
3334 working-directory : website-ts
3435 run : npm ci
3536
36- - name : Install secret tooling
37- run : npm install --no-save --prefix /tmp/gh-secrets tweetsodium
38-
3937 - name : Run NFL News Scraper
4038 id : run-scraper
4139 working-directory : website-ts
4240 env :
4341 OPENAI_REFRESH_TOKEN : ${{ secrets.OPENAI_REFRESH_TOKEN }}
4442 run : npx tsx scripts/nfl-scraper/runAll.ts
4543
46- - name : Update OPENAI_REFRESH_TOKEN secret
44+ - uses : qoomon/actions--access-token@v3
4745 if : ${{ steps.run-scraper.outputs.openai_refresh_token != '' }}
48- uses : actions/github-script@v7
49- env :
50- NODE_PATH : /tmp/gh-secrets/node_modules
46+ id : secrets-token
5147 with :
52- script : |
53- const sodium = require('tweetsodium')
54-
55- const newToken = `${{ steps.run-scraper.outputs.openai_refresh_token }}`
56- if (!newToken) {
57- core.info('No refresh token update emitted.')
58- return
59- }
60-
61- const { data: publicKey } = await github.rest.actions.getRepoPublicKey({
62- owner: context.repo.owner,
63- repo: context.repo.repo,
64- })
65-
66- const messageBytes = Buffer.from(newToken)
67- const keyBytes = Buffer.from(publicKey.key, 'base64')
68- const encryptedBytes = sodium.seal(messageBytes, keyBytes)
69- const encryptedValue = Buffer.from(encryptedBytes).toString('base64')
70-
71- await github.rest.actions.createOrUpdateRepoSecret({
72- owner: context.repo.owner,
73- repo: context.repo.repo,
74- secret_name: 'OPENAI_REFRESH_TOKEN',
75- encrypted_value: encryptedValue,
76- key_id: publicKey.key_id,
77- })
48+ permissions : |
49+ secrets: write
7850
79- core.info('OPENAI_REFRESH_TOKEN secret updated.')
51+ - name : Update OPENAI_REFRESH_TOKEN secret
52+ if : ${{ steps.run-scraper.outputs.openai_refresh_token != '' }}
53+ env :
54+ GITHUB_TOKEN : ${{ steps.secrets-token.outputs.token }}
55+ run : >-
56+ gh secret
57+ set "OPENAI_REFRESH_TOKEN"
58+ --body "${{ steps.run-scraper.outputs.openai_refresh_token }}"
59+ --repo "${{ github.repository }}"
8060
8161 - name : Check for changes
8262 id : git-check
9777 git config --local user.name "NFL News Bot"
9878 git commit -m "🏈 Auto-update: NFL news articles $(date +'%Y-%m-%d %H:%M')"
9979 git push
80+
81+ - name : Trigger CI build
82+ if : steps.git-check.outputs.changes == 'true'
83+ uses : actions/github-script@v7
84+ with :
85+ script : |
86+ await github.rest.actions.createWorkflowDispatch({
87+ owner: context.repo.owner,
88+ repo: context.repo.repo,
89+ workflow_id: 'ci.yml',
90+ ref: context.ref,
91+ })
0 commit comments