1616 nfpm_version : ' 2.42.0'
1717
1818jobs :
19- build :
20- name : Build+test
21- runs-on : ${{ matrix.os }}
22- strategy :
23- matrix :
24- rust :
25- - stable
26- - beta
27- - nightly
28- os : [ubuntu-latest, ubuntu-22.04]
29- steps :
30- - name : Checkout sources
31- uses : actions/checkout@v5
32- with :
33- persist-credentials : false
34-
35- - name : Install build + integration test dependencies
36- run : sudo apt-get update && sudo apt-get install -y openssl libssl3 libssl-dev lld haproxy
37-
38- - name : Install ${{ matrix.rust }} toolchain
39- uses : dtolnay/rust-toolchain@master
40- with :
41- toolchain : ${{ matrix.rust }}
42-
43- - run : make PROFILE=debug test
44- - run : make PROFILE=debug integration
45- # Note: we only check the client/server binaries here, assuming that
46- # is sufficient for any other test binaries.
47- - name : Verify debug builds were using ASAN
48- run : |
49- nm target/client | grep '__asan_init'
50- nm target/server | grep '__asan_init'
51- - name : Build release binaries
52- run : |
53- make clean
54- make PROFILE=release
55- - name : Verify release builds were not using ASAN
56- run : |
57- nm target/client | grep -v '__asan_init'
58- nm target/server | grep -v '__asan_init'
59-
6019 valgrind :
6120 name : Valgrind
6221 runs-on : ubuntu-latest
@@ -72,212 +31,3 @@ jobs:
7231 run : sudo apt-get update && sudo apt-get install -y openssl libssl3 libssl-dev lld haproxy
7332 - run : VALGRIND="valgrind -q" make PROFILE=release test integration
7433
75- docs :
76- name : Check for documentation errors
77- runs-on : ubuntu-latest
78- steps :
79- - name : Checkout sources
80- uses : actions/checkout@v5
81- with :
82- persist-credentials : false
83-
84- - name : Install build + integration test dependencies
85- run : sudo apt-get update && sudo apt-get install -y openssl libssl3 libssl-dev lld haproxy
86-
87- - name : Install rust toolchain
88- uses : dtolnay/rust-toolchain@nightly
89-
90- - name : cargo doc (all features)
91- run : cargo doc --all-features --no-deps --workspace
92- env :
93- RUSTDOCFLAGS : -Dwarnings
94-
95- format :
96- name : Format
97- runs-on : ubuntu-latest
98- steps :
99- - name : Checkout sources
100- uses : actions/checkout@v5
101- with :
102- persist-credentials : false
103- - name : Install rust toolchain
104- uses : dtolnay/rust-toolchain@stable
105- with :
106- components : rustfmt
107- - name : Check Rust formatting
108- run : cargo fmt --all -- --check
109- - name : Check src/entry.rs formatting
110- run : ./admin/format --all -- --check
111- - name : Check C formatting
112- run : make format-check
113- - name : Check python formatting
114- uses : psf/black@stable
115- - name : Check ordering of build.rs entrypoints
116- run : ./admin/sort-entrypoints.py
117- - name : Check MATRIX.md is up-to-date
118- run : ./admin/matrix.py > MATRIX.md.new && diff -su MATRIX.md MATRIX.md.new
119-
120- msrv :
121- name : MSRV
122- runs-on : ubuntu-latest
123- steps :
124- - name : Checkout sources
125- uses : actions/checkout@v5
126- with :
127- persist-credentials : false
128- - name : Install rust toolchain
129- uses : dtolnay/rust-toolchain@master
130- with :
131- toolchain : 1.88
132- - name : Check build using MSRV
133- run : cargo check --locked --lib --all-features
134-
135- clippy :
136- name : Clippy
137- runs-on : ubuntu-latest
138- steps :
139- - name : Checkout sources
140- uses : actions/checkout@v5
141- with :
142- persist-credentials : false
143- - name : Install rust toolchain
144- uses : dtolnay/rust-toolchain@stable
145- with :
146- components : clippy
147- - name : Check clippy
148- # We allow unknown lints here because sometimes the nightly job
149- # (below) will have a new lint that we want to suppress.
150- # If we suppress (e.g. #![allow(clippy::arc_with_non_send_sync)]),
151- # we would get an unknown-lint error from older clippy versions.
152- run : cargo clippy --locked --workspace --all-targets -- -D warnings -A unknown-lints
153-
154- clippy-nightly-optional :
155- name : Clippy nightly (optional)
156- runs-on : ubuntu-latest
157- steps :
158- - name : Checkout sources
159- uses : actions/checkout@v5
160- with :
161- persist-credentials : false
162- - name : Install rust toolchain
163- uses : dtolnay/rust-toolchain@nightly
164- with :
165- components : clippy
166- - name : Check clippy
167- run : cargo clippy --locked --workspace --all-targets -- -D warnings
168-
169- clang-tidy :
170- name : Clang Tidy
171- runs-on : ubuntu-latest
172- steps :
173- - name : Checkout sources
174- uses : actions/checkout@v5
175- with :
176- persist-credentials : false
177- - name : Clang tidy
178- run : clang-tidy tests/*.c -- -I src/
179-
180- miri :
181- name : Miri
182- runs-on : ubuntu-latest
183- steps :
184- - name : Checkout sources
185- uses : actions/checkout@v5
186- with :
187- persist-credentials : false
188-
189- - name : Install nightly Rust
190- uses : dtolnay/rust-toolchain@nightly
191- - run : rustup override set "nightly-$(curl -s https://rust-lang.github.io/rustup-components-history/x86_64-unknown-linux-gnu/miri)"
192- - run : rustup component add miri
193- - run : cargo miri test
194-
195- packaging :
196- name : Packaging
197- runs-on : ubuntu-22.04
198- steps :
199- - name : Checkout sources
200- uses : actions/checkout@v5
201- with :
202- persist-credentials : false
203-
204- - name : Install build dependencies
205- run : sudo apt-get update && sudo apt-get install -y openssl libssl3 libssl-dev lld
206-
207- - name : Install cargo-get
208- run : cargo install cargo-get
209-
210- - name : Install nfpm
211- run : |
212- curl -L -O https://github.com/goreleaser/nfpm/releases/download/v${{ env.nfpm_version }}/nfpm_${{ env.nfpm_version }}_amd64.deb
213- sudo dpkg -i nfpm_${{ env.nfpm_version }}_amd64.deb
214-
215- - name : Build packages
216- run : make package PROFILE=release
217-
218- - name : Test packages
219- run : make test-package PROFILE=release
220-
221- release_packages :
222- name : Produce release packages
223- runs-on : ubuntu-latest
224- container : ${{ matrix.container }}:${{ matrix.version }}
225- strategy :
226- matrix :
227- include :
228- - container : fedora
229- version : 40
230- package : rpm
231- - container : ubuntu
232- version : 24.04
233- package : deb
234-
235- steps :
236- - name : Install prerequisites (apt)
237- if : matrix.package == 'deb'
238- working-directory : /
239- run : |
240- apt-get update
241- apt-get install -y curl build-essential git
242-
243- - name : Install prerequisites (yum)
244- if : matrix.package == 'rpm'
245- working-directory : /
246- run : |
247- yum install -y curl make automake gcc gcc-c++ kernel-devel git
248-
249- - name : Checkout sources
250- uses : actions/checkout@v5
251- with :
252- persist-credentials : false
253-
254- - name : Install stable rust toolchain
255- uses : dtolnay/rust-toolchain@stable
256-
257- - name : Install build dependencies (apt)
258- if : matrix.package == 'deb'
259- run : |
260- apt-get update
261- apt-get install -y openssl libssl3 libssl-dev lld golang-go
262- cargo install cargo-get
263- curl -L -O https://github.com/goreleaser/nfpm/releases/download/v${{ env.nfpm_version }}/nfpm_${{ env.nfpm_version }}_amd64.deb
264- dpkg -i nfpm_${{ env.nfpm_version }}_amd64.deb
265-
266- - name : Install build dependencies (yum)
267- if : matrix.package == 'rpm'
268- run : |
269- yum install -y openssl openssl-devel lld go
270- cargo install cargo-get
271- curl -L -O https://github.com/goreleaser/nfpm/releases/download/v${{ env.nfpm_version }}/nfpm-${{ env.nfpm_version }}-1.x86_64.rpm
272- rpm -ivh ./nfpm-${{ env.nfpm_version }}-1.x86_64.rpm
273-
274- - name : Build package
275- run : |
276- make package-${{ matrix.package }} PROFILE=release
277-
278- - name : Archive package
279- uses : actions/upload-artifact@v5
280- with :
281- name : ${{ matrix.package }} package built on ${{ matrix.container }} ${{ matrix.version }}
282- path : target/dist/*.${{ matrix.package }}
283- if-no-files-found : error
0 commit comments