Skip to content

Commit beb79db

Browse files
committed
ci: use composite action and pin SHAs
1 parent 254374b commit beb79db

File tree

6 files changed

+116
-85
lines changed

6 files changed

+116
-85
lines changed

.github/actions/setup/action.yml

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
name: 'CI Setup'
2+
description: 'Checks out code, installs Rust toolchain, and sets up cache'
3+
4+
inputs:
5+
nightly:
6+
description: 'Use nightly toolchain'
7+
type: boolean
8+
default: false
9+
components:
10+
description: 'Rust components to install'
11+
required: false
12+
default: ''
13+
cache:
14+
description: 'Whether to enable rust-cache'
15+
type: boolean
16+
default: true
17+
18+
runs:
19+
using: "composite"
20+
steps:
21+
- name: Install toolchain
22+
uses: dtolnay/rust-toolchain@f7ccc83f9ed1e5b9c81d8a67d7ad1a747e22a561
23+
id: toolchain
24+
with:
25+
toolchain: ${{ inputs.nightly == true && 'nightly-2026-01-20' || 'stable' }}
26+
components: ${{ inputs.components }}
27+
28+
- name: Check version
29+
shell: bash
30+
run: cargo --version
31+
32+
- name: Cache
33+
if: ${{ inputs.cache == true }}
34+
uses: Swatinem/rust-cache@779680da715d629ac1d338a641029a2f4372abb5 # 2.8.2

.github/workflows/bench.yml

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -23,24 +23,30 @@ jobs:
2323
runs-on: "ubicloud-standard-4"
2424
steps:
2525
- name: Check out repository
26-
uses: actions/checkout@v4
26+
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # 6.0.1
2727
with:
2828
submodules: recursive
2929
ref: ${{ github.event.inputs.ref }}
30+
fetch-depth: 0
31+
persist-credentials: false
32+
3033
- name: Install nightly
31-
uses: dtolnay/rust-toolchain@master
34+
uses: dtolnay/rust-toolchain@f7ccc83f9ed1e5b9c81d8a67d7ad1a747e22a561
3235
id: toolchain
3336
with:
3437
toolchain: stable
35-
- name: Override default toolchain
36-
run: rustup override set ${{steps.toolchain.outputs.name}}
38+
3739
- run: cargo --version
40+
3841
- name: Install bencher
39-
uses: bencherdev/bencher@main
42+
uses: bencherdev/bencher@8151077aa7b1bceaac11c4b308265417cae60e2b # 0.5.10
43+
4044
- name: CPU information
4145
run: lscpu
46+
4247
- name: Cache
43-
uses: ubicloud/rust-cache@v2
48+
uses: ubicloud/rust-cache@65b3ff06b9bcc69d88c25e212f1ae3d14a0953c3
49+
4450
- name: Run benchmarks
4551
run: |
4652
bencher run \

.github/workflows/pull_request.yml

Lines changed: 39 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -16,54 +16,58 @@ jobs:
1616
matrix:
1717
os: [ "ubuntu-latest", "windows-latest", "macos-latest" ]
1818
steps:
19-
- name: Check out repository
20-
uses: actions/checkout@v4
19+
- &checkout
20+
name: Check out repository
21+
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # 6.0.1
2122
with:
2223
submodules: recursive
23-
- name: Install nightly
24-
uses: dtolnay/rust-toolchain@master
25-
id: toolchain
24+
fetch-depth: 0
25+
persist-credentials: false
26+
27+
- name: Setup
28+
uses: ./.github/actions/setup
2629
with:
27-
toolchain: nightly-2025-11-21
28-
components: "rustfmt, miri"
29-
- name: Override default toolchain
30-
run: rustup override set ${{steps.toolchain.outputs.name}}
31-
- run: cargo --version
30+
nightly: true
31+
components: "miri"
32+
3233
- name: Install NASM
3334
if: ${{ matrix.os == 'windows-latest' }}
3435
uses: ilammy/setup-nasm@v1
35-
- name: Cache
36-
uses: Swatinem/rust-cache@v2
36+
3737
- name: Run tests
3838
run: cargo test --workspace --verbose --all-features --no-fail-fast
39+
3940
- name: Run miri test
4041
env:
4142
RUSTFLAGS: "-C target-cpu=native"
4243
MIRIFLAGS: "-Zmiri-disable-isolation"
4344
run: cargo miri t -p cryprot-codes -p cryprot-core
45+
4446
lint:
4547
name: Lint
4648
runs-on: "ubuntu-latest"
4749
steps:
48-
- name: Check out repository
49-
uses: actions/checkout@v4
50-
with:
51-
submodules: recursive
52-
- name: Install nightly
53-
uses: dtolnay/rust-toolchain@master
54-
id: toolchain
50+
- *checkout
51+
52+
- name: Setup
53+
uses: ./.github/actions/setup
5554
with:
56-
toolchain: nightly-2025-11-21
57-
components: "clippy, rustfmt"
58-
- name: Override default toolchain
59-
run: rustup override set ${{steps.toolchain.outputs.name}}
60-
- run: cargo --version
61-
- name: Cache
62-
uses: Swatinem/rust-cache@v2
55+
nightly: true
56+
components: "rustfmt"
57+
6358
- name: Check formatting
64-
run: cargo fmt --all --check
59+
# some fmt options we use are unstable
60+
run: cargo +nightly fmt --all --check
61+
62+
# use stable toolchain for clippy to avoid CI failures due to unfinished lints
63+
- name: Install toolchain
64+
uses: dtolnay/rust-toolchain@f7ccc83f9ed1e5b9c81d8a67d7ad1a747e22a561
65+
with:
66+
toolchain: "stable"
67+
components: "clippy"
68+
6569
- name: Check Clippy
66-
run: cargo clippy --workspace --all-features --examples --lib -- -D warnings
70+
run: cargo +stable clippy --workspace --all-features --examples --lib -- -D warnings
6771

6872

6973
docs:
@@ -73,20 +77,13 @@ jobs:
7377
# deny rustdoc warnings
7478
RUSTDOCFLAGS: -D warnings
7579
steps:
76-
- name: Check out repository
77-
uses: actions/checkout@v4
78-
with:
79-
submodules: recursive
80-
- name: Install nightly
81-
uses: dtolnay/rust-toolchain@master
82-
id: toolchain
80+
- *checkout
81+
82+
- name: Setup
83+
uses: ./.github/actions/setup
8384
with:
84-
toolchain: nightly-2025-11-21
85-
components: rust-docs
86-
- name: Override default toolchain
87-
run: rustup override set ${{steps.toolchain.outputs.name}}
88-
- run: cargo --version
89-
- name: Cache
90-
uses: Swatinem/rust-cache@v2
85+
nightly: true
86+
components: "rust-docs"
87+
9188
- name: Check docs
9289
run: cargo doc --workspace --verbose --all-features --no-deps -Zunstable-options -Zrustdoc-scrape-examples

.github/workflows/push.yml

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -11,18 +11,16 @@ jobs:
1111
runs-on: "ubuntu-latest"
1212
steps:
1313
- name: Check out repository
14-
uses: actions/checkout@v4
14+
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # 6.0.1
1515
with:
1616
submodules: recursive
17-
- name: Install nightly
18-
uses: dtolnay/rust-toolchain@master
19-
id: toolchain
17+
fetch-depth: 0
18+
persist-credentials: false
19+
20+
- name: Setup
21+
uses: ./.github/actions/setup
2022
with:
21-
toolchain: nightly-2025-11-21
22-
- name: Override default toolchain
23-
run: rustup override set ${{steps.toolchain.outputs.name}}
24-
- run: cargo --version
25-
- name: Cache
26-
uses: Swatinem/rust-cache@v2
23+
nightly: true
24+
2725
- name: Test
2826
run: cargo test --workspace --verbose --all-features --no-fail-fast

.github/workflows/release-plz.yml

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -18,14 +18,15 @@ jobs:
1818
contents: write
1919
steps:
2020
- &checkout
21-
name: Checkout repository
22-
uses: actions/checkout@v6
21+
name: Check out repository
22+
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # 6.0.1
2323
with:
2424
fetch-depth: 0
2525
persist-credentials: false
26-
- &install-rust
27-
name: Install Rust toolchain
28-
uses: dtolnay/rust-toolchain@stable
26+
27+
- name: Setup
28+
uses: ./.github/actions/setup
29+
2930
- &get-release-app-token
3031
# Generating a GitHub token, so that PRs and tags created by
3132
# the release-plz-action can trigger actions workflows.
@@ -56,7 +57,10 @@ jobs:
5657
cancel-in-progress: false
5758
steps:
5859
- *checkout
59-
- *install-rust
60+
61+
- name: Setup
62+
uses: ./.github/actions/setup
63+
6064
- *get-release-app-token
6165
- name: Run release-plz
6266
uses: release-plz/action@487eb7b5c085a664d5c5ca05f4159bd9b591182a # 0.5.120

.github/workflows/rustdoc.yml

Lines changed: 13 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -17,20 +17,17 @@ jobs:
1717
RUSTDOCFLAGS: -D warnings
1818
steps:
1919
- name: Check out repository
20-
uses: actions/checkout@v4
20+
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # 6.0.1
2121
with:
22-
submodules: recursive
23-
- name: Install nightly
24-
uses: dtolnay/rust-toolchain@master
25-
id: toolchain
22+
fetch-depth: 0
23+
persist-credentials: false
24+
25+
- name: Setup
26+
uses: ./.github/actions/setup
2627
with:
27-
toolchain: nightly-2025-11-21
28-
components: rust-docs
29-
- name: Override default toolchain
30-
run: rustup override set ${{steps.toolchain.outputs.name}}
31-
- run: cargo --version
32-
- name: Cache
33-
uses: Swatinem/rust-cache@v2
28+
nightly: true
29+
components: "rust-docs"
30+
3431
- name: Create Docs
3532
# rustdoc-map allows us to link to doc.rs for dependencies
3633
run: cargo doc --workspace --verbose --all-features --no-deps -Zunstable-options -Zrustdoc-scrape-examples -Zrustdoc-map
@@ -40,29 +37,24 @@ jobs:
4037
echo "::warning title=Invalid file permissions automatically fixed::$line"
4138
done
4239
- name: Upload Pages artifact
43-
uses: actions/upload-pages-artifact@v3
40+
uses: actions/upload-pages-artifact@7b1f4a764d45c48632c6b24a0339c27f5614fb0b # 4.0.0
4441
with:
4542
path: "target/doc/"
4643

47-
# Deploy job
4844
deploy:
49-
# Add a dependency to the build job
5045
needs: build
5146

52-
# Grant GITHUB_TOKEN the permissions required to make a Pages deployment
5347
permissions:
54-
pages: write # to deploy to Pages
55-
id-token: write # to verify the deployment originates from an appropriate source
48+
pages: write
49+
id-token: write
5650

57-
# Deploy to the github-pages environment
5851
environment:
5952
name: github-pages
6053
url: ${{ steps.deployment.outputs.page_url }}
6154

62-
# Specify runner + deployment step
6355
runs-on: ubuntu-latest
6456
steps:
6557
- name: Deploy to GitHub Pages
6658
id: deployment
67-
uses: actions/deploy-pages@v4 # or specific "vX.X.X" version tag for this action
59+
uses: actions/deploy-pages@d6db90164ac5ed86f2b6aed7e0febac5b3c0c03e # 4.0.5
6860

0 commit comments

Comments
 (0)