summaryrefslogtreecommitdiffstats
path: root/.github
diff options
context:
space:
mode:
Diffstat (limited to '.github')
-rwxr-xr-x.github/run_test.sh34
-rwxr-xr-x.github/setup_ci.sh51
-rw-r--r--.github/workflows/c-cpp.yml39
3 files changed, 124 insertions, 0 deletions
diff --git a/.github/run_test.sh b/.github/run_test.sh
new file mode 100755
index 0000000..93c3a5e
--- /dev/null
+++ b/.github/run_test.sh
@@ -0,0 +1,34 @@
+#!/usr/bin/env bash
+
+TARGETS=$@
+
+TEST_TARGET="tests"
+LTESTS="" # all tests by default
+
+set -ex
+
+for TARGET in $TARGETS; do
+ case $TARGET in
+ --without-openssl)
+ # When built without OpenSSL we can't do the file-based RSA key tests.
+ TEST_TARGET=t-exec
+ ;;
+ esac
+done
+
+if [ -z "$LTESTS" ]; then
+ make $TEST_TARGET
+ result=$?
+else
+ make $TEST_TARGET LTESTS="$LTESTS"
+ result=$?
+fi
+
+if [ "$result" -ne "0" ]; then
+ for i in regress/failed*; do
+ echo -------------------------------------------------------------------------
+ echo LOGFILE $i
+ cat $i
+ echo -------------------------------------------------------------------------
+ done
+fi
diff --git a/.github/setup_ci.sh b/.github/setup_ci.sh
new file mode 100755
index 0000000..e2474cc
--- /dev/null
+++ b/.github/setup_ci.sh
@@ -0,0 +1,51 @@
+#!/usr/bin/env bash
+
+TARGETS=$@
+
+PACKAGES=""
+INSTALL_FIDO_PPA="no"
+
+#echo "Setting up for '$TARGETS'"
+
+set -ex
+
+lsb_release -a
+
+for TARGET in $TARGETS; do
+ case $TARGET in
+ ""|--without-openssl|--without-zlib)
+ # nothing to do
+ ;;
+ "--with-kerberos5")
+ PACKAGES="$PACKAGES heimdal-dev"
+ #PACKAGES="$PACKAGES libkrb5-dev"
+ ;;
+ "--with-libedit")
+ PACKAGES="$PACKAGES libedit-dev"
+ ;;
+ "--with-pam")
+ PACKAGES="$PACKAGES libpam0g-dev"
+ ;;
+ "--with-security-key-builtin")
+ INSTALL_FIDO_PPA="yes"
+ PACKAGES="$PACKAGES libfido2-dev libu2f-host-dev"
+ ;;
+ "--with-selinux")
+ PACKAGES="$PACKAGES libselinux1-dev selinux-policy-dev"
+ ;;
+ *) echo "Invalid option"
+ exit 1
+ ;;
+ esac
+done
+
+if [ "yes" == "$INSTALL_FIDO_PPA" ]; then
+ sudo apt update -qq
+ sudo apt install software-properties-common
+ sudo apt-add-repository ppa:yubico/stable
+fi
+
+if [ "x" != "x$PACKAGES" ]; then
+ sudo apt update -qq
+ sudo apt install -qy $PACKAGES
+fi
diff --git a/.github/workflows/c-cpp.yml b/.github/workflows/c-cpp.yml
new file mode 100644
index 0000000..2189756
--- /dev/null
+++ b/.github/workflows/c-cpp.yml
@@ -0,0 +1,39 @@
+name: C/C++ CI
+
+on:
+ push:
+ branches: [ master, ci ]
+ pull_request:
+ branches: [ master ]
+
+jobs:
+ build:
+
+ runs-on: ubuntu-latest
+
+ strategy:
+ matrix:
+ configs:
+ - ""
+ - "--with-kerberos5"
+ - "--with-libedit"
+ - "--with-pam"
+ - "--with-security-key-builtin"
+ - "--with-selinux"
+ - "--with-kerberos5 --with-libedit --with-pam --with-security-key-builtin --with-selinux"
+ - "--without-openssl --without-zlib"
+
+ steps:
+ - uses: actions/checkout@v2
+ - name: setup CI system
+ run: ./.github/setup_ci.sh ${{ matrix.configs }}
+ - name: autoreconf
+ run: autoreconf
+ - name: configure
+ run: ./configure ${{ matrix.configs }}
+ - name: make
+ run: make
+ - name: make tests
+ run: ./.github/run_test.sh ${{ matrix.configs }}
+ env:
+ TEST_SSH_UNSAFE_PERMISSIONS: 1