1317a38abSEd Mastename: C/C++ CI
2317a38abSEd Maste
3317a38abSEd Masteon:
4317a38abSEd Maste  push:
5317a38abSEd Maste    branches: [ master, ci ]
6317a38abSEd Maste  pull_request:
7317a38abSEd Maste    branches: [ master ]
8317a38abSEd Maste
9317a38abSEd Mastejobs:
10317a38abSEd Maste  ci:
11317a38abSEd Maste    if: github.repository != 'openssh/openssh-portable-selfhosted'
12317a38abSEd Maste    strategy:
13317a38abSEd Maste      fail-fast: false
14317a38abSEd Maste      matrix:
15317a38abSEd Maste        # First we test all OSes in the default configuration.
16317a38abSEd Maste        os: [ubuntu-20.04, ubuntu-18.04, macos-10.15, macos-11.0]
17317a38abSEd Maste        configs: [default]
18317a38abSEd Maste        # Then we include any extra configs we want to test for specific VMs.
19317a38abSEd Maste        # Valgrind slows things down quite a bit, so start them first.
20317a38abSEd Maste        include:
21317a38abSEd Maste          - { os: ubuntu-20.04, configs: valgrind-1 }
22317a38abSEd Maste          - { os: ubuntu-20.04, configs: valgrind-2 }
23317a38abSEd Maste          - { os: ubuntu-20.04, configs: valgrind-3 }
24317a38abSEd Maste          - { os: ubuntu-20.04, configs: valgrind-4 }
25317a38abSEd Maste          - { os: ubuntu-20.04, configs: valgrind-unit }
26317a38abSEd Maste          - { os: ubuntu-20.04, configs: c89 }
27317a38abSEd Maste          - { os: ubuntu-20.04, configs: pam }
28317a38abSEd Maste          - { os: ubuntu-20.04, configs: kitchensink }
29317a38abSEd Maste          - { os: ubuntu-20.04, configs: hardenedmalloc }
30317a38abSEd Maste          - { os: ubuntu-latest, configs: libressl-master }
31317a38abSEd Maste          - { os: ubuntu-latest, configs: libressl-2.2.9 }
32317a38abSEd Maste          - { os: ubuntu-latest, configs: libressl-2.8.3 }
33317a38abSEd Maste          - { os: ubuntu-latest, configs: libressl-3.0.2 }
34*8464ad72SEd Maste          - { os: ubuntu-latest, configs: libressl-3.2.6 }
35*8464ad72SEd Maste          - { os: ubuntu-latest, configs: libressl-3.3.4 }
36*8464ad72SEd Maste          - { os: ubuntu-latest, configs: libressl-3.4.0 }
37317a38abSEd Maste          - { os: ubuntu-latest, configs: openssl-master }
38317a38abSEd Maste          - { os: ubuntu-latest, configs: openssl-noec }
39317a38abSEd Maste          - { os: ubuntu-latest, configs: openssl-1.0.1 }
40317a38abSEd Maste          - { os: ubuntu-latest, configs: openssl-1.0.1u }
41317a38abSEd Maste          - { os: ubuntu-latest, configs: openssl-1.0.2u }
42317a38abSEd Maste          - { os: ubuntu-latest, configs: openssl-1.1.0h }
43317a38abSEd Maste          - { os: ubuntu-latest, configs: openssl-1.1.1 }
44317a38abSEd Maste          - { os: ubuntu-latest, configs: openssl-1.1.1k }
45*8464ad72SEd Maste          - { os: ubuntu-latest, configs: openssl-3.0.0 }
46*8464ad72SEd Maste          - { os: ubuntu-latest, configs: openssl-1.1.1_stable } # stable branch
47*8464ad72SEd Maste          - { os: ubuntu-latest, configs: openssl-3.0 }          # stable branch
48317a38abSEd Maste          - { os: ubuntu-18.04, configs: pam }
49317a38abSEd Maste          - { os: ubuntu-18.04, configs: kerberos5 }
50317a38abSEd Maste          - { os: ubuntu-18.04, configs: libedit }
51317a38abSEd Maste          - { os: ubuntu-18.04, configs: sk }
52317a38abSEd Maste          - { os: ubuntu-18.04, configs: selinux }
53317a38abSEd Maste          - { os: ubuntu-18.04, configs: kitchensink }
54317a38abSEd Maste          - { os: ubuntu-18.04, configs: without-openssl }
55317a38abSEd Maste          - { os: macos-10.15,  configs: pam }
56317a38abSEd Maste          - { os: macos-11.0,   configs: pam }
57317a38abSEd Maste    runs-on: ${{ matrix.os }}
58317a38abSEd Maste    steps:
59317a38abSEd Maste    - uses: actions/checkout@v2
60317a38abSEd Maste    - name: setup CI system
61317a38abSEd Maste      run: ./.github/setup_ci.sh ${{ matrix.configs }}
62317a38abSEd Maste    - name: autoreconf
63317a38abSEd Maste      run: autoreconf
64317a38abSEd Maste    - name: configure
65317a38abSEd Maste      run: ./.github/configure.sh ${{ matrix.configs }}
66317a38abSEd Maste    - name: make
67317a38abSEd Maste      run: make -j2
68317a38abSEd Maste    - name: make tests
69317a38abSEd Maste      run: ./.github/run_test.sh ${{ matrix.configs }}
70317a38abSEd Maste      env:
71317a38abSEd Maste        TEST_SSH_UNSAFE_PERMISSIONS: 1
72317a38abSEd Maste    - name: save logs
73317a38abSEd Maste      if: failure()
74317a38abSEd Maste      uses: actions/upload-artifact@v2
75317a38abSEd Maste      with:
76317a38abSEd Maste        name: ${{ matrix.os }}-${{ matrix.configs }}-logs
77317a38abSEd Maste        path: |
78317a38abSEd Maste          config.h
79317a38abSEd Maste          config.log
80317a38abSEd Maste          regress/*.log
81317a38abSEd Maste          regress/valgrind-out/
82