summaryrefslogtreecommitdiffstats
path: root/.github/workflows/os-zoo.yml
blob: 8bd0107883809523140e96b3b039cf28913d726d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
# Copyright 2021-2023 The OpenSSL Project Authors. All Rights Reserved.
#
# Licensed under the Apache License 2.0 (the "License").  You may not use
# this file except in compliance with the License.  You can obtain a copy
# in the file LICENSE in the source distribution or at
# https://www.openssl.org/source/license.html

name: OS Zoo CI

on:
  schedule:
    - cron: '0 5 * * *'

permissions:
  contents: read

jobs:
  alpine:
    strategy:
      fail-fast: false
      matrix:
        tag: [edge, latest]
        cc: [gcc, clang]
        branch: [openssl-3.0, openssl-3.1, master]
    runs-on: ubuntu-latest
    container:
      image: docker.io/library/alpine:${{ matrix.tag }}
    env:
      # https://www.openwall.com/lists/musl/2022/02/16/14
      EXTRA_CFLAGS: ${{ matrix.cc == 'clang' && '-Wno-sign-compare' || '' }}
      CC: ${{ matrix.cc }}
    steps:
    - name: install packages
      run: apk --no-cache add build-base perl linux-headers ${{ matrix.cc }}
    - uses: actions/checkout@v4
      with:
        ref: ${{ matrix.branch }}
    - name: config
      run: |
        ./config --banner=Configured no-shared -Wall -Werror enable-fips --strict-warnings -DOPENSSL_USE_IPV6=0 \
                 ${EXTRA_CFLAGS}
    - name: config dump
      run: ./configdata.pm --dump
    - name: make
      run: make -s -j4
    - name: get cpu info
      run: |
        cat /proc/cpuinfo
        ./util/opensslwrap.sh version -c
    - name: make test
      run: make test HARNESS_JOBS=${HARNESS_JOBS:-4}

  linux:
    strategy:
      fail-fast: false
      matrix:
        branch: [openssl-3.0, openssl-3.1, master]
        zoo:
          - image: docker.io/library/debian:10
            install: apt-get update && apt-get install -y gcc make perl
          - image: docker.io/library/debian:11
            install: apt-get update && apt-get install -y gcc make perl
          - image: docker.io/library/debian:12
            install: apt-get update && apt-get install -y gcc make perl
          - image: docker.io/library/ubuntu:20.04
            install: apt-get update && apt-get install -y gcc make perl
          - image: docker.io/library/ubuntu:22.04
            install: apt-get update && apt-get install -y gcc make perl
          - image: docker.io/library/fedora:38
            install: dnf install -y gcc make perl-core
          - image: docker.io/library/fedora:39
            install: dnf install -y gcc make perl-core
          - image: docker.io/library/centos:8
            install: |
              sed -i 's/mirrorlist/#mirrorlist/g' /etc/yum.repos.d/CentOS-* && \
              sed -i 's|#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g' /etc/yum.repos.d/CentOS-* && \
              dnf install -y gcc make perl-core
          - image: docker.io/library/rockylinux:8
            install: dnf install -y gcc make perl-core
          - image: docker.io/library/rockylinux:9
            install: dnf install -y gcc make perl-core
    runs-on: ubuntu-latest
    container: ${{ matrix.zoo.image }}
    steps:
    - uses: actions/checkout@v4
      with:
        ref: ${{ matrix.branch }}
    - name: install packages
      run: ${{ matrix.zoo.install }}
    - name: config
      run: ./config
    - name: config dump
      run: ./configdata.pm --dump
    - name: make
      run: make -j4
    - name: get cpu info
      run: |
        cat /proc/cpuinfo
        ./util/opensslwrap.sh version -c
    - name: make test
      run: make test HARNESS_JOBS=${HARNESS_JOBS:-4}

  macos:
    strategy:
      fail-fast: false
      matrix:
        branch: [openssl-3.0, openssl-3.1, master]
        os: [macos-11, macos-12, macos-13, macos-14]
    runs-on: ${{ matrix.os }}
    steps:
    - uses: actions/checkout@v4
      with:
        ref: ${{ matrix.branch }}
    - name: checkout fuzz/corpora submodule
      run: git submodule update --init --depth 1 fuzz/corpora
    - name: config
      run: ./config --banner=Configured -Wall -Werror --strict-warnings enable-fips
    - name: config dump
      run: ./configdata.pm --dump
    - name: make
      run: make -s -j4
    - name: get cpu info
      run: |
        sysctl machdep.cpu
        ./util/opensslwrap.sh version -c
    - name: make test
      run: make test HARNESS_JOBS=${HARNESS_JOBS:-4}

  windows:
    strategy:
      fail-fast: false
      matrix:
        branch: [openssl-3.0, openssl-3.1, master]
        os: [windows-2019, windows-2022]
    runs-on: ${{ matrix.os }}
    steps:
    - uses: actions/checkout@v4
      with:
        ref: ${{ matrix.branch }}
    - name: checkout fuzz/corpora submodule
      run: git submodule update --init --depth 1 fuzz/corpora
    - uses: ilammy/msvc-dev-cmd@v1
    - uses: ilammy/setup-nasm@v1
    - name: prepare the build directory
      run: mkdir _build
    - name: config
      working-directory: _build
      run: perl ..\Configure --banner=Configured no-makedepend enable-fips
    - name: config dump
      working-directory: _build
      run: ./configdata.pm --dump
    - name: build
      working-directory: _build
      run: nmake /S
    - name: download coreinfo
      uses: suisei-cn/actions-download-file@v1.6.0
      with:
        url: "https://download.sysinternals.com/files/Coreinfo.zip"
        target: _build/coreinfo/
    - name: get cpu info
      working-directory: _build
      run: |
        7z.exe x coreinfo/Coreinfo.zip
        ./Coreinfo64.exe -accepteula -f
        apps/openssl.exe version -c
    - name: test
      working-directory: _build
      run: nmake test VERBOSE_FAILURE=yes HARNESS_JOBS=4

  self-hosted:
    strategy:
      matrix:
        os: [freebsd-13.2, ubuntu-arm64-22.04]
    runs-on: ${{ matrix.os }}-self-hosted
    continue-on-error: true
    steps:
    - uses: actions/checkout@v4
    - name: config
      run: ./config enable-fips enable-ec_nistp_64_gcc_128 enable-md2 enable-rc5 enable-ssl3 enable-ssl3-method enable-trace
    - name: config dump
      run: ./configdata.pm --dump
    - name: make
      run: make -j4
    - name: get cpu info
      run: ./util/opensslwrap.sh version -c
    - name: make test
      run: make test HARNESS_JOBS=${HARNESS_JOBS:-4}