2
0

ci.yml 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641
  1. # Copyright 2021-2024 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. name: GitHub CI
  8. on: [pull_request, push]
  9. # for some reason, this does not work:
  10. # variables:
  11. # BUILDOPTS: "-j4"
  12. # HARNESS_JOBS: "${HARNESS_JOBS:-4}"
  13. # for some reason, this does not work:
  14. # before_script:
  15. # - make="make -s"
  16. permissions:
  17. contents: read
  18. env:
  19. OSSL_RUN_CI_TESTS: 1
  20. jobs:
  21. check_update:
  22. runs-on: ${{ github.server_url == 'https://github.com' && 'ubuntu-latest' || 'ubuntu-22.04-self-hosted' }}
  23. steps:
  24. - name: install unifdef
  25. run: |
  26. sudo apt-get update
  27. sudo apt-get -yq --no-install-suggests --no-install-recommends --force-yes install unifdef
  28. - uses: actions/checkout@v4
  29. with:
  30. fetch-depth: 0
  31. - name: config
  32. run: ./config --banner=Configured --strict-warnings enable-fips && perl configdata.pm --dump
  33. - name: make build_generated
  34. run: make -s build_generated
  35. - name: make update
  36. run: make update
  37. - name: git diff
  38. run: git diff --exit-code
  39. check_docs:
  40. runs-on: ${{ github.server_url == 'https://github.com' && 'ubuntu-latest' || 'ubuntu-22.04-self-hosted' }}
  41. steps:
  42. - uses: actions/checkout@v4
  43. - name: config
  44. run: ./config --banner=Configured --strict-warnings enable-fips && perl configdata.pm --dump
  45. - name: make build_generated
  46. run: make -s build_generated
  47. - name: make doc-nits
  48. run: make doc-nits
  49. - name: make help
  50. run: make help
  51. - name: make md-nits
  52. run: |
  53. sudo gem install mdl
  54. make md-nits
  55. # This checks that we use ANSI C language syntax and semantics.
  56. # We are not as strict with libraries, but rather adapt to what's
  57. # expected to be available in a certain version of each platform.
  58. check-ansi:
  59. runs-on: ${{ github.server_url == 'https://github.com' && 'ubuntu-latest' || 'ubuntu-22.04-self-hosted' }}
  60. steps:
  61. - uses: actions/checkout@v4
  62. - name: config
  63. run: CPPFLAGS=-ansi ./config --banner=Configured no-asm no-makedepend enable-buildtest-c++ enable-fips --strict-warnings -D_DEFAULT_SOURCE && perl configdata.pm --dump
  64. - name: make
  65. run: make -s -j4
  66. basic_gcc:
  67. runs-on: ${{ github.server_url == 'https://github.com' && 'ubuntu-latest' || 'ubuntu-22.04-self-hosted' }}
  68. steps:
  69. - uses: actions/checkout@v4
  70. - name: checkout fuzz/corpora submodule
  71. run: git submodule update --init --depth 1 fuzz/corpora
  72. - name: localegen
  73. run: sudo locale-gen tr_TR.UTF-8
  74. - name: config
  75. # enable-quic is on by default, but we leave it here to check we're testing the explicit enable somewhere
  76. run: CC=gcc ./config --banner=Configured enable-demos enable-h3demo enable-fips enable-quic --strict-warnings && perl configdata.pm --dump
  77. - name: make
  78. run: make -s -j4
  79. - name: get cpu info
  80. run: |
  81. cat /proc/cpuinfo
  82. ./util/opensslwrap.sh version -c
  83. - name: make test
  84. run: .github/workflows/make-test
  85. - name: save artifacts
  86. uses: actions/upload-artifact@v3
  87. with:
  88. name: "ci@basic-gcc"
  89. path: artifacts/
  90. basic_clang:
  91. runs-on: ${{ github.server_url == 'https://github.com' && 'ubuntu-latest' || 'ubuntu-22.04-self-hosted' }}
  92. steps:
  93. - uses: actions/checkout@v4
  94. - name: checkout fuzz/corpora submodule
  95. run: git submodule update --init --depth 1 fuzz/corpora
  96. - name: config
  97. run: CC=clang ./config --banner=Configured enable-demos enable-h3demo no-fips --strict-warnings && perl configdata.pm --dump
  98. - name: make
  99. run: make -s -j4
  100. - name: get cpu info
  101. run: |
  102. cat /proc/cpuinfo
  103. ./util/opensslwrap.sh version -c
  104. - name: make test
  105. run: .github/workflows/make-test
  106. - name: save artifacts
  107. uses: actions/upload-artifact@v3
  108. with:
  109. name: "ci@basic-clang"
  110. path: artifacts/
  111. self-hosted:
  112. if: github.repository == 'openssl/openssl'
  113. strategy:
  114. matrix:
  115. os: [freebsd-13.2, ubuntu-arm64-22.04]
  116. runs-on: ${{ matrix.os }}-self-hosted
  117. continue-on-error: true
  118. steps:
  119. - uses: actions/checkout@v4
  120. - name: config
  121. run: ./config enable-demos enable-fips enable-ec_nistp_64_gcc_128 enable-md2 enable-rc5 enable-ssl3 enable-ssl3-method enable-trace
  122. - name: config dump
  123. run: ./configdata.pm --dump
  124. - name: make
  125. run: make -j4
  126. - name: get cpu info
  127. run: ./util/opensslwrap.sh version -c
  128. - name: make test
  129. run: .github/workflows/make-test
  130. - name: save artifacts
  131. uses: actions/upload-artifact@v3
  132. with:
  133. name: "ci@self-hosted-${{ matrix.os }}"
  134. path: artifacts/
  135. minimal:
  136. runs-on: ${{ github.server_url == 'https://github.com' && 'ubuntu-latest' || 'ubuntu-22.04-self-hosted' }}
  137. steps:
  138. - uses: actions/checkout@v4
  139. - name: checkout fuzz/corpora submodule
  140. run: git submodule update --init --depth 1 fuzz/corpora
  141. - name: config
  142. run: ./config --banner=Configured --strict-warnings enable-demos enable-h3demo no-bulk no-pic no-asm -DOPENSSL_NO_SECURE_MEMORY -DOPENSSL_SMALL_FOOTPRINT && perl configdata.pm --dump
  143. - name: make
  144. run: make -j4 # verbose, so no -s here
  145. - name: get cpu info
  146. run: |
  147. cat /proc/cpuinfo
  148. ./util/opensslwrap.sh version -c
  149. - name: make test
  150. run: .github/workflows/make-test
  151. - name: save artifacts
  152. uses: actions/upload-artifact@v3
  153. with:
  154. name: "ci@minimal"
  155. path: artifacts/
  156. if-no-files-found: ignore
  157. no-deprecated:
  158. runs-on: ${{ github.server_url == 'https://github.com' && 'ubuntu-latest' || 'ubuntu-22.04-self-hosted' }}
  159. steps:
  160. - uses: actions/checkout@v4
  161. - name: checkout fuzz/corpora submodule
  162. run: git submodule update --init --depth 1 fuzz/corpora
  163. - name: config
  164. run: ./config --banner=Configured --strict-warnings enable-demos enable-h3demo no-deprecated enable-fips && perl configdata.pm --dump
  165. - name: make
  166. run: make -s -j4
  167. - name: get cpu info
  168. run: |
  169. cat /proc/cpuinfo
  170. ./util/opensslwrap.sh version -c
  171. - name: make test
  172. run: .github/workflows/make-test
  173. - name: save artifacts
  174. uses: actions/upload-artifact@v3
  175. with:
  176. name: "ci@no-deprecated"
  177. path: artifacts/
  178. no-shared-ubuntu:
  179. runs-on: ${{ github.server_url == 'https://github.com' && 'ubuntu-latest' || 'ubuntu-22.04-self-hosted' }}
  180. steps:
  181. - uses: actions/checkout@v4
  182. - name: checkout fuzz/corpora submodule
  183. run: git submodule update --init --depth 1 fuzz/corpora
  184. - name: config
  185. run: ./config --banner=Configured --strict-warnings enable-demos enable-h3demo no-shared no-fips && perl configdata.pm --dump
  186. - name: make
  187. run: make -s -j4
  188. - name: get cpu info
  189. run: |
  190. cat /proc/cpuinfo
  191. ./util/opensslwrap.sh version -c
  192. - name: make test
  193. run: .github/workflows/make-test
  194. - name: save artifacts
  195. uses: actions/upload-artifact@v3
  196. with:
  197. name: "ci@no-shared-ubuntu"
  198. path: artifacts/
  199. no-shared-macos:
  200. strategy:
  201. fail-fast: false
  202. matrix:
  203. os: [macos-13, macos-14]
  204. if: github.server_url == 'https://github.com'
  205. runs-on: ${{ matrix.os }}
  206. steps:
  207. - uses: actions/checkout@v4
  208. - name: checkout fuzz/corpora submodule
  209. run: git submodule update --init --depth 1 fuzz/corpora
  210. - name: config
  211. run: ./config --banner=Configured --strict-warnings enable-demos enable-h3demo no-shared no-fips && perl configdata.pm --dump
  212. - name: make
  213. run: make -s -j4
  214. - name: get cpu info
  215. run: |
  216. sysctl machdep.cpu
  217. ./util/opensslwrap.sh version -c
  218. - name: make test
  219. run: .github/workflows/make-test
  220. - name: save artifacts
  221. uses: actions/upload-artifact@v3
  222. with:
  223. name: "ci@no-shared-${{ matrix.os }}"
  224. path: artifacts/
  225. non-caching:
  226. runs-on: ${{ github.server_url == 'https://github.com' && 'ubuntu-latest' || 'ubuntu-22.04-self-hosted' }}
  227. steps:
  228. - uses: actions/checkout@v4
  229. - name: checkout fuzz/corpora submodule
  230. run: git submodule update --init --depth 1 fuzz/corpora
  231. - name: Adjust ASLR for sanitizer
  232. run: |
  233. sudo cat /proc/sys/vm/mmap_rnd_bits
  234. sudo sysctl -w vm.mmap_rnd_bits=28
  235. - name: config
  236. run: ./config --banner=Configured --debug enable-demos enable-h3demo enable-asan enable-ubsan no-cached-fetch no-fips no-dtls no-tls1 no-tls1-method no-tls1_1 no-tls1_1-method no-async && perl configdata.pm --dump
  237. - name: make
  238. run: make -s -j4
  239. - name: get cpu info
  240. run: |
  241. cat /proc/cpuinfo
  242. ./util/opensslwrap.sh version -c
  243. - name: make test
  244. run: .github/workflows/make-test OPENSSL_TEST_RAND_ORDER=0 TESTS="-test_fuzz* -test_ssl_* -test_sslapi -test_evp -test_cmp_http -test_verify -test_cms -test_store -test_enc -[01][0-9]"
  245. - name: save artifacts
  246. uses: actions/upload-artifact@v3
  247. with:
  248. name: "ci@non-caching"
  249. path: artifacts/
  250. address_ub_sanitizer:
  251. runs-on: ${{ github.server_url == 'https://github.com' && 'ubuntu-latest' || 'ubuntu-22.04-self-hosted' }}
  252. steps:
  253. - uses: actions/checkout@v4
  254. - name: checkout fuzz/corpora submodule
  255. run: git submodule update --init --depth 1 fuzz/corpora
  256. - name: Adjust ASLR for sanitizer
  257. run: |
  258. sudo cat /proc/sys/vm/mmap_rnd_bits
  259. sudo sysctl -w vm.mmap_rnd_bits=28
  260. - name: config
  261. run: ./config --banner=Configured --debug enable-demos enable-h3demo enable-asan enable-ubsan enable-rc5 enable-md2 enable-ec_nistp_64_gcc_128 enable-fips && perl configdata.pm --dump
  262. - name: make
  263. run: make -s -j4
  264. - name: get cpu info
  265. run: |
  266. cat /proc/cpuinfo
  267. ./util/opensslwrap.sh version -c
  268. - name: make test
  269. run: .github/workflows/make-test OPENSSL_TEST_RAND_ORDER=0
  270. - name: save artifacts
  271. uses: actions/upload-artifact@v3
  272. with:
  273. name: "ci@address_ub_sanitizer"
  274. path: artifacts/
  275. fuzz_tests:
  276. runs-on: ${{ github.server_url == 'https://github.com' && 'ubuntu-latest' || 'ubuntu-22.04-self-hosted' }}
  277. steps:
  278. - uses: actions/checkout@v4
  279. - name: checkout fuzz/corpora submodule
  280. run: git submodule update --init --depth 1 fuzz/corpora
  281. - name: Adjust ASLR for sanitizer
  282. run: |
  283. sudo cat /proc/sys/vm/mmap_rnd_bits
  284. sudo sysctl -w vm.mmap_rnd_bits=28
  285. - name: config
  286. run: ./config --banner=Configured --debug -DPEDANTIC -DFUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION enable-asan enable-ubsan enable-rc5 enable-md2 enable-ec_nistp_64_gcc_128 enable-weak-ssl-ciphers enable-ssl3 enable-ssl3-method enable-nextprotoneg && perl configdata.pm --dump
  287. - name: make
  288. run: make -s -j4
  289. - name: get cpu info
  290. run: |
  291. cat /proc/cpuinfo
  292. ./util/opensslwrap.sh version -c
  293. - name: make test
  294. run: .github/workflows/make-test OPENSSL_TEST_RAND_ORDER=0 TESTS="test_fuzz*"
  295. - name: save artifacts
  296. uses: actions/upload-artifact@v3
  297. with:
  298. name: "ci@fuzz_tests"
  299. path: artifacts/
  300. if-no-files-found: ignore
  301. memory_sanitizer:
  302. runs-on: ${{ github.server_url == 'https://github.com' && 'ubuntu-latest' || 'ubuntu-22.04-self-hosted' }}
  303. steps:
  304. - uses: actions/checkout@v4
  305. - name: checkout fuzz/corpora submodule
  306. run: git submodule update --init --depth 1 fuzz/corpora
  307. - name: Adjust ASLR for sanitizer
  308. run: |
  309. sudo cat /proc/sys/vm/mmap_rnd_bits
  310. sudo sysctl -w vm.mmap_rnd_bits=28
  311. - name: config
  312. # --debug -O1 is to produce a debug build that runs in a reasonable amount of time
  313. run: CC=clang ./config --banner=Configured --debug -O1 -fsanitize=memory -DOSSL_SANITIZE_MEMORY -fno-optimize-sibling-calls enable-rc5 enable-md2 enable-ec_nistp_64_gcc_128 enable-fips && perl configdata.pm --dump
  314. - name: make
  315. run: make -s -j4
  316. - name: get cpu info
  317. run: |
  318. cat /proc/cpuinfo
  319. ./util/opensslwrap.sh version -c
  320. - name: make test
  321. run: .github/workflows/make-test OPENSSL_TEST_RAND_ORDER=0
  322. - name: save artifacts
  323. uses: actions/upload-artifact@v3
  324. with:
  325. name: "ci@memory_sanitizer"
  326. path: artifacts/
  327. threads_sanitizer:
  328. runs-on: ${{ github.server_url == 'https://github.com' && 'ubuntu-latest' || 'ubuntu-22.04-self-hosted' }}
  329. steps:
  330. - uses: actions/checkout@v4
  331. - name: checkout fuzz/corpora submodule
  332. run: git submodule update --init --depth 1 fuzz/corpora
  333. - name: Adjust ASLR for sanitizer
  334. run: |
  335. sudo cat /proc/sys/vm/mmap_rnd_bits
  336. sudo sysctl -w vm.mmap_rnd_bits=28
  337. - name: config
  338. run: CC=clang ./config --banner=Configured no-fips --strict-warnings -fsanitize=thread && 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: .github/workflows/make-test V=1 TESTS="test_threads test_internal_provider test_provfetch test_provider test_pbe test_evp_kdf test_pkcs12 test_store test_evp test_quic*"
  347. - name: save artifacts
  348. uses: actions/upload-artifact@v3
  349. with:
  350. name: "ci@threads_sanitizer"
  351. path: artifacts/
  352. enable_non-default_options:
  353. runs-on: ${{ github.server_url == 'https://github.com' && 'ubuntu-latest' || 'ubuntu-22.04-self-hosted' }}
  354. steps:
  355. - uses: actions/checkout@v4
  356. - name: checkout fuzz/corpora submodule
  357. run: git submodule update --init --depth 1 fuzz/corpora
  358. - name: modprobe tls
  359. run: sudo modprobe tls
  360. - name: config
  361. run: ./config --banner=Configured --strict-warnings enable-demos enable-h3demo no-ec enable-ssl-trace enable-zlib enable-zlib-dynamic enable-crypto-mdebug enable-egd enable-ktls enable-fips no-threads && perl configdata.pm --dump
  362. - name: make
  363. run: make -s -j4
  364. - name: get cpu info
  365. run: |
  366. cat /proc/cpuinfo
  367. ./util/opensslwrap.sh version -c
  368. - name: make test
  369. run: .github/workflows/make-test
  370. - name: save artifacts
  371. uses: actions/upload-artifact@v3
  372. with:
  373. name: "ci@enable_non-default_options"
  374. path: artifacts/
  375. full_featured:
  376. runs-on: ${{ github.server_url == 'https://github.com' && 'ubuntu-latest' || 'ubuntu-22.04-self-hosted' }}
  377. steps:
  378. - uses: actions/checkout@v4
  379. - name: checkout fuzz/corpora submodule
  380. run: git submodule update --init --depth 1 fuzz/corpora
  381. - name: modprobe tls
  382. run: sudo modprobe tls
  383. - name: Enable sctp
  384. run: sudo modprobe sctp
  385. - name: Enable auth in sctp
  386. run: sudo sysctl -w net.sctp.auth_enable=1
  387. - name: install extra config support
  388. run: sudo apt-get -y install libsctp-dev abigail-tools libzstd-dev zstd
  389. - name: config
  390. run: ./config --banner=Configured --strict-warnings enable-demos enable-h3demo enable-ktls enable-fips enable-egd enable-ec_nistp_64_gcc_128 enable-md2 enable-rc5 enable-sctp enable-ssl3 enable-ssl3-method enable-trace enable-zlib enable-zstd && perl configdata.pm --dump
  391. - name: make
  392. run: make -s -j4
  393. - name: get cpu info
  394. run: |
  395. cat /proc/cpuinfo
  396. ./util/opensslwrap.sh version -c
  397. - name: make test
  398. run: .github/workflows/make-test
  399. - name: save artifacts
  400. uses: actions/upload-artifact@v3
  401. with:
  402. name: "ci@full_featured"
  403. path: artifacts/
  404. no-legacy:
  405. runs-on: ${{ github.server_url == 'https://github.com' && 'ubuntu-latest' || 'ubuntu-22.04-self-hosted' }}
  406. steps:
  407. - uses: actions/checkout@v4
  408. - name: checkout fuzz/corpora submodule
  409. run: git submodule update --init --depth 1 fuzz/corpora
  410. - name: config
  411. run: ./config --banner=Configured --strict-warnings enable-demos enable-h3demo no-legacy enable-fips && perl configdata.pm --dump
  412. - name: make
  413. run: make -s -j4
  414. - name: get cpu info
  415. run: |
  416. cat /proc/cpuinfo
  417. ./util/opensslwrap.sh version -c
  418. - name: make test
  419. run: .github/workflows/make-test
  420. - name: save artifacts
  421. uses: actions/upload-artifact@v3
  422. with:
  423. name: "ci@no-legacy"
  424. path: artifacts/
  425. legacy:
  426. runs-on: ${{ github.server_url == 'https://github.com' && 'ubuntu-latest' || 'ubuntu-22.04-self-hosted' }}
  427. steps:
  428. - uses: actions/checkout@v4
  429. - name: checkout fuzz/corpora submodule
  430. run: git submodule update --init --depth 1 fuzz/corpora
  431. - name: config
  432. run: ./config --banner=Configured -Werror --debug no-afalgeng enable-demos enable-h3demo no-shared enable-crypto-mdebug enable-rc5 enable-md2 enable-ssl3 enable-ssl3-method enable-weak-ssl-ciphers enable-zlib enable-ec_nistp_64_gcc_128 no-fips && perl configdata.pm --dump
  433. - name: make
  434. run: make -s -j4
  435. - name: get cpu info
  436. run: |
  437. cat /proc/cpuinfo
  438. ./util/opensslwrap.sh version -c
  439. - name: make test
  440. run: .github/workflows/make-test
  441. - name: save artifacts
  442. uses: actions/upload-artifact@v3
  443. with:
  444. name: "ci@legacy"
  445. path: artifacts/
  446. # out-of-source-and-install checks multiple things at the same time:
  447. # - That building, testing and installing works from an out-of-source
  448. # build tree
  449. # - That building, testing and installing works with a read-only source
  450. # tree
  451. out-of-readonly-source-and-install-ubuntu:
  452. runs-on: ${{ github.server_url == 'https://github.com' && 'ubuntu-latest' || 'ubuntu-22.04-self-hosted' }}
  453. steps:
  454. - uses: actions/checkout@v4
  455. with:
  456. path: ./source
  457. - name: checkout fuzz/corpora submodule
  458. run: git submodule update --init --depth 1 fuzz/corpora
  459. working-directory: ./source
  460. - name: make source read-only
  461. run: chmod -R a-w ./source
  462. - name: create build and install directories
  463. run: |
  464. mkdir ./build
  465. mkdir ./install
  466. - name: config
  467. run: |
  468. ../source/config --banner=Configured enable-demos enable-h3demo enable-fips enable-quic enable-acvp-tests --strict-warnings --prefix=$(cd ../install; pwd)
  469. perl configdata.pm --dump
  470. working-directory: ./build
  471. - name: make
  472. run: make -s -j4
  473. working-directory: ./build
  474. - name: get cpu info
  475. run: |
  476. cat /proc/cpuinfo
  477. ./util/opensslwrap.sh version -c
  478. working-directory: ./build
  479. - name: make test
  480. run: ../source/.github/workflows/make-test
  481. working-directory: ./build
  482. - name: save artifacts
  483. uses: actions/upload-artifact@v3
  484. with:
  485. name: "ci@out-of-readonly-source-and-install-ubuntu"
  486. path: build/artifacts/
  487. - name: make install
  488. run: make install
  489. working-directory: ./build
  490. out-of-readonly-source-and-install-macos:
  491. strategy:
  492. fail-fast: false
  493. matrix:
  494. os: [macos-13, macos-14]
  495. runs-on: ${{ matrix.os }}
  496. if: github.server_url == 'https://github.com'
  497. steps:
  498. - uses: actions/checkout@v4
  499. with:
  500. path: ./source
  501. - name: checkout fuzz/corpora submodule
  502. run: git submodule update --init --depth 1 fuzz/corpora
  503. working-directory: ./source
  504. - name: make source read-only
  505. run: chmod -R a-w ./source
  506. - name: create build and install directories
  507. run: |
  508. mkdir ./build
  509. mkdir ./install
  510. - name: config
  511. run: |
  512. ../source/config --banner=Configured enable-fips enable-demos enable-h3demo enable-quic enable-acvp-tests --strict-warnings --prefix=$(cd ../install; pwd)
  513. perl configdata.pm --dump
  514. working-directory: ./build
  515. - name: make
  516. run: make -s -j4
  517. working-directory: ./build
  518. - name: get cpu info
  519. run: |
  520. sysctl machdep.cpu
  521. ./util/opensslwrap.sh version -c
  522. working-directory: ./build
  523. - name: make test
  524. run: ../source/.github/workflows/make-test
  525. working-directory: ./build
  526. - name: save artifacts
  527. uses: actions/upload-artifact@v3
  528. with:
  529. name: "ci@out-of-readonly-source-and-install-${{ matrix.os }}"
  530. path: build/artifacts/
  531. - name: make install
  532. run: make install
  533. working-directory: ./build
  534. external-tests:
  535. runs-on: ${{ github.server_url == 'https://github.com' && 'ubuntu-latest' || 'ubuntu-22.04-self-hosted' }}
  536. steps:
  537. - uses: actions/checkout@v4
  538. with:
  539. submodules: recursive
  540. - name: package installs
  541. run: |
  542. sudo apt-get update
  543. sudo apt-get -yq install bison gettext keyutils ldap-utils libldap2-dev libkeyutils-dev python3 python3-paste python3-pyrad slapd tcsh python3-virtualenv virtualenv python3-kdcproxy
  544. - name: install cpanm and Test2::V0 for gost_engine testing
  545. uses: perl-actions/install-with-cpanm@stable
  546. with:
  547. install: Test2::V0
  548. - name: setup hostname workaround
  549. run: sudo hostname localhost
  550. - name: config
  551. run: ./config --banner=Configured --strict-warnings --debug no-afalgeng enable-rc5 enable-md2 enable-ssl3 enable-ssl3-method enable-weak-ssl-ciphers enable-zlib enable-ec_nistp_64_gcc_128 enable-external-tests no-fips && perl configdata.pm --dump
  552. - name: make
  553. run: make -s -j4
  554. - name: get cpu info
  555. run: |
  556. cat /proc/cpuinfo
  557. ./util/opensslwrap.sh version -c
  558. - name: test external gost-engine
  559. run: make test TESTS="test_external_gost_engine"
  560. - name: test external krb5
  561. run: make test TESTS="test_external_krb5"
  562. - name: test external_tlsfuzzer
  563. run: make test TESTS="test_external_tlsfuzzer"
  564. - name: test external oqs-provider
  565. run: make test TESTS="test_external_oqsprovider"
  566. external-test-pyca:
  567. runs-on: ${{ github.server_url == 'https://github.com' && 'ubuntu-latest' || 'ubuntu-22.04-self-hosted' }}
  568. strategy:
  569. matrix:
  570. RUST:
  571. - 1.51.0
  572. PYTHON:
  573. - 3.9
  574. steps:
  575. - uses: actions/checkout@v4
  576. with:
  577. submodules: recursive
  578. - name: Configure OpenSSL
  579. run: ./config --banner=Configured --strict-warnings --debug enable-external-tests && perl configdata.pm --dump
  580. - name: make
  581. run: make -s -j4
  582. - name: Setup Python
  583. uses: actions/setup-python@v5.1.0
  584. with:
  585. python-version: ${{ matrix.PYTHON }}
  586. - uses: dtolnay/rust-toolchain@master
  587. with:
  588. toolchain: ${{ matrix.RUST }}
  589. - name: get cpu info
  590. run: |
  591. cat /proc/cpuinfo
  592. ./util/opensslwrap.sh version -c
  593. - name: test external pyca
  594. run: make test TESTS="test_external_pyca" VERBOSE=1
  595. external-test-cf-quiche:
  596. runs-on: ${{ github.server_url == 'https://github.com' && 'ubuntu-latest' || 'ubuntu-22.04-self-hosted' }}
  597. steps:
  598. - uses: actions/checkout@v4
  599. with:
  600. submodules: recursive
  601. - name: Configure OpenSSL
  602. run: ./config --banner=Configured --strict-warnings enable-external-tests && perl configdata.pm --dump
  603. - name: make
  604. run: make -s -j4
  605. - uses: dtolnay/rust-toolchain@stable
  606. - name: get cpu info
  607. run: |
  608. cat /proc/cpuinfo
  609. ./util/opensslwrap.sh version -c
  610. - name: test external Cloudflare quiche
  611. run: make test TESTS="test_external_cf_quiche" VERBOSE=1