Skip to content

Commit 7a2524b

Browse files
Perminder SinghPerminder Singh
authored andcommitted
harden github actions
1 parent 12b54c1 commit 7a2524b

7 files changed

Lines changed: 72 additions & 49 deletions

File tree

.github/workflows/auto-close-issues.yml

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,15 +4,21 @@ on:
44
pull_request:
55
types: [closed]
66
branches:
7+
- 2.0
78
- dev-2.0
89

10+
permissions:
11+
contents: read
12+
issues: write
13+
pull-requests: read
14+
915
jobs:
1016
close_issues:
1117
if: github.event.pull_request.merged == true
1218
runs-on: ubuntu-latest
1319
steps:
1420
- name: Close linked issues on non-default branches
15-
uses: processing/branch-pr-close-issue@v1
21+
uses: processing/branch-pr-close-issue@9fd7b409a12c677c5cdd8ff82c45600f790074e1 # v1
1622
with:
1723
token: ${{ secrets.GITHUB_TOKEN }}
18-
branch: dev-2.0
24+
branch: dev-2.0

.github/workflows/ci-lint.yml

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,20 +7,24 @@ on:
77
pull_request:
88
branches:
99
- '*'
10+
permissions:
11+
contents: read
1012

1113
jobs:
1214
lint:
1315
runs-on: ubuntu-latest
1416

1517
steps:
16-
- uses: actions/checkout@v1
17-
- name: Use Node.js 22.x
18-
uses: actions/setup-node@v1
18+
- uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4.3.1
1919
with:
20-
node-version: 22.x
20+
persist-credentials: false
21+
- name: Use Node.js 20.x
22+
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
23+
with:
24+
node-version: 20.x
2125
- name: Get node modules
2226
run: npm ci
2327
env:
2428
CI: true
2529
- name: Lint source code
26-
run: npm run lint
30+
run: npm run lint

.github/workflows/ci-test.yml

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,9 @@ on:
99
branches:
1010
- '*'
1111

12+
permissions:
13+
contents: read
14+
1215
jobs:
1316
test:
1417
strategy:
@@ -22,10 +25,12 @@ jobs:
2225
runs-on: ${{ matrix.os }}
2326

2427
steps:
25-
- uses: actions/checkout@v4
28+
- uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4.3.1
29+
with:
30+
persist-credentials: false
2631

2732
- name: Use Node.js 22.x
28-
uses: actions/setup-node@v4
33+
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
2934
with:
3035
node-version: 22.x
3136

@@ -59,7 +64,7 @@ jobs:
5964
CI: true
6065
- name: Upload Visual Test Report
6166
if: always()
62-
uses: actions/upload-artifact@v4
67+
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
6368
with:
6469
name: visual-test-report
6570
path: test/unit/visual/visual-report.html
@@ -74,9 +79,10 @@ jobs:
7479
CI: true
7580
- name: report test coverage
7681
if: steps.test.outcome == 'success'
77-
run: bash <(curl -s https://codecov.io/bash) -f coverage/coverage-final.json
78-
env:
79-
CI: true
82+
uses: codecov/codecov-action@671740ac38dd9b0130fbe1cec585b89eea48d3de # v5.5.2
83+
with:
84+
files: coverage/coverage-final.json
85+
fail_ci_if_error: false
8086
- name: fail job if tests failed
8187
if: steps.test.outcome != 'success'
8288
run: exit 1

.github/workflows/contributors-png.yml

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,15 +5,20 @@ on:
55
paths:
66
- '.all-contributorsrc'
77

8+
permissions:
9+
contents: read
10+
811
jobs:
912
build:
1013
if: github.ref == 'refs/heads/main' && github.repository == 'processing/p5.js'
1114
runs-on: ubuntu-latest
1215
steps:
13-
- uses: actions/checkout@v3
16+
- uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4.3.1
17+
with:
18+
persist-credentials: false
1419

1520
- name: Setup Node
16-
uses: actions/setup-node@v4
21+
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
1722
with:
1823
node-version: 20
1924

@@ -30,7 +35,7 @@ jobs:
3035
git checkout -- .
3136
3237
- name: Create Pull Request
33-
uses: peter-evans/create-pull-request@v7
38+
uses: peter-evans/create-pull-request@22a9089034f40e5a961c8808d113e2c98fb63676 # v7.0.11
3439
with:
3540
commit-message: "Update contributors.png from .all-contributorsrc"
3641
branch: update-contributors-png

.github/workflows/labeler.yml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,13 @@ on:
33
issues:
44
types: [opened, edited]
55
permissions:
6+
contents: read
67
issues: write
78
jobs:
89
triage:
910
runs-on: ubuntu-latest
1011
steps:
11-
- uses: github/issue-labeler@v3.2
12+
- uses: github/issue-labeler@98b5412841f6c4b0b3d9c29d53c13fad16bd7de2 # v3.2
1213
with:
1314
repo-token: "${{ secrets.GITHUB_TOKEN }}"
1415
configuration-path: .github/labeler.yml

.github/workflows/release-workflow-v2.yml

Lines changed: 15 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -18,13 +18,15 @@ jobs:
1818
INPUT_TOKEN: ${{ secrets.NPM_TOKEN }}
1919
steps:
2020
# 1. Setup
21-
- uses: actions/checkout@v3
22-
- uses: actions/setup-node@v3
21+
- uses: actions/checkout@f43a0e5ff2bd294095638e18286ca9a3d1956744 # v3
2322
with:
24-
node-version: 22
23+
persist-credentials: false
24+
- uses: actions/setup-node@3235b876344d2a9aa001b8d1453c930bba69e610 # v3
25+
with:
26+
node-version: 20
2527
- name: Get semver info
2628
id: semver
27-
uses: akshens/semver-tag@v4
29+
uses: akshens/semver-tag@8e427cd48c699c97d021df4946f3a0e65af5047e # v4
2830
with:
2931
version: ${{ github.ref_name }}
3032

@@ -42,22 +44,16 @@ jobs:
4244
env:
4345
CI: true
4446
- name: Run test
45-
run: npm test -- --project=unit-tests
47+
run: npm test
4648
env:
4749
CI: true
4850
- name: Run build
4951
run: npm run build
50-
- name: Generate types
51-
run: npm run generate-types
52-
- name: test TypeScript types
53-
run: npm run test:types
54-
env:
55-
CI: true
5652

5753
# 2. Prepare release files
5854
- run: mkdir release && mkdir p5 && cp -r ./lib/* p5/
5955
- name: Create release zip file
60-
uses: TheDoctor0/zip-release@0.6.2
56+
uses: TheDoctor0/zip-release@09336613be18a8208dfa66bd57efafd9e2685657 # 0.6.2
6157
with:
6258
type: zip
6359
filename: release/p5.zip
@@ -68,29 +64,30 @@ jobs:
6864

6965
# 3. Release p5.js
7066
- name: Create GitHub release
71-
uses: softprops/action-gh-release@v0.1.15
67+
uses: softprops/action-gh-release@de2c0eb89ae2a093876385947365aca7b0e5f844 # v0.1.15
7268
with:
7369
draft: true
7470
prerelease: ${{ steps.semver.outputs.is-prerelease == 'true' }}
7571
files: release/*
7672
generate_release_notes: true
77-
token: ${{ secrets.ACCESS_TOKEN }}
73+
token: ${{ secrets.GITHUB_TOKEN }}
7874
- name: Publish to NPM
79-
uses: JS-DevTools/npm-publish@v1
75+
uses: JS-DevTools/npm-publish@0f451a94170d1699fd50710966d48fb26194d939
8076
with:
8177
token: ${{ secrets.NPM_TOKEN }}
8278
tag: ${{ steps.semver.outputs.is-prerelease != 'true' && 'latest' || 'beta' }}
8379

8480
# 4. Update p5.js website
8581
- name: Clone p5.js website
8682
if: ${{ steps.semver.outputs.is-prerelease != 'true' }}
87-
uses: actions/checkout@v3
83+
uses: actions/checkout@f43a0e5ff2bd294095638e18286ca9a3d1956744 # v3
8884
with:
8985
repository: processing/p5.js-website
9086
ref: '2.0'
9187
path: website
9288
fetch-depth: 0
9389
token: ${{ secrets.ACCESS_TOKEN }}
90+
persist-credentials: false
9491
- name: Updated website files
9592
if: ${{ steps.semver.outputs.is-prerelease != 'true' }}
9693
run: |
@@ -111,9 +108,9 @@ jobs:
111108
git commit -m "Update p5.js to ${{ github.ref_name }}"
112109
- name: Push updated website repo
113110
if: ${{ steps.semver.outputs.is-prerelease != 'true' }}
114-
uses: ad-m/github-push-action@v0.6.0
111+
uses: ad-m/github-push-action@40bf560936a8022e68a3c00e7d2abefaf01305a6 # v0.6.0
115112
with:
116113
github_token: ${{ secrets.ACCESS_TOKEN }}
117114
branch: '2.0'
118115
directory: website/
119-
repository: processing/p5.js-website
116+
repository: processing/p5.js-website

.github/workflows/release-workflow.yml

Lines changed: 18 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -18,13 +18,15 @@ jobs:
1818
INPUT_TOKEN: ${{ secrets.NPM_TOKEN }}
1919
steps:
2020
# 1. Setup
21-
- uses: actions/checkout@v3
22-
- uses: actions/setup-node@v3
21+
- uses: actions/checkout@f43a0e5ff2bd294095638e18286ca9a3d1956744 # v3
2322
with:
24-
node-version: 22
23+
persist-credentials: false
24+
- uses: actions/setup-node@3235b876344d2a9aa001b8d1453c930bba69e610 # v3
25+
with:
26+
node-version: 20
2527
- name: Get semver info
2628
id: semver
27-
uses: akshens/semver-tag@v4
29+
uses: akshens/semver-tag@8e427cd48c699c97d021df4946f3a0e65af5047e # v4
2830
with:
2931
version: ${{ github.ref_name }}
3032

@@ -41,17 +43,16 @@ jobs:
4143
run: npm ci
4244
env:
4345
CI: true
44-
- name: Run test
46+
- name: Run build
4547
run: npm test
4648
env:
4749
CI: true
48-
- name: Run build
49-
run: npm run build
50+
- run: rm ./lib/p5-test.js ./lib/p5.pre-min.js
5051

5152
# 2. Prepare release files
5253
- run: mkdir release && mkdir p5 && cp -r ./lib/* p5/
5354
- name: Create release zip file
54-
uses: TheDoctor0/zip-release@0.6.2
55+
uses: TheDoctor0/zip-release@09336613be18a8208dfa66bd57efafd9e2685657 # 0.6.2
5556
with:
5657
type: zip
5758
filename: release/p5.zip
@@ -62,7 +63,7 @@ jobs:
6263

6364
# 3. Release p5.js
6465
- name: Create GitHub release
65-
uses: softprops/action-gh-release@v0.1.15
66+
uses: softprops/action-gh-release@de2c0eb89ae2a093876385947365aca7b0e5f844 # v0.1.15
6667
with:
6768
draft: true
6869
prerelease: ${{ steps.semver.outputs.is-prerelease == 'true' }}
@@ -71,19 +72,21 @@ jobs:
7172
token: ${{ secrets.ACCESS_TOKEN }}
7273
- name: Publish to NPM
7374
if: ${{ steps.semver.outputs.is-prerelease != 'true' }}
74-
uses: JS-DevTools/npm-publish@v1
75+
uses: JS-DevTools/npm-publish@0f451a94170d1699fd50710966d48fb26194d939 # v1
7576
with:
7677
token: ${{ secrets.NPM_TOKEN }}
78+
tag: r1
7779

7880
# 4. Update p5.js website
7981
- name: Clone p5.js website
8082
if: ${{ steps.semver.outputs.is-prerelease != 'true' }}
81-
uses: actions/checkout@v3
83+
uses: actions/checkout@f43a0e5ff2bd294095638e18286ca9a3d1956744 # v3
8284
with:
8385
repository: processing/p5.js-website
8486
path: website
8587
fetch-depth: 0
8688
token: ${{ secrets.ACCESS_TOKEN }}
89+
persist-credentials: false
8790
- name: Updated website files
8891
if: ${{ steps.semver.outputs.is-prerelease != 'true' }}
8992
run: |
@@ -104,7 +107,7 @@ jobs:
104107
git commit -m "Update p5.js to ${{ github.ref_name }}"
105108
- name: Push updated website repo
106109
if: ${{ steps.semver.outputs.is-prerelease != 'true' }}
107-
uses: ad-m/github-push-action@v0.6.0
110+
uses: ad-m/github-push-action@40bf560936a8022e68a3c00e7d2abefaf01305a6 # v0.6.0
108111
with:
109112
github_token: ${{ secrets.ACCESS_TOKEN }}
110113
branch: main
@@ -114,12 +117,13 @@ jobs:
114117
# 5. Update Bower files
115118
- name: Checkout Bower repo
116119
if: ${{ steps.semver.outputs.is-prerelease != 'true' }}
117-
uses: actions/checkout@v3
120+
uses: actions/checkout@f43a0e5ff2bd294095638e18286ca9a3d1956744 # v3
118121
with:
119122
repository: processing/p5.js-release
120123
path: bower
121124
fetch-depth: 0
122125
token: ${{ secrets.ACCESS_TOKEN }}
126+
persist-credentials: false
123127
- name: Copy new version files to Bower repo
124128
if: ${{ steps.semver.outputs.is-prerelease != 'true' }}
125129
run: |
@@ -135,7 +139,7 @@ jobs:
135139
git commit -m "Update p5.js to ${{ github.ref_name }}"
136140
- name: Push updated Bower repo
137141
if: ${{ steps.semver.outputs.is-prerelease != 'true' }}
138-
uses: ad-m/github-push-action@v0.6.0
142+
uses: ad-m/github-push-action@40bf560936a8022e68a3c00e7d2abefaf01305a6 # v0.6.0
139143
with:
140144
github_token: ${{ secrets.ACCESS_TOKEN }}
141145
branch: master

0 commit comments

Comments
 (0)