upstream: use 64 bit math to avoid signed underflow. upstream code #412
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 self-hosted | |
on: | |
push: | |
paths: [ '**.c', '**.h', '**.m4', '**.sh', '**/Makefile.in', 'configure.ac', '.github/configs', '.github/workflows/selfhosted.yml' ] | |
jobs: | |
selfhosted: | |
name: "${{ matrix.target }} ${{ matrix.config }}" | |
if: github.repository == 'openssh/openssh-portable-selfhosted' | |
runs-on: ${{ matrix.host }} | |
timeout-minutes: 600 | |
env: | |
DEBUG_ACTIONS: false | |
HOST: ${{ matrix.host }} | |
TARGET_HOST: ${{ matrix.target }} | |
TARGET_CONFIG: ${{ matrix.config }} | |
TARGET_DOMAIN: ${{ startsWith(matrix.host, 'libvirt') && format('{0}-{1}-{2}', matrix.target, matrix.config, github.run_id) || matrix.target }} | |
EPHEMERAL: ${{ startsWith(matrix.host, 'libvirt') }} | |
PERSISTENT: ${{ startsWith(matrix.host, 'persist') }} | |
REMOTE: ${{ startsWith(matrix.host, 'remote') }} | |
VM: ${{ startsWith(matrix.host, 'libvirt') || startsWith(matrix.host, 'persist') }} | |
SSHFS: ${{ startsWith(matrix.host, 'libvirt') || startsWith(matrix.host, 'persist') || startsWith(matrix.host, 'remote') }} | |
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. The default is an ephemeral VM running under libvirt. | |
matrix: | |
target: | |
- alpine | |
- centos7 | |
- debian-i386 | |
- dfly30 | |
- dfly48 | |
- dfly60 | |
- dfly62 | |
- dfly64 | |
- fbsd10 | |
- fbsd12 | |
- fbsd13 | |
- fbsd14 | |
- minix3 | |
- nbsd3 | |
- nbsd4 | |
- nbsd8 | |
- nbsd9 | |
- obsd51 | |
- obsd67 | |
- obsd72 | |
- obsd73 | |
- obsd74 | |
- obsdsnap | |
- obsdsnap-i386 | |
- omnios | |
- openindiana | |
- ubuntu-2204 | |
config: | |
- default | |
host: | |
- libvirt | |
include: | |
# Long-running/slow tests have access to high priority runners. | |
- { target: aix51, config: default, host: libvirt-hipri } | |
- { target: openindiana, config: pam, host: libvirt-hipri } | |
- { target: sol10, config: default, host: libvirt-hipri } | |
- { target: sol10, config: pam, host: libvirt-hipri } | |
- { target: sol11, config: default, host: libvirt-hipri } | |
- { target: sol11, config: pam-krb5, host: libvirt-hipri } | |
- { target: sol11, config: sol64, host: libvirt-hipri } | |
# Then we include extra libvirt test configs. | |
- { target: centos7, config: pam, host: libvirt } | |
- { target: debian-i386, config: pam, host: libvirt } | |
- { target: dfly30, config: without-openssl, host: libvirt} | |
- { target: dfly48, config: pam ,host: libvirt } | |
- { target: dfly58, config: pam, host: libvirt } | |
- { target: dfly60, config: pam, host: libvirt } | |
- { target: dfly62, config: pam, host: libvirt } | |
- { target: dfly64, config: pam, host: libvirt } | |
- { target: fbsd10, config: pam, host: libvirt } | |
- { target: fbsd12, config: pam, host: libvirt } | |
- { target: fbsd13, config: pam, host: libvirt } | |
- { target: fbsd14, config: pam, host: libvirt } | |
- { target: nbsd8, config: pam, host: libvirt } | |
- { target: nbsd9, config: pam, host: libvirt } | |
- { target: nbsd10, config: pam, host: libvirt } | |
- { target: omnios, config: pam, host: libvirt } | |
# ARM64 VMs | |
- { target: obsd-arm64, config: default, host: libvirt-arm64 } | |
# VMs with persistent disks that have their own runner. | |
- { target: win10, config: default, host: persist-win10 } | |
- { target: win10, config: cygwin-release, host: persist-win10 } | |
# Physical hosts with native runners. | |
- { target: ARM, config: default, host: ARM } | |
- { target: ARM64, config: default, host: ARM64 } | |
- { target: ARM64, config: pam, host: ARM64 } | |
# Physical hosts with remote runners. | |
- { target: debian-riscv64, config: default, host: remote-debian-riscv64 } | |
- { target: openwrt-mips, config: default, host: remote-openwrt-mips } | |
- { target: openwrt-mipsel, config: default, host: remote-openwrt-mipsel } | |
steps: | |
- name: unmount stale workspace | |
if: env.SSHFS == 'true' | |
run: fusermount -u ${GITHUB_WORKSPACE} || true | |
working-directory: ${{ runner.temp }} | |
- name: shutdown VM if running | |
if: env.VM == 'true' | |
run: vmshutdown | |
- uses: actions/checkout@main | |
- name: autoreconf | |
run: autoreconf | |
- name: startup VM | |
if: env.VM == 'true' | |
run: vmstartup | |
working-directory: ${{ runner.temp }} | |
- name: copy and mount workspace | |
if: env.SSHFS == 'true' | |
run: sshfs_mount | |
working-directory: ${{ runner.temp }} | |
- 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/log/* | |
regress/valgrind-out/ | |
- name: unmount workspace | |
if: always() && env.SSHFS == 'true' | |
run: fusermount -u ${GITHUB_WORKSPACE} || true | |
working-directory: ${{ runner.temp }} | |
- name: shutdown VM | |
if: always() && env.VM == 'true' | |
run: vmshutdown |