Skip to content

Commit 3b5929a

Browse files
improve supply chain security
1 parent 5e8e021 commit 3b5929a

2 files changed

Lines changed: 39 additions & 22 deletions

File tree

.github/dependabot.yml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@ updates:
55
- package-ecosystem: github-actions
66
directory: '/'
77
schedule: { interval: weekly }
8+
cooldown:
9+
default-days: 7
810
groups:
911
all-actions-version-updates:
1012
applies-to: version-updates
@@ -18,6 +20,8 @@ updates:
1820
directory: '/'
1921
schedule: { interval: daily, time: '02:00' }
2022
open-pull-requests-limit: 10
23+
cooldown:
24+
default-days: 7
2125
groups:
2226
all-cargo-version-updates:
2327
applies-to: version-updates

.github/workflows/ci.yml

Lines changed: 35 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,8 @@ defaults:
1414
jobs:
1515
test:
1616
name: Test ${{ matrix.os }} (${{ matrix.simd_mode }})
17+
permissions:
18+
contents: read
1719
runs-on: ${{ matrix.os }}
1820
strategy:
1921
fail-fast: false
@@ -23,38 +25,42 @@ jobs:
2325
env:
2426
FASTPFOR_SIMD_MODE: ${{ matrix.simd_mode }}
2527
steps:
26-
- uses: actions/checkout@v6
27-
with: { submodules: recursive }
28+
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
29+
with: {persist-credentials: false, submodules: recursive}
2830
- if: github.event_name != 'release' && github.event_name != 'workflow_dispatch'
29-
uses: Swatinem/rust-cache@v2
31+
uses: Swatinem/rust-cache@c19371144df3bb44fab255c43d04cbc2ab54d1c4 # v2.9.1
3032
with:
3133
prefix-key: "v0-${{ matrix.simd_mode }}"
32-
- uses: taiki-e/install-action@v2
34+
- uses: taiki-e/install-action@56545b37b57562edd73171cb6c62cc509db4c34e # v2.81.7
3335
with: { tool: 'just,cargo-binstall' }
3436
- run: just ci-test
3537

3638
test-nightly:
3739
name: Nightly-specific tests
40+
permissions:
41+
contents: read
3842
runs-on: ubuntu-latest
3943
steps:
40-
- uses: actions/checkout@v6
41-
with: { submodules: recursive }
44+
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
45+
with: {persist-credentials: false, submodules: recursive}
4246
- if: github.event_name != 'release' && github.event_name != 'workflow_dispatch'
43-
uses: Swatinem/rust-cache@v2
44-
- uses: taiki-e/install-action@v2
47+
uses: Swatinem/rust-cache@c19371144df3bb44fab255c43d04cbc2ab54d1c4 # v2.9.1
48+
- uses: taiki-e/install-action@56545b37b57562edd73171cb6c62cc509db4c34e # v2.81.7
4549
with: { tool: 'just' }
4650
- run: rustup install nightly --profile minimal
4751
- run: just test-publish
4852

4953
test-msrv:
5054
name: Test MSRV
55+
permissions:
56+
contents: read
5157
runs-on: ubuntu-latest
5258
steps:
53-
- uses: actions/checkout@v6
54-
with: { submodules: recursive }
59+
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
60+
with: {persist-credentials: false, submodules: recursive}
5561
- if: github.event_name != 'release' && github.event_name != 'workflow_dispatch'
56-
uses: Swatinem/rust-cache@v2
57-
- uses: taiki-e/install-action@v2
62+
uses: Swatinem/rust-cache@c19371144df3bb44fab255c43d04cbc2ab54d1c4 # v2.9.1
63+
- uses: taiki-e/install-action@56545b37b57562edd73171cb6c62cc509db4c34e # v2.81.7
5864
with: { tool: 'just' }
5965
- name: Read MSRV
6066
id: msrv
@@ -67,6 +73,8 @@ jobs:
6773

6874
fuzz:
6975
name: Fuzz
76+
permissions:
77+
contents: read
7078
runs-on: ubuntu-latest
7179
env:
7280
# The number of seconds to run the fuzz target.
@@ -79,13 +87,13 @@ jobs:
7987
- fuzz_target: decode_oracle
8088
- fuzz_target: decode_arbitrary
8189
steps:
82-
- uses: actions/checkout@v6
90+
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
8391
with: {persist-credentials: false, submodules: recursive}
8492
# Install the nightly Rust channel.
8593
- run: rustup toolchain install nightly
8694
- run: rustup default nightly
8795
# Install and cache `cargo-fuzz`.
88-
- uses: taiki-e/install-action@v2
96+
- uses: taiki-e/install-action@56545b37b57562edd73171cb6c62cc509db4c34e # v2.81.7
8997
with:
9098
tool: cargo-binstall
9199
- run: cargo binstall -y cargo-fuzz@0.13.1 # Pinned to avoid breakage.
@@ -94,33 +102,36 @@ jobs:
94102
- run: cargo fuzz build --target x86_64-unknown-linux-gnu ${{ matrix.fuzz_target }}
95103
- run: cargo fuzz run --target x86_64-unknown-linux-gnu ${{ matrix.fuzz_target }} -- -max_total_time=${{ env.FUZZ_TIME }}
96104
# Upload fuzzing artifacts on failure for post-mortem debugging.
97-
- uses: actions/upload-artifact@v7
105+
- uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
98106
if: failure()
99107
with:
100108
name: fuzzing-artifacts-${{ matrix.fuzz_target }}-${{ github.sha }}
101109
path: fuzz/artifacts
102110

103111
coverage:
104112
name: Code Coverage
113+
permissions:
114+
contents: read
105115
if: github.event_name != 'release'
106116
runs-on: ubuntu-latest
107117
steps:
108-
- uses: actions/checkout@v6
109-
with: { submodules: recursive }
110-
- uses: Swatinem/rust-cache@v2
111-
- uses: taiki-e/install-action@v2
118+
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
119+
with: {persist-credentials: false, submodules: recursive}
120+
- uses: Swatinem/rust-cache@c19371144df3bb44fab255c43d04cbc2ab54d1c4 # v2.9.1
121+
- uses: taiki-e/install-action@56545b37b57562edd73171cb6c62cc509db4c34e # v2.81.7
112122
with: { tool: 'just,cargo-llvm-cov' }
113123
- name: Generate code coverage
114124
run: just ci-coverage
115125
- name: Upload coverage to Codecov
116-
uses: codecov/codecov-action@v6
126+
uses: codecov/codecov-action@fb8b3582c8e4def4969c97caa2f19720cb33a72f # v7.0.0
117127
with:
118128
token: ${{ secrets.CODECOV_TOKEN }}
119129
files: target/llvm-cov/codecov.info
120130

121131
# This job checks if any of the previous jobs failed or were canceled.
122132
# This approach also allows some jobs to be skipped if they are not needed.
123133
ci-passed:
134+
permissions: {}
124135
needs: [ test, test-nightly, test-msrv, fuzz ]
125136
if: always()
126137
runs-on: ubuntu-latest
@@ -134,11 +145,13 @@ jobs:
134145
# Some dependencies of the `ci-passed` job might be skipped, but we still want to run if the `ci-passed` job succeeded.
135146
if: always() && startsWith(github.ref, 'refs/tags/') && needs.ci-passed.result == 'success'
136147
name: Publish to crates.io
148+
permissions:
149+
contents: read
137150
needs: [ ci-passed ]
138151
runs-on: ubuntu-latest
139152
steps:
140-
- uses: actions/checkout@v6
141-
with: { submodules: recursive }
153+
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
154+
with: {persist-credentials: false, submodules: recursive}
142155
- name: Publish to crates.io
143156
run: cargo publish
144157
env:

0 commit comments

Comments
 (0)