aboutsummaryrefslogtreecommitdiff
path: root/crypto/openssh/.github
diff options
context:
space:
mode:
Diffstat (limited to 'crypto/openssh/.github')
-rw-r--r--crypto/openssh/.github/ci-status.md12
-rwxr-xr-xcrypto/openssh/.github/configs43
-rwxr-xr-xcrypto/openssh/.github/setup_ci.sh19
-rw-r--r--crypto/openssh/.github/workflows/c-cpp.yml155
-rw-r--r--crypto/openssh/.github/workflows/cifuzz.yml32
-rw-r--r--crypto/openssh/.github/workflows/selfhosted.yml94
-rw-r--r--crypto/openssh/.github/workflows/upstream.yml29
7 files changed, 237 insertions, 147 deletions
diff --git a/crypto/openssh/.github/ci-status.md b/crypto/openssh/.github/ci-status.md
index 0ad8bf5aaf44..d13bbfa8c038 100644
--- a/crypto/openssh/.github/ci-status.md
+++ b/crypto/openssh/.github/ci-status.md
@@ -1,4 +1,10 @@
-[![C/C++ CI](https://github.com/openssh/openssh-portable/actions/workflows/c-cpp.yml/badge.svg)](https://github.com/openssh/openssh-portable/actions/workflows/c-cpp.yml)
-[![C/C++ CI self-hosted](https://github.com/openssh/openssh-portable-selfhosted/actions/workflows/selfhosted.yml/badge.svg)](https://github.com/openssh/openssh-portable-selfhosted/actions/workflows/selfhosted.yml)
-[![Upstream self-hosted](https://github.com/openssh/openssh-portable-selfhosted/actions/workflows/upstream.yml/badge.svg)](https://github.com/openssh/openssh-portable-selfhosted/actions/workflows/upstream.yml)
+master :
+[![C/C++ CI](https://github.com/openssh/openssh-portable/actions/workflows/c-cpp.yml/badge.svg)](https://github.com/openssh/openssh-portable/actions/workflows/c-cpp.yml?query=branch:master)
+[![C/C++ CI self-hosted](https://github.com/openssh/openssh-portable-selfhosted/actions/workflows/selfhosted.yml/badge.svg)](https://github.com/openssh/openssh-portable-selfhosted/actions/workflows/selfhosted.yml?query=branch:master)
+[![Upstream self-hosted](https://github.com/openssh/openssh-portable-selfhosted/actions/workflows/upstream.yml/badge.svg)](https://github.com/openssh/openssh-portable-selfhosted/actions/workflows/upstream.yml?query=branch:master)
+[![CIFuzz](https://github.com/openssh/openssh-portable/actions/workflows/cifuzz.yml/badge.svg)](https://github.com/openssh/openssh-portable/actions/workflows/cifuzz.yml)
[![Fuzzing Status](https://oss-fuzz-build-logs.storage.googleapis.com/badges/openssh.svg)](https://bugs.chromium.org/p/oss-fuzz/issues/list?sort=-opened&can=1&q=proj:openssh)
+
+9.1 :
+[![C/C++ CI](https://github.com/openssh/openssh-portable/actions/workflows/c-cpp.yml/badge.svg?branch=V_9_1)](https://github.com/openssh/openssh-portable/actions/workflows/c-cpp.yml?query=branch:V_9_1)
+[![C/C++ CI self-hosted](https://github.com/openssh/openssh-portable-selfhosted/actions/workflows/selfhosted.yml/badge.svg?branch=V_9_1)](https://github.com/openssh/openssh-portable-selfhosted/actions/workflows/selfhosted.yml?query=branch:V_9_1)
diff --git a/crypto/openssh/.github/configs b/crypto/openssh/.github/configs
index 6bf1ab27f0ca..bdd5ddbdfaf0 100755
--- a/crypto/openssh/.github/configs
+++ b/crypto/openssh/.github/configs
@@ -9,10 +9,13 @@
# LTESTS
config=$1
+if [ "$config" = "" ]; then
+ config="default"
+fi
unset CC CFLAGS CPPFLAGS LDFLAGS LTESTS SUDO
-TEST_TARGET="tests"
+TEST_TARGET="tests compat-tests"
LTESTS=""
SKIP_LTESTS=""
SUDO=sudo # run with sudo by default
@@ -108,7 +111,7 @@ case "$config" in
kitchensink)
CONFIGFLAGS="--with-kerberos5 --with-libedit --with-pam"
CONFIGFLAGS="${CONFIGFLAGS} --with-security-key-builtin --with-selinux"
- CONFIGFLAGS="${CONFIGFLAGS} --with-cflags=-DSK_DEBUG"
+ CFLAGS="-DSK_DEBUG -DSANDBOX_SECCOMP_FILTER_DEBUG"
;;
hardenedmalloc)
CONFIGFLAGS="--with-ldflags=-lhardened_malloc"
@@ -141,6 +144,11 @@ case "$config" in
;;
openssl-*)
LIBCRYPTOFLAGS="--with-ssl-dir=/opt/openssl --with-rpath=-Wl,-rpath,"
+ # OpenSSL 1.1.1 specifically has a bug in its RNG that breaks reexec
+ # fallback. See https://bugzilla.mindrot.org/show_bug.cgi?id=3483
+ if [ "$config" = "openssl-1.1.1" ]; then
+ SKIP_LTESTS="reexec"
+ fi
;;
selinux)
CONFIGFLAGS="--with-selinux"
@@ -152,7 +160,7 @@ case "$config" in
LIBCRYPTOFLAGS="--without-openssl"
TEST_TARGET=t-exec
;;
- valgrind-[1-4]|valgrind-unit)
+ valgrind-[1-5]|valgrind-unit)
# rlimit sandbox and FORTIFY_SOURCE confuse Valgrind.
CONFIGFLAGS="--without-sandbox --without-hardening"
CONFIGFLAGS="$CONFIGFLAGS --with-cppflags=-D_FORTIFY_SOURCE=0"
@@ -161,16 +169,19 @@ case "$config" in
export TEST_SSH_ELAPSED_TIMES
# Valgrind slows things down enough that the agent timeout test
# won't reliably pass, and the unit tests run longer than allowed
- # by github so split into three separate tests.
- tests2="rekey integrity try-ciphers"
+ # by github so split into separate tests.
+ tests2="integrity try-ciphers"
tests3="krl forward-control sshsig agent-restrict kextype sftp"
tests4="cert-userkey cert-hostkey kextype sftp-perm keygen-comment percent"
+ tests5="rekey"
case "$config" in
valgrind-1)
- # All tests except agent-timeout (which is flaky under valgrind)
+ # All tests except agent-timeout (which is flaky under valgrind),
+ # connection-timeout (which doesn't work since it's so slow)
# and hostbased (since valgrind won't let ssh exec keysign).
# Slow ones are run separately to increase parallelism.
- SKIP_LTESTS="agent-timeout hostbased ${tests2} ${tests3} ${tests4}"
+ SKIP_LTESTS="agent-timeout connection-timeout hostbased"
+ SKIP_LTESTS="$SKIP_LTESTS ${tests2} ${tests3} ${tests4} ${tests5}"
;;
valgrind-2)
LTESTS="${tests2}"
@@ -181,6 +192,9 @@ case "$config" in
valgrind-4)
LTESTS="${tests4}"
;;
+ valgrind-5)
+ LTESTS="${tests5}"
+ ;;
valgrind-unit)
TEST_TARGET="unit USE_VALGRIND=1"
;;
@@ -210,6 +224,10 @@ case "${TARGET_HOST}" in
TEST_TARGET="t-exec TEST_SHELL=bash"
SKIP_LTESTS="rekey sftp"
;;
+ debian-riscv64)
+ # This machine is fairly slow, so skip the unit tests.
+ TEST_TARGET="t-exec"
+ ;;
dfly58*|dfly60*)
# scp 3-way connection hangs on these so skip until sorted.
SKIP_LTESTS=scp3
@@ -227,12 +245,15 @@ case "${TARGET_HOST}" in
# test that relies on one.
# Also, Minix seems to be very limited in the number of select()
# calls that can be operating concurrently, so prune additional tests for that.
- T="addrmatch agent-restrict brokenkeys cfgmatch cfgmatchlisten cfgparse connect
- connect-uri exit-status forward-control forwarding hostkey-agent
- key-options keyscan knownhosts-command login-timeout multiplex
+ T="addrmatch agent-restrict brokenkeys cfgmatch cfgmatchlisten cfgparse
+ connect connect-uri exit-status forwarding hostkey-agent
+ key-options keyscan knownhosts-command login-timeout
reconfigure reexec rekey scp scp-uri scp3 sftp sftp-badcmds
sftp-batch sftp-cmds sftp-glob sftp-perm sftp-uri stderr-data
transfer"
+ # Unix domain sockets don't work quite like we expect, so also skip any tests
+ # that use multiplexing.
+ T="$T connection-timeout dynamic-forward forward-control multiplex"
SKIP_LTESTS="$(echo $T)"
TEST_TARGET=t-exec
SUDO=""
@@ -260,6 +281,8 @@ esac
case "`./config.guess`" in
*cygwin)
SUDO=""
+ # Don't run compat tests on cygwin as they don't currently compile.
+ TEST_TARGET="tests"
;;
*-darwin*)
# Unless specified otherwise, build without OpenSSL on Mac OS since
diff --git a/crypto/openssh/.github/setup_ci.sh b/crypto/openssh/.github/setup_ci.sh
index 044c4d1292b1..e4480e614f31 100755
--- a/crypto/openssh/.github/setup_ci.sh
+++ b/crypto/openssh/.github/setup_ci.sh
@@ -139,16 +139,29 @@ if [ "yes" = "$INSTALL_FIDO_PPA" ]; then
sudo apt-add-repository -y ppa:yubico/stable
fi
-if [ "x" != "x$PACKAGES" ]; then
+tries=3
+while [ ! -z "$PACKAGES" ] && [ "$tries" -gt "0" ]; do
case "$PACKAGER" in
apt)
sudo apt update -qq
- sudo apt install -qy $PACKAGES
+ if sudo apt install -qy $PACKAGES; then
+ PACKAGES=""
+ fi
;;
setup)
- /cygdrive/c/setup.exe -q -P `echo "$PACKAGES" | tr ' ' ,`
+ if /cygdrive/c/setup.exe -q -P `echo "$PACKAGES" | tr ' ' ,`; then
+ PACKAGES=""
+ fi
;;
esac
+ if [ ! -z "$PACKAGES" ]; then
+ sleep 90
+ fi
+ tries=$(($tries - 1))
+done
+if [ ! -z "$PACKAGES" ]; then
+ echo "Package installation failed."
+ exit 1
fi
if [ "${INSTALL_HARDENED_MALLOC}" = "yes" ]; then
diff --git a/crypto/openssh/.github/workflows/c-cpp.yml b/crypto/openssh/.github/workflows/c-cpp.yml
index 3cd1188fc572..e6ea49550f71 100644
--- a/crypto/openssh/.github/workflows/c-cpp.yml
+++ b/crypto/openssh/.github/workflows/c-cpp.yml
@@ -2,11 +2,9 @@ name: C/C++ CI
on:
push:
- branches: [ master, ci, V_9_0 ]
- paths: [ '**.c', '**.h', '**.m4', '**.sh', '.github/**', 'Makefile.in', 'configure.ac' ]
+ paths: [ '**.c', '**.h', '**.m4', '**.sh', '.github/**', '**/Makefile.in', 'configure.ac' ]
pull_request:
- branches: [ master ]
- paths: [ '**.c', '**.h', '**.m4', '**.sh', '.github/**', 'Makefile.in', 'configure.ac' ]
+ paths: [ '**.c', '**.h', '**.m4', '**.sh', '.github/**', '**/Makefile.in', 'configure.ac' ]
jobs:
ci:
@@ -15,104 +13,109 @@ jobs:
fail-fast: false
matrix:
# First we test all OSes in the default configuration.
- os: [ubuntu-20.04, ubuntu-22.04, macos-11, macos-12, windows-2019, windows-2022]
- configs: [default]
+ target: [ubuntu-20.04, ubuntu-22.04, macos-11, macos-12, windows-2019, windows-2022]
+ config: [default]
# Then we include any extra configs we want to test for specific VMs.
# Valgrind slows things down quite a bit, so start them first.
include:
- - { os: windows-2019, configs: cygwin-release }
- - { os: windows-2022, configs: cygwin-release }
- - { os: ubuntu-20.04, configs: valgrind-1 }
- - { os: ubuntu-20.04, configs: valgrind-2 }
- - { os: ubuntu-20.04, configs: valgrind-3 }
- - { os: ubuntu-20.04, configs: valgrind-4 }
- - { os: ubuntu-20.04, configs: valgrind-unit }
- - { os: ubuntu-20.04, configs: c89 }
- - { os: ubuntu-20.04, configs: clang-6.0 }
- - { os: ubuntu-20.04, configs: clang-8 }
- - { os: ubuntu-20.04, configs: clang-9 }
- - { os: ubuntu-20.04, configs: clang-10 }
- - { os: ubuntu-20.04, configs: clang-11 }
- - { os: ubuntu-20.04, configs: clang-12-Werror }
- - { os: ubuntu-20.04, configs: clang-sanitize-address }
- - { os: ubuntu-20.04, configs: clang-sanitize-undefined }
- - { os: ubuntu-20.04, configs: gcc-sanitize-address }
- - { os: ubuntu-20.04, configs: gcc-sanitize-undefined }
- - { os: ubuntu-20.04, configs: gcc-7 }
- - { os: ubuntu-20.04, configs: gcc-8 }
- - { os: ubuntu-20.04, configs: gcc-10 }
- - { os: ubuntu-20.04, configs: gcc-11-Werror }
- - { os: ubuntu-20.04, configs: pam }
- - { os: ubuntu-20.04, configs: kitchensink }
- - { os: ubuntu-20.04, configs: hardenedmalloc }
- - { os: ubuntu-20.04, configs: tcmalloc }
- - { os: ubuntu-20.04, configs: musl }
- - { os: ubuntu-latest, configs: libressl-master }
- - { os: ubuntu-latest, configs: libressl-2.2.9 }
- - { os: ubuntu-latest, configs: libressl-2.8.3 }
- - { os: ubuntu-latest, configs: libressl-3.0.2 }
- - { os: ubuntu-latest, configs: libressl-3.2.6 }
- - { os: ubuntu-latest, configs: libressl-3.3.6 }
- - { os: ubuntu-latest, configs: libressl-3.4.3 }
- - { os: ubuntu-latest, configs: libressl-3.5.3 }
- - { os: ubuntu-latest, configs: openssl-master }
- - { os: ubuntu-latest, configs: openssl-noec }
- - { os: ubuntu-latest, configs: openssl-1.0.1 }
- - { os: ubuntu-latest, configs: openssl-1.0.1u }
- - { os: ubuntu-latest, configs: openssl-1.0.2u }
- - { os: ubuntu-latest, configs: openssl-1.1.0h }
- - { os: ubuntu-latest, configs: openssl-1.1.1 }
- - { os: ubuntu-latest, configs: openssl-1.1.1k }
- - { os: ubuntu-latest, configs: openssl-1.1.1n }
- - { os: ubuntu-latest, configs: openssl-1.1.1p }
- - { os: ubuntu-latest, configs: openssl-3.0.0 }
- - { os: ubuntu-latest, configs: openssl-3.0.5 }
- - { os: ubuntu-latest, configs: openssl-1.1.1_stable } # stable branch
- - { os: ubuntu-latest, configs: openssl-3.0 } # stable branch
- - { os: ubuntu-22.04, configs: pam }
- - { os: ubuntu-22.04, configs: krb5 }
- - { os: ubuntu-22.04, configs: heimdal }
- - { os: ubuntu-22.04, configs: libedit }
- - { os: ubuntu-22.04, configs: sk }
- - { os: ubuntu-22.04, configs: selinux }
- - { os: ubuntu-22.04, configs: kitchensink }
- - { os: ubuntu-22.04, configs: without-openssl }
- - { os: macos-11, configs: pam }
- - { os: macos-12, configs: pam }
- runs-on: ${{ matrix.os }}
+ - { target: windows-2019, config: cygwin-release }
+ - { target: windows-2022, config: cygwin-release }
+ - { target: ubuntu-20.04, config: valgrind-1 }
+ - { target: ubuntu-20.04, config: valgrind-2 }
+ - { target: ubuntu-20.04, config: valgrind-3 }
+ - { target: ubuntu-20.04, config: valgrind-4 }
+ - { target: ubuntu-20.04, config: valgrind-5 }
+ - { target: ubuntu-20.04, config: valgrind-unit }
+ - { target: ubuntu-20.04, config: c89 }
+ - { target: ubuntu-20.04, config: clang-6.0 }
+ - { target: ubuntu-20.04, config: clang-8 }
+ - { target: ubuntu-20.04, config: clang-9 }
+ - { target: ubuntu-20.04, config: clang-10 }
+ - { target: ubuntu-20.04, config: clang-11 }
+ - { target: ubuntu-20.04, config: clang-12-Werror }
+ - { target: ubuntu-20.04, config: clang-sanitize-address }
+ - { target: ubuntu-20.04, config: clang-sanitize-undefined }
+ - { target: ubuntu-20.04, config: gcc-sanitize-address }
+ - { target: ubuntu-20.04, config: gcc-sanitize-undefined }
+ - { target: ubuntu-20.04, config: gcc-7 }
+ - { target: ubuntu-20.04, config: gcc-8 }
+ - { target: ubuntu-20.04, config: gcc-10 }
+ - { target: ubuntu-20.04, config: gcc-11-Werror }
+ - { target: ubuntu-20.04, config: pam }
+ - { target: ubuntu-20.04, config: kitchensink }
+ - { target: ubuntu-20.04, config: hardenedmalloc }
+ - { target: ubuntu-20.04, config: tcmalloc }
+ - { target: ubuntu-20.04, config: musl }
+ - { target: ubuntu-latest, config: libressl-master }
+ - { target: ubuntu-latest, config: libressl-2.2.9 }
+ - { target: ubuntu-latest, config: libressl-2.8.3 }
+ - { target: ubuntu-latest, config: libressl-3.0.2 }
+ - { target: ubuntu-latest, config: libressl-3.2.6 }
+ - { target: ubuntu-latest, config: libressl-3.3.6 }
+ - { target: ubuntu-latest, config: libressl-3.4.3 }
+ - { target: ubuntu-latest, config: libressl-3.5.3 }
+ - { target: ubuntu-latest, config: libressl-3.6.1 }
+ - { target: ubuntu-latest, config: libressl-3.7.0 }
+ - { target: ubuntu-latest, config: openssl-master }
+ - { target: ubuntu-latest, config: openssl-noec }
+ - { target: ubuntu-latest, config: openssl-1.0.1 }
+ - { target: ubuntu-latest, config: openssl-1.0.1u }
+ - { target: ubuntu-latest, config: openssl-1.0.2u }
+ - { target: ubuntu-latest, config: openssl-1.1.0h }
+ - { target: ubuntu-latest, config: openssl-1.1.1 }
+ - { target: ubuntu-latest, config: openssl-1.1.1k }
+ - { target: ubuntu-latest, config: openssl-1.1.1n }
+ - { target: ubuntu-latest, config: openssl-1.1.1q }
+ - { target: ubuntu-latest, config: openssl-1.1.1s }
+ - { target: ubuntu-latest, config: openssl-3.0.0 }
+ - { target: ubuntu-latest, config: openssl-3.0.5 }
+ - { target: ubuntu-latest, config: openssl-3.0.7 }
+ - { target: ubuntu-latest, config: openssl-1.1.1_stable }
+ - { target: ubuntu-latest, config: openssl-3.0 } # stable branch
+ - { target: ubuntu-22.04, config: pam }
+ - { target: ubuntu-22.04, config: krb5 }
+ - { target: ubuntu-22.04, config: heimdal }
+ - { target: ubuntu-22.04, config: libedit }
+ - { target: ubuntu-22.04, config: sk }
+ - { target: ubuntu-22.04, config: selinux }
+ - { target: ubuntu-22.04, config: kitchensink }
+ - { target: ubuntu-22.04, config: without-openssl }
+ - { target: macos-11, config: pam }
+ - { target: macos-12, config: pam }
+ runs-on: ${{ matrix.target }}
steps:
- name: set cygwin git params
- if: ${{ startsWith(matrix.os, 'windows') }}
+ if: ${{ startsWith(matrix.target, 'windows') }}
run: git config --global core.autocrlf input
- name: install cygwin
- if: ${{ startsWith(matrix.os, 'windows') }}
+ if: ${{ startsWith(matrix.target, 'windows') }}
uses: cygwin/cygwin-install-action@master
- - uses: actions/checkout@v2
+ - uses: actions/checkout@main
- name: setup CI system
- run: sh ./.github/setup_ci.sh ${{ matrix.configs }}
+ run: sh ./.github/setup_ci.sh ${{ matrix.config }}
- name: autoreconf
run: sh -c autoreconf
- name: configure
- run: sh ./.github/configure.sh ${{ matrix.configs }}
+ run: sh ./.github/configure.sh ${{ matrix.config }}
- name: save config
- uses: actions/upload-artifact@v2
+ uses: actions/upload-artifact@main
with:
- name: ${{ matrix.os }}-${{ matrix.configs }}-config
+ name: ${{ matrix.target }}-${{ matrix.config }}-config
path: config.h
- name: make clean
run: make clean
- name: make
run: make -j2
- name: make tests
- run: sh ./.github/run_test.sh ${{ matrix.configs }}
+ run: sh ./.github/run_test.sh ${{ matrix.config }}
env:
TEST_SSH_UNSAFE_PERMISSIONS: 1
TEST_SSH_HOSTBASED_AUTH: yes
- name: save logs
if: failure()
- uses: actions/upload-artifact@v2
+ uses: actions/upload-artifact@main
with:
- name: ${{ matrix.os }}-${{ matrix.configs }}-logs
+ name: ${{ matrix.target }}-${{ matrix.config }}-logs
path: |
config.h
config.log
diff --git a/crypto/openssh/.github/workflows/cifuzz.yml b/crypto/openssh/.github/workflows/cifuzz.yml
new file mode 100644
index 000000000000..7ca8c4719b61
--- /dev/null
+++ b/crypto/openssh/.github/workflows/cifuzz.yml
@@ -0,0 +1,32 @@
+name: CIFuzz
+on:
+ push:
+ paths: [ '**.c', '**.h', '**.m4', '**.sh', '.github/**', '**/Makefile.in', 'configure.ac' ]
+ pull_request:
+ paths: [ '**.c', '**.h', '**.m4', '**.sh', '.github/**', '**/Makefile.in', 'configure.ac' ]
+
+jobs:
+ Fuzzing:
+ if: github.repository != 'openssh/openssh-portable-selfhosted'
+ runs-on: ubuntu-latest
+ steps:
+ - name: Build Fuzzers
+ id: build
+ uses: google/oss-fuzz/infra/cifuzz/actions/build_fuzzers@master
+ with:
+ oss-fuzz-project-name: 'openssh'
+ dry-run: false
+ language: c++
+ - name: Run Fuzzers
+ uses: google/oss-fuzz/infra/cifuzz/actions/run_fuzzers@master
+ with:
+ oss-fuzz-project-name: 'openssh'
+ fuzz-seconds: 600
+ dry-run: false
+ language: c++
+ - name: Upload Crash
+ uses: actions/upload-artifact@main
+ if: failure() && steps.build.outcome == 'success'
+ with:
+ name: artifacts
+ path: ./out/artifacts
diff --git a/crypto/openssh/.github/workflows/selfhosted.yml b/crypto/openssh/.github/workflows/selfhosted.yml
index c4bd1d9b24f7..50bc9fffb723 100644
--- a/crypto/openssh/.github/workflows/selfhosted.yml
+++ b/crypto/openssh/.github/workflows/selfhosted.yml
@@ -2,37 +2,35 @@ name: C/C++ CI self-hosted
on:
push:
- branches: [ master, ci, V_9_0 ]
- paths: [ '**.c', '**.h', '**.m4', '**.sh', '.github/**', 'Makefile.in', 'configure.ac' ]
+ paths: [ '**.c', '**.h', '**.m4', '**.sh', '.github/**', '**/Makefile.in', 'configure.ac' ]
jobs:
selfhosted:
if: github.repository == 'openssh/openssh-portable-selfhosted'
- runs-on: ${{ matrix.os }}
+ runs-on: ${{ matrix.host }}
+ timeout-minutes: 600
env:
- TARGET_HOST: ${{ matrix.os }}
+ HOST: ${{ matrix.host }}
+ 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. "os" corresponds to a label associated with the worker.
+ # default config. "target" corresponds to a label associated with the
+ # worker. The default is an ephemeral VM running under libvirt.
matrix:
- os:
- - aix51
- - ARM
- - ARM64
+ target:
- alpine
- debian-i386
- - debian-riscv64
- dfly30
- dfly48
- dfly58
- dfly60
+ - dfly62
- fbsd10
- fbsd12
- fbsd13
- # - hurd
- minix3
- # - nbsd2
- nbsd3
- nbsd4
- nbsd8
@@ -42,62 +40,71 @@ jobs:
- obsd69
- obsd70
- obsdsnap
+ - obsdsnap-i386
- openindiana
- - openwrt-mips
- - openwrt-mipsel
- # - rocky84
- sol10
- sol11
- - win10
- configs:
+ config:
- default
- # Then we include any extra configs we want to test for specific VMs.
+ host:
+ - libvirt
include:
- - { os: ARM64, configs: pam }
- - { os: debian-i386, configs: pam }
- - { os: dfly30, configs: without-openssl}
- - { os: dfly48, configs: pam }
- - { os: dfly58, configs: pam }
- - { os: dfly60, configs: pam }
- - { os: fbsd10, configs: pam }
- - { os: fbsd12, configs: pam }
- - { os: fbsd13, configs: pam }
- - { os: nbsd8, configs: pam }
- - { os: nbsd9, configs: pam }
- - { os: openindiana, configs: pam }
- # - { os: rocky84, configs: pam }
- - { os: sol10, configs: pam }
- - { os: sol11, configs: pam-krb5 }
- - { os: sol11, configs: sol64 }
- # - { os: sol11, configs: sol64-pam }
- - { os: win10, configs: cygwin-release }
+ # Then we include extra libvirt test configs.
+ - { target: aix51, config: default, 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: fbsd10, config: pam, host: libvirt }
+ - { target: fbsd12, config: pam, host: libvirt }
+ - { target: fbsd13, config: pam, host: libvirt }
+ - { target: nbsd8, config: pam, host: libvirt }
+ - { target: nbsd9, config: pam, host: libvirt }
+ - { target: openindiana, config: pam, host: libvirt }
+ - { target: sol10, config: pam, host: libvirt }
+ - { target: sol11, config: pam-krb5, host: libvirt }
+ - { target: sol11, config: sol64, host: libvirt }
+ # 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: 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: openwrt-mips, config: default, host: openwrt-mips }
+ - { target: openwrt-mipsel, config: default, host: openwrt-mipsel }
steps:
- name: shutdown VM if running
run: vmshutdown
- - uses: actions/checkout@v2
+ working-directory: ${{ runner.temp }}
+ - uses: actions/checkout@main
- name: autoreconf
run: autoreconf
- name: startup VM
run: vmstartup
+ working-directory: ${{ runner.temp }}
- name: configure
- run: vmrun ./.github/configure.sh ${{ matrix.configs }}
+ run: vmrun ./.github/configure.sh ${{ matrix.config }}
- name: save config
- uses: actions/upload-artifact@v2
+ uses: actions/upload-artifact@main
with:
- name: ${{ matrix.os }}-${{ matrix.configs }}-config
+ 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.configs }}
+ run: vmrun ./.github/run_test.sh ${{ matrix.config }}
timeout-minutes: 600
- name: save logs
if: failure()
- uses: actions/upload-artifact@v2
+ uses: actions/upload-artifact@main
with:
- name: ${{ matrix.os }}-${{ matrix.configs }}-logs
+ name: ${{ matrix.target }}-${{ matrix.config }}-logs
path: |
config.h
config.log
@@ -106,3 +113,4 @@ jobs:
- name: shutdown VM
if: always()
run: vmshutdown
+ working-directory: ${{ runner.temp }}
diff --git a/crypto/openssh/.github/workflows/upstream.yml b/crypto/openssh/.github/workflows/upstream.yml
index 3cec069ede74..1e2c2acb7ac0 100644
--- a/crypto/openssh/.github/workflows/upstream.yml
+++ b/crypto/openssh/.github/workflows/upstream.yml
@@ -2,46 +2,51 @@ name: Upstream self-hosted
on:
push:
- branches: [ master, ci ]
+ branches: [ master ]
paths: [ '**.c', '**.h', '.github/**' ]
jobs:
selfhosted:
if: github.repository == 'openssh/openssh-portable-selfhosted'
- runs-on: ${{ matrix.os }}
+ runs-on: 'libvirt'
env:
- TARGET_HOST: ${{ matrix.os }}
+ HOST: 'libvirt'
+ TARGET_HOST: ${{ matrix.target }}
+ TARGET_CONFIG: ${{ matrix.config }}
strategy:
fail-fast: false
matrix:
- os: [ obsdsnap, obsdsnap-i386 ]
- configs: [ default, without-openssl, ubsan ]
+ target: [ obsdsnap, obsdsnap-i386 ]
+ config: [ default, without-openssl, ubsan ]
steps:
- - uses: actions/checkout@v2
- name: shutdown VM if running
run: vmshutdown
+ working-directory: ${{ runner.temp }}
+ - uses: actions/checkout@main
- name: startup VM
run: vmstartup
+ working-directory: ${{ runner.temp }}
- name: update source
run: vmrun "cd /usr/src && cvs up -dPA usr.bin/ssh regress/usr.bin/ssh"
- name: make clean
- run: vmrun "cd /usr/src/usr.bin/ssh && make obj && make clean && cd /usr/src/regress/usr.bin/ssh && make obj && make clean"
+ run: vmrun "cd /usr/src/usr.bin/ssh && make obj && make clean && cd /usr/src/regress/usr.bin/ssh && make obj && make clean && sudo chmod -R g-w /usr/src /usr/obj"
- name: make
- run: vmrun "cd /usr/src/usr.bin/ssh && case ${{ matrix.configs }} in without-openssl) make OPENSSL=no;; ubsan) make DEBUG='-fsanitize-minimal-runtime -fsanitize=undefined';; *) make; esac"
+ run: vmrun "cd /usr/src/usr.bin/ssh && case ${{ matrix.config }} in without-openssl) make OPENSSL=no;; ubsan) make DEBUG='-fsanitize-minimal-runtime -fsanitize=undefined';; *) make; esac"
- name: make install
run: vmrun "cd /usr/src/usr.bin/ssh && sudo make install"
- name: make tests`
- run: vmrun "cd /usr/src/regress/usr.bin/ssh && case ${{ matrix.configs }} in without-openssl) make OPENSSL=no;; ubsan) make DEBUG='-fsanitize-minimal-runtime -fsanitize=undefined';; *) make; esac"
+ run: vmrun "cd /usr/src/regress/usr.bin/ssh && case ${{ matrix.config }} in without-openssl) make OPENSSL=no;; ubsan) make DEBUG='-fsanitize-minimal-runtime -fsanitize=undefined';; *) make; esac"
env:
SUDO: sudo
timeout-minutes: 300
- name: save logs
if: failure()
- uses: actions/upload-artifact@v2
+ uses: actions/upload-artifact@main
with:
- name: ${{ matrix.os }}-${{ matrix.configs }}-logs
+ name: ${{ matrix.target }}-${{ matrix.config }}-logs
path: |
- /usr/obj/regress/usr.bin/ssh/*.log
+ /usr/obj/regress/usr.bin/ssh/obj/*.log
- name: shutdown VM
if: always()
run: vmshutdown
+ working-directory: ${{ runner.temp }}