xref: /openssl/.github/workflows/os-zoo.yml (revision 7b1e008d)
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