...
1name: Rust
2
3on:
4 pull_request:
5 paths:
6 - .github/workflows/rust.yml
7 - Cargo.lock
8 - "**/Cargo.toml"
9 - justfile
10 - deny.toml
11 - "**/*.rs"
12 - policy-*/Dockerfile
13 - rust-toolchain.toml
14 - bin/rust-toolchain-version
15
16permissions:
17 contents: read
18
19env:
20 CARGO_INCREMENTAL: 0
21 CARGO_NET_RETRY: 10
22 PROTOC_NO_VENDOR: 1
23 RUST_BACKTRACE: short
24 RUSTUP_MAX_RETRIES: 10
25
26jobs:
27 audit:
28 timeout-minutes: 10
29 runs-on: ubuntu-22.04
30 strategy:
31 matrix:
32 checks:
33 - advisories
34 - bans licenses sources
35 # Prevent sudden announcement of a new advisory from failing Ci.
36 continue-on-error: ${{ matrix.checks == 'advisories' }}
37 steps:
38 - uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29
39 - uses: EmbarkStudios/cargo-deny-action@3f4a782664881cf5725d0ffd23969fcce89fd868
40 with:
41 command: check ${{ matrix.checks }}
42
43 fmt:
44 timeout-minutes: 5
45 runs-on: ubuntu-22.04
46 container: ghcr.io/linkerd/dev:v43-rust
47 steps:
48 - uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29
49 - run: git config --global --add safe.directory "$PWD" # actions/runner#2033
50 - run: just rs-check-fmt
51
52 clippy:
53 timeout-minutes: 20
54 runs-on: ubuntu-22.04
55 container: ghcr.io/linkerd/dev:v43-rust
56 steps:
57 - uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29
58 - run: git config --global --add safe.directory "$PWD" # actions/runner#2033
59 - run: just rs-fetch
60 - run: just rs-clippy
61 - run: just rs-doc --no-deps
62
63 check:
64 timeout-minutes: 20
65 runs-on: ubuntu-22.04
66 container: ghcr.io/linkerd/dev:v43-rust
67 steps:
68 - uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29
69 - run: git config --global --add safe.directory "$PWD" # actions/runner#2033
70 - run: just rs-fetch
71 - run: just rs-check-dirs
72
73 test:
74 name: test
75 runs-on: ubuntu-22.04
76 timeout-minutes: 15
77 container: ghcr.io/linkerd/dev:v43-rust
78 steps:
79 - uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29
80 - run: git config --global --add safe.directory "$PWD" # actions/runner#2033
81 - run: just rs-fetch
82 - run: just rs-test-build
83 - run: just rs-test
84
85 rust-toolchain:
86 name: rust toolchain
87 runs-on: ubuntu-22.04
88 timeout-minutes: 2
89 steps:
90 - uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29
91 - shell: bash
92 run: |
93 toolchain_version="$(./bin/rust-toolchain-version)"
94
95 ex=0
96 # Check this workflow against the version in rust-toolchain.
97 versions=$(sed -nE 's|.*docker://(.*/)?rust:([^ #]+).*|\2|p' .github/workflows/*)
98 for mismatch in $(echo "$versions" | grep -vF "$toolchain_version" || true) ; do
99 echo "::error file=.github/workflows/rust.yml::Workflow uses incorrect rust version(s): $mismatch (expected '$toolchain_version)')"
100 ex=$((ex + 1))
101 done
102
103 exit $ex
View as plain text