Skip to content

Commit 35a1be8

Browse files
committed
ci: ensure that github CI config is safe using zizmor
Zizmor: <https://woodruffw.github.io/zizmor/>
1 parent 1df437e commit 35a1be8

File tree

1 file changed

+61
-0
lines changed

1 file changed

+61
-0
lines changed

.github/workflows/rust.yml

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,19 +7,52 @@ on:
77
schedule:
88
- cron: "32 4 * * 5"
99

10+
# let jobs opt-in to permissions explicitly
11+
permissions: {}
12+
1013
jobs:
14+
####################################################################################################
15+
# STEP 0: CHECK CI CONFIGURATION
16+
# ["Zizmor"]
17+
####################################################################################################
18+
19+
Zizmor:
20+
runs-on: ubuntu-latest
21+
steps:
22+
- uses: actions/checkout@v4
23+
with:
24+
persist-credentials: false
25+
26+
- uses: taiki-e/install-action@v2
27+
with:
28+
tool: zizmor@1
29+
30+
- name: Run zizmor
31+
run: zizmor --format sarif . > results.sarif
32+
env:
33+
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
34+
35+
- name: Upload SARIF file
36+
uses: github/codeql-action/upload-sarif@v3
37+
with:
38+
sarif_file: results.sarif
39+
category: zizmor
40+
1141
####################################################################################################
1242
# STEP 1: FASTEST
1343
# ["Rustfmt", "Docs", "Audit", "Book", "Typos", "Jinja2-Assumptions", "DevSkim", "CargoSort"]
1444
####################################################################################################
1545

1646
Rustfmt:
47+
needs: ["Zizmor"]
1748
runs-on: ubuntu-latest
1849
steps:
1950
# No need to test `askama_derive_standalone`. It has same the `src` folder as `askama_derive`.
2051
# No need to run the checks in parallel. They are fast enough.
2152
# No need for caching. No code is compiled at all.
2253
- uses: actions/checkout@v4
54+
with:
55+
persist-credentials: false
2356
- uses: dtolnay/rust-toolchain@nightly
2457
with:
2558
components: rustfmt
@@ -37,28 +70,37 @@ jobs:
3770
done
3871
3972
Docs:
73+
needs: ["Zizmor"]
4074
strategy:
4175
matrix:
4276
package: [askama, askama_derive, askama_parser]
4377
runs-on: ubuntu-latest
4478
steps:
4579
- uses: actions/checkout@v4
80+
with:
81+
persist-credentials: false
4682
- uses: dtolnay/rust-toolchain@nightly
4783
- uses: Swatinem/rust-cache@v2
4884
- run: cd ${{ matrix.package }} && cargo doc --all-features --no-deps
4985
env:
5086
RUSTDOCFLAGS: -Z unstable-options --generate-link-to-definition --cfg=docsrs -D warnings
5187

5288
Audit:
89+
needs: ["Zizmor"]
5390
runs-on: ubuntu-latest
5491
steps:
5592
- uses: actions/checkout@v4
93+
with:
94+
persist-credentials: false
5695
- uses: EmbarkStudios/cargo-deny-action@v2
5796

5897
Book:
98+
needs: ["Zizmor"]
5999
runs-on: ubuntu-latest
60100
steps:
61101
- uses: actions/checkout@v4
102+
with:
103+
persist-credentials: false
62104
- name: Generate "book/theme/index.hbs" as "skeleton" of the generated pages.
63105
run: ./update-theme.py
64106
working-directory: book
@@ -71,22 +113,29 @@ jobs:
71113
working-directory: book
72114

73115
Typos:
116+
needs: ["Zizmor"]
74117
runs-on: ubuntu-latest
75118
steps:
76119
- uses: actions/checkout@v4
120+
with:
121+
persist-credentials: false
77122
- uses: crate-ci/typos@master
78123

79124
Jinja2-Assumptions:
125+
needs: ["Zizmor"]
80126
runs-on: ubuntu-latest
81127
steps:
82128
- uses: actions/checkout@v4
129+
with:
130+
persist-credentials: false
83131
- uses: actions/setup-python@v5
84132
with:
85133
python-version: '3.13'
86134
- uses: astral-sh/setup-uv@v5
87135
- run: testing/jinja2-assumptions/test.sh
88136

89137
DevSkim:
138+
needs: ["Zizmor"]
90139
name: DevSkim
91140
runs-on: ubuntu-latest
92141
permissions:
@@ -95,6 +144,8 @@ jobs:
95144
security-events: write
96145
steps:
97146
- uses: actions/checkout@v4
147+
with:
148+
persist-credentials: false
98149

99150
- name: Run DevSkim scanner
100151
uses: microsoft/DevSkim-Action@v1
@@ -105,10 +156,13 @@ jobs:
105156
sarif_file: devskim-results.sarif
106157

107158
CargoSort:
159+
needs: ["Zizmor"]
108160
name: Check order in Cargo.toml
109161
runs-on: ubuntu-latest
110162
steps:
111163
- uses: actions/checkout@v4
164+
with:
165+
persist-credentials: false
112166
- uses: taiki-e/install-action@v2
113167
with:
114168
tool: cargo-sort
@@ -144,6 +198,8 @@ jobs:
144198
runs-on: ${{ matrix.os }}
145199
steps:
146200
- uses: actions/checkout@v4
201+
with:
202+
persist-credentials: false
147203
- uses: dtolnay/rust-toolchain@master
148204
with:
149205
toolchain: ${{ matrix.rust }}
@@ -166,6 +222,8 @@ jobs:
166222
runs-on: ubuntu-latest
167223
steps:
168224
- uses: actions/checkout@v4
225+
with:
226+
persist-credentials: false
169227
- uses: dtolnay/rust-toolchain@stable
170228
with:
171229
components: clippy
@@ -182,6 +240,8 @@ jobs:
182240
runs-on: ubuntu-latest
183241
steps:
184242
- uses: actions/checkout@v4
243+
with:
244+
persist-credentials: false
185245
- uses: dtolnay/rust-toolchain@master
186246
with:
187247
toolchain: "1.81.0"
@@ -205,6 +265,7 @@ jobs:
205265
steps:
206266
- uses: actions/checkout@v4
207267
with:
268+
persist-credentials: false
208269
submodules: recursive
209270
- run: git submodule update --remote
210271
- uses: dtolnay/rust-toolchain@master

0 commit comments

Comments
 (0)