Skip to content

Commit 32e80af

Browse files
Tsvetan StoychevTsvetan Stoychev
authored andcommitted
Pin GitHub Actions to immutable SHAs
1 parent b1f4ef0 commit 32e80af

6 files changed

Lines changed: 35 additions & 21 deletions

File tree

‎.github/workflows/ci.yml‎

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -18,10 +18,10 @@ jobs:
1818

1919
steps:
2020
- name: Checkout
21-
uses: actions/checkout@v7
21+
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
2222

2323
- name: Setup PHP
24-
uses: shivammathur/setup-php@v2
24+
uses: shivammathur/setup-php@f3e473d116dcccaddc5834248c87452386958240 # v2
2525
with:
2626
php-version: '8.2'
2727
tools: composer:v2
@@ -49,10 +49,10 @@ jobs:
4949

5050
steps:
5151
- name: Checkout
52-
uses: actions/checkout@v7
52+
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
5353

5454
- name: Setup PHP and WP-CLI
55-
uses: shivammathur/setup-php@v2
55+
uses: shivammathur/setup-php@f3e473d116dcccaddc5834248c87452386958240 # v2
5656
with:
5757
php-version: '8.2'
5858
tools: wp-cli:2.12.0
@@ -71,10 +71,10 @@ jobs:
7171

7272
steps:
7373
- name: Checkout
74-
uses: actions/checkout@v7
74+
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
7575

7676
- name: Setup Node.js
77-
uses: actions/setup-node@v6
77+
uses: actions/setup-node@249970729cb0ef3589644e2896645e5dc5ba9c38 # v6.5.0
7878
with:
7979
node-version-file: .nvmrc
8080
cache: npm
@@ -99,10 +99,10 @@ jobs:
9999

100100
steps:
101101
- name: Checkout
102-
uses: actions/checkout@v7
102+
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
103103

104104
- name: Setup PHP
105-
uses: shivammathur/setup-php@v2
105+
uses: shivammathur/setup-php@f3e473d116dcccaddc5834248c87452386958240 # v2
106106
with:
107107
php-version: ${{ matrix.php }}
108108
tools: composer:v2
@@ -152,10 +152,10 @@ jobs:
152152

153153
steps:
154154
- name: Checkout
155-
uses: actions/checkout@v7
155+
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
156156

157157
- name: Setup PHP
158-
uses: shivammathur/setup-php@v2
158+
uses: shivammathur/setup-php@f3e473d116dcccaddc5834248c87452386958240 # v2
159159
with:
160160
php-version: ${{ matrix.php }}
161161
tools: composer:v2
@@ -195,10 +195,10 @@ jobs:
195195

196196
steps:
197197
- name: Checkout
198-
uses: actions/checkout@v7
198+
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
199199

200200
- name: Setup release PHP
201-
uses: shivammathur/setup-php@v2
201+
uses: shivammathur/setup-php@f3e473d116dcccaddc5834248c87452386958240 # v2
202202
with:
203203
php-version: '7.4'
204204
tools: composer:v2
@@ -216,7 +216,7 @@ jobs:
216216
run: sh tools/smoke-test-release.sh release/basicrum.zip
217217

218218
- name: Upload release artifact
219-
uses: actions/upload-artifact@v7
219+
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
220220
with:
221221
name: basicrum-release
222222
path: |

‎.github/workflows/prerelease.yml‎

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,10 +14,10 @@ jobs:
1414

1515
steps:
1616
- name: Checkout
17-
uses: actions/checkout@v7
17+
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
1818

1919
- name: Setup release PHP
20-
uses: shivammathur/setup-php@v2
20+
uses: shivammathur/setup-php@f3e473d116dcccaddc5834248c87452386958240 # v2
2121
with:
2222
php-version: '7.4'
2323
tools: composer:v2
@@ -35,7 +35,7 @@ jobs:
3535
run: sh tools/smoke-test-release.sh release/basicrum.zip
3636

3737
- name: Upload release assets
38-
uses: softprops/action-gh-release@v3
38+
uses: softprops/action-gh-release@3d0d9888cb7fd7b750713d6e236d1fcb99157228 # v3.0.2
3939
with:
4040
files: |
4141
release/basicrum.zip

‎.github/workflows/release.yml‎

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,10 +14,10 @@ jobs:
1414

1515
steps:
1616
- name: Checkout
17-
uses: actions/checkout@v7
17+
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
1818

1919
- name: Setup release PHP
20-
uses: shivammathur/setup-php@v2
20+
uses: shivammathur/setup-php@f3e473d116dcccaddc5834248c87452386958240 # v2
2121
with:
2222
php-version: '7.4'
2323
tools: composer:v2
@@ -35,7 +35,7 @@ jobs:
3535
run: sh tools/smoke-test-release.sh release/basicrum.zip
3636

3737
- name: Upload release assets
38-
uses: softprops/action-gh-release@v3
38+
uses: softprops/action-gh-release@3d0d9888cb7fd7b750713d6e236d1fcb99157228 # v3.0.2
3939
with:
4040
files: |
4141
release/basicrum.zip

‎AGENTS.md‎

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,9 @@ namespace, PSR-4 Composer autoloading, PHP 7.4+, and WordPress 6.0+.
3030
hard-coded script handles.
3131
- Boomerang lives in `assets/js/boomr/`; standard and consent loaders live in
3232
`assets/js/loaders/`.
33+
- Pin third-party GitHub Actions to full 40-character commit SHAs. Keep the
34+
reviewed release tag in the adjacent comment and update pins through reviewed
35+
Dependabot pull requests.
3336

3437
## Checks
3538

‎README.md‎

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -135,3 +135,14 @@ security advisories. CI runs all three checks on every push and pull request.
135135
Dependabot checks npm, Composer dependencies, and GitHub Actions weekly. CI
136136
workflows use a read-only `GITHUB_TOKEN`; release and pre-release workflows
137137
receive only the `contents: write` permission required to attach release assets.
138+
139+
### GitHub Actions supply-chain policy
140+
141+
Every third-party GitHub Action is pinned to a full 40-character commit SHA.
142+
The comment beside each pin identifies the reviewed upstream release tag.
143+
Dependabot opens weekly GitHub Actions update pull requests. Before merging one,
144+
verify that the proposed SHA belongs to the expected upstream release, review the
145+
upstream changes and permissions, keep the SHA and release-tag comment in sync,
146+
and require CI to pass. Exercise an update used only by a release workflow with
147+
a prerelease before using it for a production release. Apply the same review when
148+
making a manual action update; never replace a pin with a mutable tag.

‎checklist.md‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -119,8 +119,8 @@ Acceptance criteria:
119119
- [x] Set explicit minimal `GITHUB_TOKEN` permissions in every workflow.
120120
- [x] Give release workflows only the additional permissions required to upload
121121
assets.
122-
- [ ] Pin third-party GitHub Actions to immutable commit SHAs.
123-
- [ ] Document how pinned actions are reviewed and updated.
122+
- [x] Pin third-party GitHub Actions to immutable commit SHAs.
123+
- [x] Document how pinned actions are reviewed and updated.
124124

125125
Acceptance criteria:
126126

0 commit comments

Comments
 (0)