@@ -95,22 +95,29 @@ jobs:
9595
9696 release :
9797 permissions :
98- contents : write # to be able to publish a GitHub release
99- issues : write # to be able to comment on released issues
100- pull-requests : write # to be able to comment on released pull requests
98+ contents : read
10199 id-token : write # to enable use of OIDC for npm provenance
102100 needs : [build, test]
103101 # only run if opt-in during workflow_dispatch
104102 if : always() && github.event.inputs.release == 'true' && needs.build.result != 'failure' && needs.test.result != 'failure' && needs.test.result != 'cancelled'
105103 runs-on : ubuntu-latest
106104 name : Semantic release
107105 steps :
108- - uses : actions/checkout@v4
106+ - uses : actions/create-github-app-token@v2
107+ id : app-token
108+ with :
109+ app-id : ${{ secrets.ECOSPARK_APP_ID }}
110+ private-key : ${{ secrets.ECOSPARK_APP_PRIVATE_KEY }}
111+ - uses : actions/checkout@v5
109112 with :
110113 # Need to fetch entire commit history to
111114 # analyze every commit since last release
112115 fetch-depth : 0
113- - uses : actions/setup-node@v4
116+ # Uses generated token to allow pushing commits back
117+ token : ${{ steps.app-token.outputs.token }}
118+ # Make sure the value of GITHUB_TOKEN will not be persisted in repo's config
119+ persist-credentials : false
120+ - uses : actions/setup-node@v6
114121 with :
115122 cache : npm
116123 node-version : lts/*
@@ -121,11 +128,6 @@ jobs:
121128 # e.g. git tags were pushed but it exited before `npm publish`
122129 if : always()
123130 env :
124- GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
125- NPM_TOKEN : ${{ secrets.NPM_PUBLISH_TOKEN }}
126- # Re-run semantic release with rich logs if it failed to publish for easier debugging
127- - run : npx semantic-release --dry-run --debug
128- if : failure()
129- env :
130- GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
131+ NPM_CONFIG_PROVENANCE : true
132+ GITHUB_TOKEN : ${{ steps.app-token.outputs.token }}
131133 NPM_TOKEN : ${{ secrets.NPM_PUBLISH_TOKEN }}
0 commit comments