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 8name: OS Zoo CI 9 10on: 11 schedule: 12 - cron: '0 5 * * *' 13 14permissions: 15 contents: read 16 17jobs: 18 alpine: 19 strategy: 20 fail-fast: false 21 matrix: 22 tag: [edge, latest] 23 cc: [gcc, clang] 24 branch: [openssl-3.0, openssl-3.1, master] 25 runs-on: ubuntu-latest 26 container: 27 image: docker.io/library/alpine:${{ matrix.tag }} 28 env: 29 # https://www.openwall.com/lists/musl/2022/02/16/14 30 EXTRA_CFLAGS: ${{ matrix.cc == 'clang' && '-Wno-sign-compare' || '' }} 31 CC: ${{ matrix.cc }} 32 steps: 33 - name: install packages 34 run: apk --no-cache add build-base perl linux-headers ${{ matrix.cc }} 35 - uses: actions/checkout@v4 36 with: 37 ref: ${{ matrix.branch }} 38 - name: config 39 run: | 40 ./config --banner=Configured no-shared -Wall -Werror enable-fips --strict-warnings \ 41 ${EXTRA_CFLAGS} 42 - name: config dump 43 run: ./configdata.pm --dump 44 - name: make 45 run: make -s -j4 46 - name: get cpu info 47 run: | 48 cat /proc/cpuinfo 49 ./util/opensslwrap.sh version -c 50 - name: make test 51 run: make test HARNESS_JOBS=${HARNESS_JOBS:-4} 52 53 linux: 54 strategy: 55 fail-fast: false 56 matrix: 57 branch: [openssl-3.0, openssl-3.1, master] 58 zoo: 59 - image: docker.io/library/debian:10 60 install: apt-get update && apt-get install -y gcc make perl 61 - image: docker.io/library/debian:11 62 install: apt-get update && apt-get install -y gcc make perl 63 - image: docker.io/library/debian:12 64 install: apt-get update && apt-get install -y gcc make perl 65 - image: docker.io/library/ubuntu:20.04 66 install: apt-get update && apt-get install -y gcc make perl 67 - image: docker.io/library/ubuntu:22.04 68 install: apt-get update && apt-get install -y gcc make perl 69 - image: docker.io/library/fedora:38 70 install: dnf install -y gcc make perl-core 71 - image: docker.io/library/fedora:39 72 install: dnf install -y gcc make perl-core 73 - image: docker.io/library/centos:8 74 install: | 75 sed -i 's/mirrorlist/#mirrorlist/g' /etc/yum.repos.d/CentOS-* && \ 76 sed -i 's|#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g' /etc/yum.repos.d/CentOS-* && \ 77 dnf install -y gcc make perl-core 78 - image: docker.io/library/rockylinux:8 79 install: dnf install -y gcc make perl-core 80 - image: docker.io/library/rockylinux:9 81 install: dnf install -y gcc make perl-core 82 runs-on: ubuntu-latest 83 container: ${{ matrix.zoo.image }} 84 steps: 85 - uses: actions/checkout@v4 86 with: 87 ref: ${{ matrix.branch }} 88 - name: install packages 89 run: ${{ matrix.zoo.install }} 90 - name: config 91 run: ./config 92 - name: config dump 93 run: ./configdata.pm --dump 94 - name: make 95 run: make -j4 96 - name: get cpu info 97 run: | 98 cat /proc/cpuinfo 99 ./util/opensslwrap.sh version -c 100 - name: make test 101 run: make test HARNESS_JOBS=${HARNESS_JOBS:-4} 102 103 macos: 104 strategy: 105 fail-fast: false 106 matrix: 107 branch: [openssl-3.0, openssl-3.1, master] 108 os: [macos-12, macos-13, macos-14] 109 runs-on: ${{ matrix.os }} 110 steps: 111 - uses: actions/checkout@v4 112 with: 113 ref: ${{ matrix.branch }} 114 - name: checkout fuzz/corpora submodule 115 run: git submodule update --init --depth 1 fuzz/corpora 116 - name: config 117 run: ./config --banner=Configured -Wall -Werror --strict-warnings enable-fips 118 - name: config dump 119 run: ./configdata.pm --dump 120 - name: make 121 run: make -s -j4 122 - name: get cpu info 123 run: | 124 sysctl machdep.cpu 125 ./util/opensslwrap.sh version -c 126 - name: make test 127 run: make test HARNESS_JOBS=${HARNESS_JOBS:-4} 128 129 windows: 130 strategy: 131 fail-fast: false 132 matrix: 133 branch: [openssl-3.0, openssl-3.1, master] 134 os: [windows-2019, windows-2022] 135 runs-on: ${{ matrix.os }} 136 steps: 137 - uses: actions/checkout@v4 138 with: 139 ref: ${{ matrix.branch }} 140 - name: checkout fuzz/corpora submodule 141 run: git submodule update --init --depth 1 fuzz/corpora 142 - uses: ilammy/msvc-dev-cmd@v1 143 - uses: ilammy/setup-nasm@v1 144 - name: prepare the build directory 145 run: mkdir _build 146 - name: config 147 working-directory: _build 148 run: perl ..\Configure --banner=Configured no-makedepend enable-fips 149 - name: config dump 150 working-directory: _build 151 run: ./configdata.pm --dump 152 - name: build 153 working-directory: _build 154 run: nmake /S 155 - name: download coreinfo 156 uses: suisei-cn/actions-download-file@v1.6.0 157 with: 158 url: "https://download.sysinternals.com/files/Coreinfo.zip" 159 target: _build/coreinfo/ 160 - name: get cpu info 161 working-directory: _build 162 run: | 163 7z.exe x coreinfo/Coreinfo.zip 164 ./Coreinfo64.exe -accepteula -f 165 apps/openssl.exe version -c 166 - name: test 167 working-directory: _build 168 run: nmake test VERBOSE_FAILURE=yes HARNESS_JOBS=4 169 170 self-hosted: 171 strategy: 172 matrix: 173 os: [freebsd-13.2, ubuntu-arm64-22.04] 174 runs-on: ${{ matrix.os }}-self-hosted 175 continue-on-error: true 176 steps: 177 - uses: actions/checkout@v4 178 - name: config 179 run: ./config enable-fips enable-ec_nistp_64_gcc_128 enable-md2 enable-rc5 enable-ssl3 enable-ssl3-method enable-trace 180 - name: config dump 181 run: ./configdata.pm --dump 182 - name: make 183 run: make -j4 184 - name: get cpu info 185 run: ./util/opensslwrap.sh version -c 186 - name: make test 187 run: make test HARNESS_JOBS=${HARNESS_JOBS:-4} 188