Rearrange selfhosted VM scheduling.
Instead of trying to infer the type of the self hosted tests in each of the driver scripts (inconsistently...), set one of the following variables to "true" in the workflow: VM: tests run in a virtual machine. EPHEMERAL: tests run on an ephemeral virtual machine. PERSISTENT: tests run on a persistent virtual machine REMOTE: tests run on a physical remote host. EPHEMERAL VMs can have multiple instances of any given VM can exist simultaneously and are run by a runner pool. The other types have a dedicated runner instance and can only run a single test at a time. Other settings: SSHFS: We need to sshfs mount over the repo so the workflow can collect build artifacts. This also implies the tests must be run over ssh. DEBUG_ACTIONS: enable "set -x" in scripts for debugging.
This commit is contained in:
parent
cd8a72707c
commit
02c5ad2312
|
@ -11,9 +11,16 @@ jobs:
|
|||
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
|
||||
|
@ -75,34 +82,46 @@ jobs:
|
|||
- { target: nbsd8, config: pam, host: libvirt }
|
||||
- { target: nbsd9, config: pam, host: libvirt }
|
||||
- { target: nbsd10, 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: win10 }
|
||||
- { target: win10, config: cygwin-release, host: win10 }
|
||||
# Physical hosts, with either native runners or remote via ssh.
|
||||
- { 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 }
|
||||
- { target: debian-riscv64, config: default, host: debian-riscv64 }
|
||||
- { target: obsd-arm64, config: default, host: obsd-arm64 }
|
||||
- { target: openwrt-mips, config: default, host: openwrt-mips }
|
||||
- { target: openwrt-mipsel, config: default, host: openwrt-mipsel }
|
||||
# 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: shutdown VM if running
|
||||
run: vmshutdown
|
||||
- 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: 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
|
||||
|
@ -121,7 +140,10 @@ jobs:
|
|||
regress/*.log
|
||||
regress/log/*
|
||||
regress/valgrind-out/
|
||||
- name: shutdown VM
|
||||
if: always()
|
||||
run: vmshutdown
|
||||
- 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
|
||||
|
|
|
@ -11,7 +11,9 @@ jobs:
|
|||
if: github.repository == 'openssh/openssh-portable-selfhosted'
|
||||
runs-on: 'libvirt'
|
||||
env:
|
||||
DEBUG_ACTIONS: false
|
||||
HOST: 'libvirt'
|
||||
EPHEMERAL: true
|
||||
TARGET_HOST: ${{ matrix.target }}
|
||||
TARGET_CONFIG: ${{ matrix.config }}
|
||||
strategy:
|
||||
|
|
Loading…
Reference in New Issue