[openssh-commits] [openssh] branch master updated: Rearrange selfhosted VM scheduling.
git+noreply at mindrot.org
git+noreply at mindrot.org
Sat Mar 30 16:42:23 AEDT 2024
This is an automated email from the git hooks/post-receive script.
dtucker pushed a commit to branch master
in repository openssh.
The following commit(s) were added to refs/heads/master by this push:
new 02c5ad23 Rearrange selfhosted VM scheduling.
02c5ad23 is described below
commit 02c5ad23124ae801cf248d99ea5068fc4331ca01
Author: Darren Tucker <dtucker at dtucker.net>
AuthorDate: Wed Mar 27 17:42:58 2024 +1100
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.
---
.github/workflows/selfhosted.yml | 52 ++++++++++++++++++++++++++++------------
.github/workflows/upstream.yml | 2 ++
2 files changed, 39 insertions(+), 15 deletions(-)
diff --git a/.github/workflows/selfhosted.yml b/.github/workflows/selfhosted.yml
index ec0fd6bb..16729735 100644
--- a/.github/workflows/selfhosted.yml
+++ b/.github/workflows/selfhosted.yml
@@ -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: 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
- working-directory: ${{ runner.temp }}
- uses: actions/checkout at 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 at main
- with:
- name: ${{ matrix.target }}-${{ matrix.config }}-config
- path: config.h
+# - name: save config
+# uses: actions/upload-artifact at 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: unmount workspace
+ if: always() && env.SSHFS == 'true'
+ run: fusermount -u ${GITHUB_WORKSPACE} || true
+ working-directory: ${{ runner.temp }}
- name: shutdown VM
- if: always()
+ if: always() && env.VM == 'true'
run: vmshutdown
- working-directory: ${{ runner.temp }}
diff --git a/.github/workflows/upstream.yml b/.github/workflows/upstream.yml
index 9b6ab382..14e6d9f4 100644
--- a/.github/workflows/upstream.yml
+++ b/.github/workflows/upstream.yml
@@ -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:
--
To stop receiving notification emails like this one, please contact
djm at mindrot.org.
More information about the openssh-commits
mailing list