first pass as merging 9.6 #234
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: C/C++ CI | |
on: | |
push: | |
branches: [ master, pre-stage, '*RC*', dev_major, dev_minor ] | |
paths: [ '**.c', '**.h', '**.m4', '**.sh', '.github/**', '**/Makefile.in', 'configure.ac' ] | |
pull_request: | |
branches: [ master ] | |
paths: [ '**.c', '**.h', '**.m4', '**.sh', '.github/**', '**/Makefile.in', 'configure.ac' ] | |
jobs: | |
ci: | |
if: github.repository != 'openssh/openssh-portable-selfhosted' | |
strategy: | |
fail-fast: false | |
matrix: | |
# First we test all OSes in the default configuration. | |
target: | |
- ubuntu-20.04 | |
- ubuntu-22.04 | |
- macos-11 | |
- macos-12 | |
- macos-13 | |
config: [default] | |
# Then we include any extra configs we want to test for specific VMs. | |
include: | |
- { target: ubuntu-20.04, config: valgrind-1 } | |
- { target: ubuntu-20.04, config: valgrind-2 } | |
- { target: ubuntu-20.04, config: valgrind-3 } | |
- { target: ubuntu-20.04, config: valgrind-4 } | |
# - { target: ubuntu-20.04, config: valgrind-5 } | |
- { target: ubuntu-20.04, config: valgrind-6 } | |
- { target: ubuntu-20.04, config: valgrind-7 } | |
- { target: ubuntu-20.04, config: c89 } | |
- { target: ubuntu-20.04, config: clang-6.0 } | |
- { target: ubuntu-20.04, config: clang-8 } | |
- { target: ubuntu-20.04, config: clang-9 } | |
- { target: ubuntu-20.04, config: clang-10 } | |
- { target: ubuntu-20.04, config: clang-11 } | |
- { target: ubuntu-20.04, config: clang-12-Werror } | |
- { target: ubuntu-20.04, config: gcc-7 } | |
- { target: ubuntu-20.04, config: gcc-8 } | |
- { target: ubuntu-20.04, config: gcc-10 } | |
- { target: ubuntu-22.04, config: gcc-11-Werror } | |
- { target: ubuntu-22.04, config: gcc-12-Werror } | |
- { target: ubuntu-20.04, config: pam } | |
- { target: ubuntu-20.04, config: kitchensink } | |
- { target: ubuntu-22.04, config: hardenedmalloc } | |
- { target: ubuntu-20.04, config: tcmalloc } | |
# musl doesn't work because it doesn't know about linux/tcp.h | |
# - { target: ubuntu-20.04, config: musl } | |
- { target: ubuntu-latest, config: libressl-master } | |
- { target: ubuntu-latest, config: libressl-3.7.2 } | |
- { target: ubuntu-latest, config: libressl-3.8.2 } | |
- { target: ubuntu-latest, config: openssl-master } | |
- { target: ubuntu-latest, config: openssl-noec } | |
- { target: ubuntu-latest, config: openssl-1.1.1 } | |
- { target: ubuntu-latest, config: openssl-1.1.1t } | |
- { target: ubuntu-latest, config: openssl-1.1.1w } | |
- { target: ubuntu-latest, config: openssl-3.0.0 } | |
- { target: ubuntu-latest, config: openssl-3.0.12 } | |
- { target: ubuntu-latest, config: openssl-3.1.0 } | |
- { target: ubuntu-latest, config: openssl-3.1.4 } | |
- { target: ubuntu-latest, config: openssl-3.2.0 } | |
- { target: ubuntu-latest, config: openssl-1.1.1_stable } | |
- { target: ubuntu-latest, config: openssl-3.0 } # stable branch | |
- { target: ubuntu-latest, config: openssl-3.2 } # stable branch | |
- { target: ubuntu-latest, config: zlib-develop } | |
- { target: ubuntu-22.04, config: pam } | |
- { target: ubuntu-22.04, config: krb5 } | |
- { target: ubuntu-22.04, config: heimdal } | |
- { target: ubuntu-22.04, config: libedit } | |
- { target: ubuntu-22.04, config: sk } | |
- { target: ubuntu-22.04, config: selinux } | |
- { target: ubuntu-22.04, config: kitchensink } | |
- { target: ubuntu-22.04, config: without-openssl } | |
- { target: ubuntu-22.04, config: clang-sanitize-address } | |
- { target: ubuntu-22.04, config: clang-sanitize-undefined } | |
- { target: ubuntu-22.04, config: gcc-sanitize-address } | |
- { target: ubuntu-22.04, config: gcc-sanitize-undefined } | |
# we know pam doesn't work because we can't install a new pam file | |
# for hpnssh via the CI test methods | |
# - { target: macos-11, config: pam } | |
# - { target: macos-12, config: pam } | |
# - { target: macos-13, config: pam } | |
runs-on: ${{ matrix.target }} | |
steps: | |
- uses: actions/checkout@main | |
- name: setup CI system | |
run: sh ./.github/setup_ci.sh ${{ matrix.config }} | |
- name: autoreconf | |
run: sh -c autoreconf | |
- name: configure | |
run: sh ./.github/configure.sh ${{ matrix.config }} | |
- name: save config | |
uses: actions/upload-artifact@main | |
with: | |
name: ${{ matrix.target }}-${{ matrix.config }}-config | |
path: config.h | |
- name: make clean | |
run: make clean | |
- name: make | |
run: make | |
- name: make tests | |
run: sh ./.github/run_test.sh ${{ matrix.config }} | |
env: | |
TEST_SSH_UNSAFE_PERMISSIONS: 1 | |
TEST_SSH_HOSTBASED_AUTH: yes | |
- name: save logs | |
if: failure() | |
uses: actions/upload-artifact@main | |
with: | |
name: ${{ matrix.target }}-${{ matrix.config }}-logs | |
path: | | |
config.h | |
config.log | |
regress/*.log | |
regress/valgrind-out/ | |
regress/asan.log.* | |
regress/msan.log.* | |
regress/log/* |