486d50dc7d6a30546cfb3e21026567a2c9ed5b1d
[openssl.git] / .github / workflows / run-checker-daily.yml
1 # Copyright 2021-2023 The OpenSSL Project Authors. All Rights Reserved.
2 #
3 # Licensed under the Apache License 2.0 (the "License").  You may not use
4 # this file except in compliance with the License.  You can obtain a copy
5 # in the file LICENSE in the source distribution or at
6 # https://www.openssl.org/source/license.html
7
8 name: Run-checker daily
9 # Jobs run daily
10
11 on:
12   schedule:
13     - cron: '0 6 * * *'
14 permissions:
15   contents: read
16
17 jobs:
18   run-checker:
19     strategy:
20       fail-fast: false
21       matrix:
22         opt: [
23           386,
24           no-afalgeng,
25           no-apps,
26           no-aria,
27           no-asan,
28           no-asm,
29           no-async,
30           no-atexit,
31           no-autoalginit,
32           no-autoerrinit,
33           no-autoload-config,
34           no-bf,
35           no-blake2,
36           no-buildtest-c++,
37           no-bulk,
38           no-cached-fetch,
39           no-camellia,
40           no-capieng,
41           no-cast,
42           no-chacha,
43           no-cmac,
44           no-comp,
45           enable-crypto-mdebug,
46           no-crypto-mdebug,
47           enable-crypto-mdebug-backtrace,
48           no-crypto-mdebug-backtrace,
49           no-deprecated,
50           no-des,
51           no-devcryptoeng,
52           no-docs,
53           no-dsa,
54           no-dtls1,
55           no-dtls1_2,
56           no-dtls1_2-method,
57           no-dtls1-method,
58           no-ecdh,
59           no-ecdsa,
60           enable-ec_nistp_64_gcc_128,
61           no-ec_nistp_64_gcc_128,
62           enable-egd,
63           no-egd,
64           no-engine,
65           no-external-tests,
66           enable-fips,
67           enable-fips enable-acvp-tests,
68           enable-fips no-tls1_3,
69           no-fuzz-afl,
70           no-fuzz-libfuzzer,
71           no-gost,
72           enable-heartbeats,
73           no-heartbeats,
74           no-hw,
75           no-hw-padlock,
76           no-idea,
77           no-makedepend,
78           enable-md2,
79           no-md2,
80           no-md4,
81           no-mdc2,
82           no-msan,
83           no-multiblock,
84           no-nextprotoneg,
85           no-ocb,
86           no-padlockeng,
87           no-pic,
88           no-poly1305,
89           no-posix-io,
90           no-psk,
91           no-rc2,
92           no-rc4,
93           enable-rc5,
94           no-rc5,
95           no-rdrand,
96           no-rfc3779,
97           no-ripemd,
98           no-rmd160,
99           no-scrypt,
100           no-secure-memory,
101           no-seed,
102           no-shared,
103           no-siphash,
104           no-siv,
105           no-sm2,
106           no-sm2-precomp,
107           no-sm3,
108           no-sm4,
109           no-sock,
110           no-sse2,
111           no-ssl,
112           no-ssl3,
113           no-ssl3-method,
114           no-ssl-trace,
115           no-static-engine no-shared,
116           no-tests,
117           enable-tfo,
118           no-tls1,
119           no-tls1_1,
120           no-tls1_1-method,
121           no-tls1_2-method,
122           no-tls1-method,
123           no-trace,
124           no-ubsan,
125           no-ui-console,
126           no-unit-test,
127           enable-unit-test,
128           no-uplink,
129           no-weak-ssl-ciphers,
130           no-whirlpool,
131           no-zlib,
132           enable-zlib-dynamic,
133           no-zlib-dynamic,
134           -DOPENSSL_NO_BUILTIN_OVERFLOW_CHECKING,
135           -DSSL3_ALIGN_PAYLOAD=4
136         ]
137     runs-on: ubuntu-latest
138     steps:
139     - uses: actions/checkout@v4
140     - name: checkout fuzz/corpora submodule
141       run: git submodule update --init --depth 1 fuzz/corpora
142     - name: config
143       run: CC=clang ./config --banner=Configured --strict-warnings ${{ matrix.opt }}
144     - name: config dump
145       run: ./configdata.pm --dump
146     - name: make
147       run: make -s -j4
148     - name: get cpu info
149       run: |
150         cat /proc/cpuinfo
151         if [ -x apps/openssl ] ; then ./util/opensslwrap.sh version -c ; fi
152     - name: make test
153       run: make test HARNESS_JOBS=${HARNESS_JOBS:-4}
154
155   run-checker-sctp:
156     runs-on: ubuntu-latest
157     steps:
158     - uses: actions/checkout@v4
159     - name: checkout fuzz/corpora submodule
160       run: git submodule update --init --depth 1 fuzz/corpora
161     - name: Install Dependencies for sctp option
162       run:  |
163         sudo apt-get update
164         sudo apt-get -yq install lksctp-tools libsctp-dev
165
166     - name: Check SCTP and enable auth
167       id: sctp_auth
168       continue-on-error: true
169       run:  |
170         checksctp
171         sudo sysctl -w net.sctp.auth_enable=1
172
173     - name: config
174       if: steps.sctp_auth.outcome == 'success' && steps.sctp_auth.conclusion == 'success'
175       run: CC=clang ./config --banner=Configured --strict-warnings enable-sctp
176
177     - name: config dump
178       if: steps.sctp_auth.outcome == 'success' && steps.sctp_auth.conclusion == 'success'
179       run: ./configdata.pm --dump
180
181     - name: make
182       if: steps.sctp_auth.outcome == 'success' && steps.sctp_auth.conclusion == 'success'
183       run: make -s -j4
184
185     - name: get cpu info
186       run: |
187         cat /proc/cpuinfo
188         ./util/opensslwrap.sh version -c
189
190     - name: make test
191       if: steps.sctp_auth.outcome == 'success' && steps.sctp_auth.conclusion == 'success'
192       run: make test HARNESS_JOBS=${HARNESS_JOBS:-4}
193
194   enable_brotli_dynamic:
195     runs-on: ubuntu-latest
196     steps:
197     - name: install brotli
198       run: |
199         sudo apt-get update
200         sudo apt-get -yq --no-install-suggests --no-install-recommends --force-yes install brotli libbrotli1 libbrotli-dev
201     - name: checkout openssl
202       uses: actions/checkout@v4
203     - name: checkout fuzz/corpora submodule
204       run: git submodule update --init --depth 1 fuzz/corpora
205     - name: config
206       run: ./config enable-comp enable-brotli enable-brotli-dynamic && perl configdata.pm --dump
207     - name: make
208       run: make -s -j4
209     - name: get cpu info
210       run: |
211         cat /proc/cpuinfo
212         ./util/opensslwrap.sh version -c
213     - name: make test
214       run: make test HARNESS_JOBS=${HARNESS_JOBS:-4}
215
216   enable_zstd_dynamic:
217     runs-on: ubuntu-latest
218     steps:
219     - name: install zstd
220       run: |
221         sudo apt-get update
222         sudo apt-get -yq --no-install-suggests --no-install-recommends --force-yes install zstd libzstd1 libzstd-dev
223     - name: checkout openssl
224       uses: actions/checkout@v4
225     - name: checkout fuzz/corpora submodule
226       run: git submodule update --init --depth 1 fuzz/corpora
227     - name: config
228       run: ./config enable-comp enable-zstd enable-zstd-dynamic && perl configdata.pm --dump
229     - name: make
230       run: make -s -j4
231     - name: get cpu info
232       run: |
233         cat /proc/cpuinfo
234         ./util/opensslwrap.sh version -c
235     - name: make test
236       run: make test HARNESS_JOBS=${HARNESS_JOBS:-4}
237
238   enable_brotli_and_zstd_dynamic:
239     runs-on: ubuntu-latest
240     steps:
241     - name: install brotli and zstd
242       run: |
243         sudo apt-get update
244         sudo apt-get -yq --no-install-suggests --no-install-recommends --force-yes install brotli libbrotli1 libbrotli-dev
245         sudo apt-get -yq --no-install-suggests --no-install-recommends --force-yes install zstd libzstd1 libzstd-dev
246     - name: checkout openssl
247       uses: actions/checkout@v4
248     - name: checkout fuzz/corpora submodule
249       run: git submodule update --init --depth 1 fuzz/corpora
250     - name: config
251       run: ./config enable-comp enable-brotli enable-brotli-dynamic enable-zstd enable-zstd-dynamic && perl configdata.pm --dump
252     - name: make
253       run: make -s -j4
254     - name: get cpu info
255       run: |
256         cat /proc/cpuinfo
257         ./util/opensslwrap.sh version -c
258     - name: make test
259       run: make test HARNESS_JOBS=${HARNESS_JOBS:-4}
260
261   enable_brotli_and_asan_ubsan:
262     runs-on: ubuntu-latest
263     steps:
264     - name: install brotli
265       run: |
266         sudo apt-get update
267         sudo apt-get -yq --no-install-suggests --no-install-recommends --force-yes install brotli libbrotli1 libbrotli-dev
268     - name: checkout openssl
269       uses: actions/checkout@v4
270     - name: checkout fuzz/corpora submodule
271       run: git submodule update --init --depth 1 fuzz/corpora
272     - name: Adjust ASLR for sanitizer
273       run: |
274         sudo cat /proc/sys/vm/mmap_rnd_bits
275         sudo sysctl -w vm.mmap_rnd_bits=28
276     - name: config
277       run: ./config --banner=Configured --debug enable-asan enable-ubsan enable-comp enable-brotli -DPEDANTIC && perl configdata.pm --dump
278     - name: make
279       run: make -s -j4
280     - name: get cpu info
281       run: |
282         cat /proc/cpuinfo
283         ./util/opensslwrap.sh version -c
284     - name: make test
285       run: make test HARNESS_JOBS=${HARNESS_JOBS:-4} OPENSSL_TEST_RAND_ORDER=0
286
287   enable_zstd_and_asan_ubsan:
288     runs-on: ubuntu-latest
289     steps:
290     - name: install zstd
291       run: |
292         sudo apt-get update
293         sudo apt-get -yq --no-install-suggests --no-install-recommends --force-yes install zstd libzstd1 libzstd-dev
294     - name: checkout openssl
295       uses: actions/checkout@v4
296     - name: checkout fuzz/corpora submodule
297       run: git submodule update --init --depth 1 fuzz/corpora
298     - name: Adjust ASLR for sanitizer
299       run: |
300         sudo cat /proc/sys/vm/mmap_rnd_bits
301         sudo sysctl -w vm.mmap_rnd_bits=28
302     - name: config
303       run: ./config --banner=Configured --debug enable-asan enable-ubsan enable-comp enable-zstd -DPEDANTIC && perl configdata.pm --dump
304     - name: make
305       run: make -s -j4
306     - name: get cpu info
307       run: |
308         cat /proc/cpuinfo
309         ./util/opensslwrap.sh version -c
310     - name: make test
311       run: make test HARNESS_JOBS=${HARNESS_JOBS:-4} OPENSSL_TEST_RAND_ORDER=0
312
313   enable_tfo:
314     strategy:
315       matrix:
316         os: [ ubuntu-latest, macos-13, macos-14 ]
317     runs-on: ${{matrix.os}}
318     steps:
319     - uses: actions/checkout@v4
320     - name: checkout fuzz/corpora submodule
321       run: git submodule update --init --depth 1 fuzz/corpora
322     - name: config
323       run: CC=gcc ./config --banner=Configured enable-tfo --strict-warnings && perl configdata.pm --dump
324     - name: make
325       run: make -s -j4
326     - name: get cpu info
327       run: ./util/opensslwrap.sh version -c
328     - name: make test
329       run: make test HARNESS_JOBS=${HARNESS_JOBS:-4}
330
331   enable_buildtest:
332     runs-on: ubuntu-latest
333     steps:
334     - uses: actions/checkout@v4
335     - name: checkout fuzz/corpora submodule
336       run: git submodule update --init --depth 1 fuzz/corpora
337     - name: config
338       run: ./config --banner=Configured no-asm no-makedepend enable-buildtest-c++ enable-fips --strict-warnings -D_DEFAULT_SOURCE && perl configdata.pm --dump
339     - name: make
340       run: make -s -j4
341     - name: get cpu info
342       run: |
343         cat /proc/cpuinfo
344         ./util/opensslwrap.sh version -c
345     - name: make test
346       run: make test HARNESS_JOBS=${HARNESS_JOBS:-4}