[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