name: C/C++ CI self-hosted on: push: paths: [ '**.c', '**.h', '**.m4', '**.sh', '.github/**', '**/Makefile.in', 'configure.ac' ] jobs: selfhosted: if: github.repository == 'openssh/openssh-portable-selfhosted' runs-on: ${{ matrix.target }} timeout-minutes: 600 env: TARGET_TYPE: ${{ matrix.type }} TARGET_HOST: ${{ matrix.target }} TARGET_CONFIG: ${{ matrix.config }} strategy: fail-fast: false # We use a matrix in two parts: firstly all of the VMs are tested with the # default config. "target" corresponds to a label associated with the # worker. matrix: target: - aix51 - ARM - ARM64 - alpine - debian-i386 - debian-riscv64 - dfly30 - dfly48 - dfly58 - dfly60 - dfly62 - fbsd10 - fbsd12 - fbsd13 - minix3 - nbsd3 - nbsd4 - nbsd8 - nbsd9 - obsd51 - obsd67 - obsd69 - obsd70 - obsdsnap - openindiana - openwrt-mips - openwrt-mipsel - sol10 - sol11 - win10 config: - default # Then we include any extra configs we want to test for specific VMs. include: - { target: ARM64, config: pam } - { target: debian-i386, config: pam } - { target: dfly30, config: default, type: libvirt } - { target: dfly30, config: without-openssl} - { target: dfly48, config: pam } - { target: dfly58, config: pam } - { target: dfly60, config: pam } - { target: dfly62, config: pam } - { target: fbsd10, config: pam } - { target: fbsd12, config: pam } - { target: fbsd13, config: pam } - { target: nbsd8, config: pam } - { target: nbsd9, config: pam } - { target: openindiana, config: pam } - { target: sol10, config: pam } - { target: sol11, config: pam-krb5 } - { target: sol11, config: sol64 } - { target: win10, config: cygwin-release } steps: - name: shutdown VM if running run: vmshutdown working-directory: ${{ runner.temp }} - uses: actions/checkout@main - name: autoreconf run: autoreconf - name: startup VM run: vmstartup - name: configure run: vmrun ./.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: vmrun make clean - name: make run: vmrun make - name: make tests run: vmrun ./.github/run_test.sh ${{ matrix.config }} timeout-minutes: 600 - 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/ - name: shutdown VM if: always() run: vmshutdown working-directory: ${{ runner.temp }}