Skip to content

Commit 30c05ea

Browse files
authored
ci: pin workflow actions to immutable SHAs (#220)
1 parent 6f7b04a commit 30c05ea

7 files changed

Lines changed: 63 additions & 51 deletions

File tree

.github/workflows/ci.yml

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -45,19 +45,19 @@ jobs:
4545
if: ${{ !startsWith(github.event.pull_request.head.ref, 'release-plz-') }}
4646
runs-on: ubuntu-latest
4747
steps:
48-
- uses: actions/checkout@v6
48+
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # ratchet:actions/checkout@v6
4949

5050
- name: Install Rust toolchain
5151
run: rustup show
5252

53-
- uses: actions/setup-go@v6
53+
- uses: actions/setup-go@4a3601121dd01d1626a1e23e37211e3254c1c06c # ratchet:actions/setup-go@v6
5454
with:
5555
go-version: "1.25"
5656
cache: false
5757

58-
- uses: extractions/setup-just@v3
58+
- uses: extractions/setup-just@f8a3cce218d9f83db3a2ecd90e41ac3de6cdfd9b # ratchet:extractions/setup-just@v3
5959

60-
- uses: Swatinem/rust-cache@v2
60+
- uses: Swatinem/rust-cache@e18b497796c12c097a38f9edb9d0641fb99eee32 # ratchet:Swatinem/rust-cache@v2
6161

6262
- name: Check formatting
6363
run: just format-check
@@ -80,14 +80,14 @@ jobs:
8080
- name: Test prelude Go module
8181
run: cd prelude && go test ./...
8282

83-
- uses: taiki-e/install-action@v2
83+
- uses: taiki-e/install-action@1329c298aa20c3257846c9b2e0e55967df3e3c37 # ratchet:taiki-e/install-action@v2
8484
with:
8585
tool: cargo-shear@1.6.0
8686

8787
- name: Check unused dependencies
8888
run: cargo shear
8989

90-
- uses: taiki-e/install-action@v2
90+
- uses: taiki-e/install-action@1329c298aa20c3257846c9b2e0e55967df3e3c37 # ratchet:taiki-e/install-action@v2
9191
with:
9292
tool: cargo-deny@0.19.0
9393

.github/workflows/fuzz.yml

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -11,17 +11,17 @@ jobs:
1111
fuzz-parse:
1212
runs-on: ubuntu-latest
1313
steps:
14-
- uses: actions/checkout@v6
14+
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # ratchet:actions/checkout@v6
1515

16-
- uses: dtolnay/rust-toolchain@nightly
16+
- uses: dtolnay/rust-toolchain@5b842231ba77f5c045dba54ac5560fed2db780e2 # ratchet:dtolnay/rust-toolchain@nightly
1717

18-
- uses: Swatinem/rust-cache@v2
18+
- uses: Swatinem/rust-cache@e18b497796c12c097a38f9edb9d0641fb99eee32 # ratchet:Swatinem/rust-cache@v2
1919
with:
2020
workspaces: fuzz -> target
2121

2222
- name: Cache cargo-fuzz binary
2323
id: cache-cargo-fuzz
24-
uses: actions/cache@v5
24+
uses: actions/cache@27d5ce7f107fe9357f9df03efb73ab90386fccae # ratchet:actions/cache@v5
2525
with:
2626
path: ~/.cargo/bin/cargo-fuzz
2727
key: cargo-fuzz-0.13.1
@@ -31,12 +31,12 @@ jobs:
3131
run: cargo install cargo-fuzz --version 0.13.1 --locked
3232

3333
- name: Restore fuzz-parse corpus
34-
uses: actions/cache/restore@v5
34+
uses: actions/cache/restore@27d5ce7f107fe9357f9df03efb73ab90386fccae # ratchet:actions/cache/restore@v5
3535
with:
3636
path: fuzz/corpus/parse
3737
key: fuzz-corpus-parse
3838

39-
- uses: extractions/setup-just@v3
39+
- uses: extractions/setup-just@f8a3cce218d9f83db3a2ecd90e41ac3de6cdfd9b # ratchet:extractions/setup-just@v3
4040

4141
- name: Minimize fuzz-parse corpus
4242
run: cargo +nightly fuzz cmin parse -- -rss_limit_mb=2048
@@ -46,14 +46,14 @@ jobs:
4646

4747
- name: Save fuzz-parse corpus
4848
if: always()
49-
uses: actions/cache/save@v5
49+
uses: actions/cache/save@27d5ce7f107fe9357f9df03efb73ab90386fccae # ratchet:actions/cache/save@v5
5050
with:
5151
path: fuzz/corpus/parse
5252
key: fuzz-corpus-parse-${{ github.run_id }}
5353

5454
- name: Upload crash artifacts
5555
if: failure()
56-
uses: actions/upload-artifact@v6
56+
uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # ratchet:actions/upload-artifact@v6
5757
with:
5858
name: fuzz-crash-parse
5959
path: fuzz/artifacts/
@@ -74,17 +74,17 @@ jobs:
7474
fuzz-infer:
7575
runs-on: ubuntu-latest
7676
steps:
77-
- uses: actions/checkout@v6
77+
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # ratchet:actions/checkout@v6
7878

79-
- uses: dtolnay/rust-toolchain@nightly
79+
- uses: dtolnay/rust-toolchain@5b842231ba77f5c045dba54ac5560fed2db780e2 # ratchet:dtolnay/rust-toolchain@nightly
8080

81-
- uses: Swatinem/rust-cache@v2
81+
- uses: Swatinem/rust-cache@e18b497796c12c097a38f9edb9d0641fb99eee32 # ratchet:Swatinem/rust-cache@v2
8282
with:
8383
workspaces: fuzz -> target
8484

8585
- name: Cache cargo-fuzz binary
8686
id: cache-cargo-fuzz
87-
uses: actions/cache@v5
87+
uses: actions/cache@27d5ce7f107fe9357f9df03efb73ab90386fccae # ratchet:actions/cache@v5
8888
with:
8989
path: ~/.cargo/bin/cargo-fuzz
9090
key: cargo-fuzz-0.13.1
@@ -94,12 +94,12 @@ jobs:
9494
run: cargo install cargo-fuzz --version 0.13.1 --locked
9595

9696
- name: Restore fuzz-infer corpus
97-
uses: actions/cache/restore@v5
97+
uses: actions/cache/restore@27d5ce7f107fe9357f9df03efb73ab90386fccae # ratchet:actions/cache/restore@v5
9898
with:
9999
path: fuzz/corpus/infer
100100
key: fuzz-corpus-infer
101101

102-
- uses: extractions/setup-just@v3
102+
- uses: extractions/setup-just@f8a3cce218d9f83db3a2ecd90e41ac3de6cdfd9b # ratchet:extractions/setup-just@v3
103103

104104
- name: Minimize fuzz-infer corpus
105105
run: cargo +nightly fuzz cmin infer -- -rss_limit_mb=2048
@@ -109,14 +109,14 @@ jobs:
109109

110110
- name: Save fuzz-infer corpus
111111
if: always()
112-
uses: actions/cache/save@v5
112+
uses: actions/cache/save@27d5ce7f107fe9357f9df03efb73ab90386fccae # ratchet:actions/cache/save@v5
113113
with:
114114
path: fuzz/corpus/infer
115115
key: fuzz-corpus-infer-${{ github.run_id }}
116116

117117
- name: Upload crash artifacts
118118
if: failure()
119-
uses: actions/upload-artifact@v6
119+
uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # ratchet:actions/upload-artifact@v6
120120
with:
121121
name: fuzz-crash-infer
122122
path: fuzz/artifacts/

.github/workflows/release-gates.yml

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -17,19 +17,19 @@ jobs:
1717
if: ${{ startsWith(github.event.pull_request.head.ref, 'release-plz-') }}
1818
runs-on: ubuntu-latest
1919
steps:
20-
- uses: actions/checkout@v6
20+
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # ratchet:actions/checkout@v6
2121

2222
- name: Install Rust toolchain
2323
run: rustup show
2424

25-
- uses: actions/setup-go@v6
25+
- uses: actions/setup-go@4a3601121dd01d1626a1e23e37211e3254c1c06c # ratchet:actions/setup-go@v6
2626
with:
2727
go-version: "1.25"
2828
cache: false
2929

30-
- uses: extractions/setup-just@v3
30+
- uses: extractions/setup-just@f8a3cce218d9f83db3a2ecd90e41ac3de6cdfd9b # ratchet:extractions/setup-just@v3
3131

32-
- uses: Swatinem/rust-cache@v2
32+
- uses: Swatinem/rust-cache@e18b497796c12c097a38f9edb9d0641fb99eee32 # ratchet:Swatinem/rust-cache@v2
3333

3434
- name: Run emit runtime suite
3535
run: just test-emit-runtime
@@ -39,12 +39,12 @@ jobs:
3939
if: ${{ startsWith(github.event.pull_request.head.ref, 'release-plz-') }}
4040
runs-on: windows-latest
4141
steps:
42-
- uses: actions/checkout@v6
42+
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # ratchet:actions/checkout@v6
4343

4444
- name: Install Rust toolchain
4545
run: rustup show
4646

47-
- uses: Swatinem/rust-cache@v2
47+
- uses: Swatinem/rust-cache@e18b497796c12c097a38f9edb9d0641fb99eee32 # ratchet:Swatinem/rust-cache@v2
4848

4949
- name: Build lisette
5050
run: cargo build -p lisette
@@ -54,12 +54,12 @@ jobs:
5454
if: ${{ startsWith(github.event.pull_request.head.ref, 'release-plz-') }}
5555
runs-on: ubuntu-latest
5656
steps:
57-
- uses: actions/checkout@v6
57+
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # ratchet:actions/checkout@v6
5858

5959
- name: Install Rust toolchain
6060
run: rustup show
6161

62-
- uses: Swatinem/rust-cache@v2
62+
- uses: Swatinem/rust-cache@e18b497796c12c097a38f9edb9d0641fb99eee32 # ratchet:Swatinem/rust-cache@v2
6363

6464
- name: Cargo publish dry-run
6565
run: cargo publish --workspace --dry-run

.github/workflows/release-prepare.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,15 +17,15 @@ jobs:
1717
group: release-prepare-${{ github.ref }}
1818
cancel-in-progress: false
1919
steps:
20-
- uses: actions/checkout@v6
20+
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # ratchet:actions/checkout@v6
2121
with:
2222
fetch-depth: 0
2323
token: ${{ secrets.RELEASE_PLZ_TOKEN }}
2424

2525
- name: Install Rust toolchain
2626
run: rustup show
2727

28-
- uses: release-plz/action@v0.5
28+
- uses: release-plz/action@1528104d2ca23787631a1c1f022abb64b34c1e11 # ratchet:release-plz/action@v0.5
2929
with:
3030
command: release-pr
3131
env:

.github/workflows/release-publish.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,15 +19,15 @@ jobs:
1919
pull-requests: write
2020
issues: write
2121
steps:
22-
- uses: actions/checkout@v6
22+
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # ratchet:actions/checkout@v6
2323
with:
2424
fetch-depth: 0
2525
token: ${{ secrets.RELEASE_PLZ_TOKEN }}
2626

2727
- name: Install Rust toolchain
2828
run: rustup show
2929

30-
- uses: release-plz/action@v0.5
30+
- uses: release-plz/action@1528104d2ca23787631a1c1f022abb64b34c1e11 # ratchet:release-plz/action@v0.5
3131
id: release
3232
with:
3333
command: release

.github/workflows/release.yml

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ jobs:
5555
env:
5656
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
5757
steps:
58-
- uses: actions/checkout@v6
58+
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # ratchet:actions/checkout@v6
5959
with:
6060
persist-credentials: false
6161
submodules: recursive
@@ -65,7 +65,7 @@ jobs:
6565
shell: bash
6666
run: "curl --proto '=https' --tlsv1.2 -LsSf https://github.com/axodotdev/cargo-dist/releases/download/v0.31.0/cargo-dist-installer.sh | sh"
6767
- name: Cache dist
68-
uses: actions/upload-artifact@v6
68+
uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # ratchet:actions/upload-artifact@v6
6969
with:
7070
name: cargo-dist-cache
7171
path: ~/.cargo/bin/dist
@@ -81,7 +81,7 @@ jobs:
8181
cat plan-dist-manifest.json
8282
echo "manifest=$(jq -c "." plan-dist-manifest.json)" >> "$GITHUB_OUTPUT"
8383
- name: "Upload dist-manifest.json"
84-
uses: actions/upload-artifact@v6
84+
uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # ratchet:actions/upload-artifact@v6
8585
with:
8686
name: artifacts-plan-dist-manifest
8787
path: plan-dist-manifest.json
@@ -119,7 +119,7 @@ jobs:
119119
- name: enable windows longpaths
120120
run: |
121121
git config --global core.longpaths true
122-
- uses: actions/checkout@v6
122+
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # ratchet:actions/checkout@v6
123123
with:
124124
persist-credentials: false
125125
submodules: recursive
@@ -134,7 +134,7 @@ jobs:
134134
run: ${{ matrix.install_dist.run }}
135135
# Get the dist-manifest
136136
- name: Fetch local artifacts
137-
uses: actions/download-artifact@v7
137+
uses: actions/download-artifact@37930b1c2abaa49bbe596cd826c3c89aef350131 # ratchet:actions/download-artifact@v7
138138
with:
139139
pattern: artifacts-*
140140
path: target/distrib/
@@ -148,7 +148,7 @@ jobs:
148148
dist build ${{ needs.plan.outputs.tag-flag }} --print=linkage --output-format=json ${{ matrix.dist_args }} > dist-manifest.json
149149
echo "dist ran successfully"
150150
- name: Attest
151-
uses: actions/attest-build-provenance@v3
151+
uses: actions/attest-build-provenance@977bb373ede98d70efdf65b84cb5f73e068dcc2a # ratchet:actions/attest-build-provenance@v3
152152
with:
153153
subject-path: "target/distrib/*${{ join(matrix.targets, ', ') }}*"
154154
- id: cargo-dist
@@ -165,7 +165,7 @@ jobs:
165165
166166
cp dist-manifest.json "$BUILD_MANIFEST_NAME"
167167
- name: "Upload artifacts"
168-
uses: actions/upload-artifact@v6
168+
uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # ratchet:actions/upload-artifact@v6
169169
with:
170170
name: artifacts-build-local-${{ join(matrix.targets, '_') }}
171171
path: |
@@ -182,19 +182,19 @@ jobs:
182182
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
183183
BUILD_MANIFEST_NAME: target/distrib/global-dist-manifest.json
184184
steps:
185-
- uses: actions/checkout@v6
185+
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # ratchet:actions/checkout@v6
186186
with:
187187
persist-credentials: false
188188
submodules: recursive
189189
- name: Install cached dist
190-
uses: actions/download-artifact@v7
190+
uses: actions/download-artifact@37930b1c2abaa49bbe596cd826c3c89aef350131 # ratchet:actions/download-artifact@v7
191191
with:
192192
name: cargo-dist-cache
193193
path: ~/.cargo/bin/
194194
- run: chmod +x ~/.cargo/bin/dist
195195
# Get all the local artifacts for the global tasks to use (for e.g. checksums)
196196
- name: Fetch local artifacts
197-
uses: actions/download-artifact@v7
197+
uses: actions/download-artifact@37930b1c2abaa49bbe596cd826c3c89aef350131 # ratchet:actions/download-artifact@v7
198198
with:
199199
pattern: artifacts-*
200200
path: target/distrib/
@@ -212,7 +212,7 @@ jobs:
212212
213213
cp dist-manifest.json "$BUILD_MANIFEST_NAME"
214214
- name: "Upload artifacts"
215-
uses: actions/upload-artifact@v6
215+
uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # ratchet:actions/upload-artifact@v6
216216
with:
217217
name: artifacts-build-global
218218
path: |
@@ -232,19 +232,19 @@ jobs:
232232
outputs:
233233
val: ${{ steps.host.outputs.manifest }}
234234
steps:
235-
- uses: actions/checkout@v6
235+
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # ratchet:actions/checkout@v6
236236
with:
237237
persist-credentials: false
238238
submodules: recursive
239239
- name: Install cached dist
240-
uses: actions/download-artifact@v7
240+
uses: actions/download-artifact@37930b1c2abaa49bbe596cd826c3c89aef350131 # ratchet:actions/download-artifact@v7
241241
with:
242242
name: cargo-dist-cache
243243
path: ~/.cargo/bin/
244244
- run: chmod +x ~/.cargo/bin/dist
245245
# Fetch artifacts from scratch-storage
246246
- name: Fetch artifacts
247-
uses: actions/download-artifact@v7
247+
uses: actions/download-artifact@37930b1c2abaa49bbe596cd826c3c89aef350131 # ratchet:actions/download-artifact@v7
248248
with:
249249
pattern: artifacts-*
250250
path: target/distrib/
@@ -257,14 +257,14 @@ jobs:
257257
cat dist-manifest.json
258258
echo "manifest=$(jq -c "." dist-manifest.json)" >> "$GITHUB_OUTPUT"
259259
- name: "Upload dist-manifest.json"
260-
uses: actions/upload-artifact@v6
260+
uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # ratchet:actions/upload-artifact@v6
261261
with:
262262
# Overwrite the previous copy
263263
name: artifacts-dist-manifest
264264
path: dist-manifest.json
265265
# Create a GitHub Release while uploading all files to it
266266
- name: "Download GitHub Artifacts"
267-
uses: actions/download-artifact@v7
267+
uses: actions/download-artifact@37930b1c2abaa49bbe596cd826c3c89aef350131 # ratchet:actions/download-artifact@v7
268268
with:
269269
pattern: artifacts-*
270270
path: artifacts
@@ -295,7 +295,7 @@ jobs:
295295
env:
296296
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
297297
steps:
298-
- uses: actions/checkout@v6
298+
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # ratchet:actions/checkout@v6
299299
with:
300300
persist-credentials: false
301301
submodules: recursive

justfile

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -95,3 +95,15 @@ commit-stdlib-typedefs version:
9595
# Build the playground and write output to docs/play/ (served at lisette.run/play)
9696
rebuild-playground:
9797
cd playground && npm install && npm run build:wasm && npm run build
98+
99+
ci-pin:
100+
ratchet pin .github/workflows/*.yml
101+
102+
ci-update:
103+
ratchet update .github/workflows/*.yml
104+
105+
ci-upgrade:
106+
ratchet upgrade .github/workflows/*.yml
107+
108+
ci-lint:
109+
ratchet lint .github/workflows/*.yml

0 commit comments

Comments
 (0)