Skip to content

Commit 863ad36

Browse files
build: pin CI action SHAs and dev-tool versions
Pin every GitHub Actions `uses:` to a commit SHA with a `# vX.Y.Z` comment (keeps Renovate/Dependabot working), and pin the versions of the dev tools we install — cargo-audit, cargo-deny, cargo-nextest, cargo-fuzz, cargo-doc-md, cross, protoc, dprint, and Node — across all workflows and the Makefile. OS packages installed via apt/brew (jq, netcat, shellcheck, musl-tools) are intentionally left unpinned: exact apt versions get garbage-collected from mirrors and break CI over time.
1 parent caf6abd commit 863ad36

9 files changed

Lines changed: 72 additions & 63 deletions

File tree

.github/workflows/bench.yml

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,25 +14,26 @@ jobs:
1414
name: Bench
1515
runs-on: ubuntu-latest
1616
steps:
17-
- uses: actions/checkout@v6
17+
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
1818
with:
1919
persist-credentials: false
2020

21-
- uses: actions-rust-lang/setup-rust-toolchain@v1
21+
- uses: actions-rust-lang/setup-rust-toolchain@46268bd060767258de96ed93c1251119784f2ab6 # v1.16.1
2222
with:
2323
rustflags: ""
2424

2525
- name: Install protoc
26-
uses: arduino/setup-protoc@v3
26+
uses: arduino/setup-protoc@c65c819552d16ad3c9b72d9dfd5ba5237b9c906b # v3.0.0
2727
with:
28+
version: "35.1"
2829
repo-token: ${{ secrets.GITHUB_TOKEN }}
2930

3031
- name: Bench
3132
run: cargo bench --workspace --no-fail-fast -- --quick
3233

3334
- name: Upload criterion reports
3435
if: always()
35-
uses: actions/upload-artifact@v7
36+
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
3637
with:
3738
name: criterion-reports
3839
path: target/criterion/**

.github/workflows/ci.yml

Lines changed: 23 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -16,18 +16,18 @@ jobs:
1616
name: Security Audit
1717
runs-on: ubuntu-latest
1818
steps:
19-
- uses: actions/checkout@v6
19+
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
2020
with:
2121
persist-credentials: false
22-
- uses: cargo-bins/cargo-binstall@v1.20.0
23-
- run: cargo binstall -y cargo-audit
22+
- uses: cargo-bins/cargo-binstall@30b5ca8b54e1dcffd9548bc87ede1531310fdc67 # v1.20.0
23+
- run: cargo binstall -y cargo-audit@0.22.2
2424
- run: cargo audit --deny warnings
2525

2626
zizmor:
2727
name: Actions Lint
2828
runs-on: ubuntu-latest
2929
steps:
30-
- uses: actions/checkout@v6
30+
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
3131
with:
3232
persist-credentials: false
3333
- name: Install zizmor
@@ -41,40 +41,42 @@ jobs:
4141
name: Licenses & Bans
4242
runs-on: ubuntu-latest
4343
steps:
44-
- uses: actions/checkout@v6
44+
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
4545
with:
4646
persist-credentials: false
47-
- uses: EmbarkStudios/cargo-deny-action@v2
47+
- uses: EmbarkStudios/cargo-deny-action@bb137d7af7e4fb67e5f82a49c4fce4fad40782fe # v2.0.20
4848
with:
4949
command: check licenses bans sources
5050

5151
trufflehog:
5252
name: Secret Scan
5353
runs-on: ubuntu-latest
5454
steps:
55-
- uses: actions/checkout@v6
55+
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
5656
with:
5757
fetch-depth: 0
5858
persist-credentials: false
59-
- uses: trufflesecurity/trufflehog@v3.95.5
59+
- uses: trufflesecurity/trufflehog@d411fff7b8879a62509f3fa98c07f247ac089a51 # v3.95.5
6060
with:
6161
extra_args: --results=verified,unverified,unknown
6262

6363
fmt:
6464
name: Format
6565
runs-on: ubuntu-latest
6666
steps:
67-
- uses: actions/checkout@v6
67+
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
6868
with:
6969
persist-credentials: false
7070
# dprint formats TOML + Markdown + Rust via its exec plugin, which shells
7171
# out to rustfmt, so the toolchain must be present. setup-rust-toolchain
7272
# installs it from rust-toolchain.toml (including the rustfmt component).
73-
- uses: actions-rust-lang/setup-rust-toolchain@v1
73+
- uses: actions-rust-lang/setup-rust-toolchain@46268bd060767258de96ed93c1251119784f2ab6 # v1.16.1
7474
with:
7575
cache: false
7676
rustflags: ""
77-
- uses: dprint/check@v2.3
77+
- uses: dprint/check@9cb3a2b17a8e606d37aae341e49df3654933fc23 # v2.3
78+
with:
79+
dprint-version: "0.54.0"
7880

7981
check:
8082
name: Check (${{ matrix.os }})
@@ -84,23 +86,24 @@ jobs:
8486
matrix:
8587
os: [ubuntu-latest, macos-latest, windows-latest]
8688
steps:
87-
- uses: actions/checkout@v6
89+
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
8890
with:
8991
persist-credentials: false
9092

91-
- uses: actions-rust-lang/setup-rust-toolchain@v1
93+
- uses: actions-rust-lang/setup-rust-toolchain@46268bd060767258de96ed93c1251119784f2ab6 # v1.16.1
9294

9395
- name: Install protoc
94-
uses: arduino/setup-protoc@v3
96+
uses: arduino/setup-protoc@c65c819552d16ad3c9b72d9dfd5ba5237b9c906b # v3.0.0
9597
with:
98+
version: "35.1"
9699
repo-token: ${{ secrets.GITHUB_TOKEN }}
97100

98101
- name: Clippy
99102
run: cargo clippy --workspace -- -D warnings
100103

101104
- name: Install cargo-nextest
102-
uses: cargo-bins/cargo-binstall@v1.20.0
103-
- run: cargo binstall -y cargo-nextest
105+
uses: cargo-bins/cargo-binstall@30b5ca8b54e1dcffd9548bc87ede1531310fdc67 # v1.20.0
106+
- run: cargo binstall -y cargo-nextest@0.9.137
104107

105108
- name: Test
106109
run: cargo nextest run --workspace
@@ -113,22 +116,23 @@ jobs:
113116
name: Fuzz targets (check)
114117
runs-on: ubuntu-latest
115118
steps:
116-
- uses: actions/checkout@v6
119+
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
117120
with:
118121
persist-credentials: false
119122

120123
- id: nightly
121124
run: echo "toolchain=$(cat .rust-nightly)" >> "$GITHUB_OUTPUT"
122125

123-
- uses: actions-rust-lang/setup-rust-toolchain@v1
126+
- uses: actions-rust-lang/setup-rust-toolchain@46268bd060767258de96ed93c1251119784f2ab6 # v1.16.1
124127
with:
125128
toolchain: ${{ steps.nightly.outputs.toolchain }}
126129
rustflags: ""
127130
cache-workspaces: fuzz -> fuzz/target
128131

129132
- name: Install protoc
130-
uses: arduino/setup-protoc@v3
133+
uses: arduino/setup-protoc@c65c819552d16ad3c9b72d9dfd5ba5237b9c906b # v3.0.0
131134
with:
135+
version: "35.1"
132136
repo-token: ${{ secrets.GITHUB_TOKEN }}
133137

134138
- name: Check fuzz targets

.github/workflows/demo-e2e.yml

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,17 +17,18 @@ jobs:
1717
runs-on: ubuntu-22.04
1818
timeout-minutes: 15
1919
steps:
20-
- uses: actions/checkout@v6
20+
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
2121
with:
2222
persist-credentials: false
2323

24-
- uses: actions-rust-lang/setup-rust-toolchain@v1
24+
- uses: actions-rust-lang/setup-rust-toolchain@46268bd060767258de96ed93c1251119784f2ab6 # v1.16.1
2525
with:
2626
rustflags: ""
2727

2828
- name: Install protoc
29-
uses: arduino/setup-protoc@v3
29+
uses: arduino/setup-protoc@c65c819552d16ad3c9b72d9dfd5ba5237b9c906b # v3.0.0
3030
with:
31+
version: "35.1"
3132
repo-token: ${{ secrets.GITHUB_TOKEN }}
3233

3334
- name: Install jq + netcat
@@ -58,7 +59,7 @@ jobs:
5859
5960
- name: Upload demo logs
6061
if: always()
61-
uses: actions/upload-artifact@v7
62+
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
6263
with:
6364
name: demo-logs
6465
path: examples/demo/logs/

.github/workflows/docs.yml

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -30,41 +30,42 @@ jobs:
3030
name: Build docs
3131
runs-on: ubuntu-latest
3232
steps:
33-
- uses: actions/checkout@v6
33+
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
3434
with:
3535
persist-credentials: false
3636

3737
- name: Install Rust nightly (required by cargo-doc-md)
38-
uses: actions-rust-lang/setup-rust-toolchain@v1
38+
uses: actions-rust-lang/setup-rust-toolchain@46268bd060767258de96ed93c1251119784f2ab6 # v1.16.1
3939
with:
4040
toolchain: nightly
4141
cache: false
4242
rustflags: ""
4343

4444
- name: Install Rust (pinned in rust-toolchain.toml)
45-
uses: actions-rust-lang/setup-rust-toolchain@v1
45+
uses: actions-rust-lang/setup-rust-toolchain@46268bd060767258de96ed93c1251119784f2ab6 # v1.16.1
4646
with:
4747
rustflags: ""
4848
cache-shared-key: docs
4949

5050
- name: Install protoc
51-
uses: arduino/setup-protoc@v3
51+
uses: arduino/setup-protoc@c65c819552d16ad3c9b72d9dfd5ba5237b9c906b # v3.0.0
5252
with:
53+
version: "35.1"
5354
repo-token: ${{ secrets.GITHUB_TOKEN }}
5455

5556
- name: Install cargo-doc-md
56-
run: cargo install --locked cargo-doc-md
57+
run: cargo install --locked --version 0.11.0 cargo-doc-md
5758

5859
- name: Set up pnpm
59-
uses: pnpm/action-setup@v6
60+
uses: pnpm/action-setup@0ebf47130e4866e96fce0953f49152a61190b271 # v6.0.9
6061
with:
6162
version: 10.30.3
6263
run_install: false
6364

6465
- name: Set up Node
65-
uses: actions/setup-node@v6
66+
uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
6667
with:
67-
node-version: 24
68+
node-version: "24.16.0"
6869
cache: pnpm
6970
cache-dependency-path: docs-site/pnpm-lock.yaml
7071
registry-url: https://registry.npmjs.org
@@ -81,7 +82,7 @@ jobs:
8182

8283
- name: Upload Pages artifact
8384
if: (github.event_name == 'push' && github.ref == 'refs/heads/main') || github.event_name == 'workflow_dispatch'
84-
uses: actions/upload-pages-artifact@v5
85+
uses: actions/upload-pages-artifact@fc324d3547104276b827a68afc52ff2a11cc49c9 # v5.0.0
8586
with:
8687
path: docs-site/dist
8788

@@ -99,4 +100,4 @@ jobs:
99100
steps:
100101
- name: Deploy to GitHub Pages
101102
id: deploy
102-
uses: actions/deploy-pages@v5
103+
uses: actions/deploy-pages@cd2ce8fcbc39b97be8ca5fce6e763baed58fa128 # v5.0.0

.github/workflows/fuzz.yml

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -18,29 +18,30 @@ jobs:
1818
matrix:
1919
target: [normalizer, paseto_verify, capability_seed, capability_seed_toml]
2020
steps:
21-
- uses: actions/checkout@v6
21+
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
2222
with:
2323
persist-credentials: false
2424

2525
- id: nightly
2626
run: echo "toolchain=$(cat .rust-nightly)" >> "$GITHUB_OUTPUT"
2727

28-
- uses: actions-rust-lang/setup-rust-toolchain@v1
28+
- uses: actions-rust-lang/setup-rust-toolchain@46268bd060767258de96ed93c1251119784f2ab6 # v1.16.1
2929
with:
3030
toolchain: ${{ steps.nightly.outputs.toolchain }}
3131
rustflags: ""
3232
cache-workspaces: fuzz -> fuzz/target
3333

3434
- name: Install protoc
35-
uses: arduino/setup-protoc@v3
35+
uses: arduino/setup-protoc@c65c819552d16ad3c9b72d9dfd5ba5237b9c906b # v3.0.0
3636
with:
37+
version: "35.1"
3738
repo-token: ${{ secrets.GITHUB_TOKEN }}
3839

3940
- name: Install cargo-binstall
40-
uses: cargo-bins/cargo-binstall@v1.20.0
41+
uses: cargo-bins/cargo-binstall@30b5ca8b54e1dcffd9548bc87ede1531310fdc67 # v1.20.0
4142

4243
- name: Install cargo-fuzz
43-
run: cargo binstall --no-confirm --locked cargo-fuzz
44+
run: cargo binstall --no-confirm --locked cargo-fuzz@0.13.2
4445

4546
- name: Run ${{ matrix.target }}
4647
env:

.github/workflows/installer-lint.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ jobs:
2020
name: ShellCheck install.sh
2121
runs-on: ubuntu-latest
2222
steps:
23-
- uses: actions/checkout@v6
23+
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
2424
with:
2525
persist-credentials: false
2626
- name: Install shellcheck
@@ -32,7 +32,7 @@ jobs:
3232
name: PSScriptAnalyzer install.ps1
3333
runs-on: windows-latest
3434
steps:
35-
- uses: actions/checkout@v6
35+
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
3636
with:
3737
persist-credentials: false
3838
- name: Install PSScriptAnalyzer

.github/workflows/installer-smoke.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ jobs:
2121
matrix:
2222
runner: [ubuntu-latest, macos-13, macos-14]
2323
steps:
24-
- uses: actions/checkout@v6
24+
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
2525
with:
2626
persist-credentials: false
2727
- name: Run install.sh (no-brew, no-init, no-modify-path)
@@ -52,7 +52,7 @@ jobs:
5252
name: install.ps1 (windows-latest)
5353
runs-on: windows-latest
5454
steps:
55-
- uses: actions/checkout@v6
55+
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
5656
with:
5757
persist-credentials: false
5858
- name: Run install.ps1

0 commit comments

Comments
 (0)