summaryrefslogtreecommitdiffstats
path: root/.github/workflows/tests.yml
diff options
context:
space:
mode:
Diffstat (limited to '.github/workflows/tests.yml')
-rw-r--r--.github/workflows/tests.yml177
1 files changed, 177 insertions, 0 deletions
diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml
new file mode 100644
index 0000000..30d6d1d
--- /dev/null
+++ b/.github/workflows/tests.yml
@@ -0,0 +1,177 @@
+name: Run tests
+
+on:
+ # Build at 23:00 every Sunday
+ schedule:
+ - cron: "0 23 * * 1"
+ pull_request:
+ push:
+
+jobs:
+ test-distributions:
+ name: Build in containers
+ strategy:
+ matrix:
+ distro:
+ - {name: "almalinux", tag: "9"}
+ - {name: "almalinux", tag: "8"}
+ - {name: "alpine", tag: "3.19", variant: "-lts"}
+ - {name: "alpine", tag: "3.19", variant: "-virt"}
+ - {name: "alpine", tag: "3.18", variant: "-lts"}
+ - {name: "alpine", tag: "3.18", variant: "-virt"}
+ - {name: "alpine", tag: "3.17", variant: "-lts"}
+ - {name: "alpine", tag: "3.17", variant: "-virt"}
+ - {name: "alpine", tag: "3.16", variant: "-lts"}
+ - {name: "alpine", tag: "3.16", variant: "-virt"}
+ - {name: "archlinux", tag: "latest"}
+ - {name: "archlinux", tag: "latest", variant: "-lts"}
+ - {name: "archlinux", tag: "latest", variant: "-zen"}
+ - {name: "centos/centos", tag: "stream9", url: "quay.io/"}
+ - {name: "centos/centos", tag: "stream8", url: "quay.io/"}
+ - {name: "centos", tag: "7"}
+ - {name: "debian", tag: "testing"}
+ - {name: "debian", tag: "12"}
+ - {name: "debian", tag: "11"}
+ - {name: "debian", tag: "10"}
+ - {name: "fedora/fedora", tag: "39", url: "quay.io/"}
+ - {name: "fedora/fedora", tag: "38", url: "quay.io/"}
+ - {name: "gentoo/stage3", tag: "latest"}
+ - {name: "opensuse/tumbleweed", tag: "latest", variant: "-default", url: "registry.opensuse.org/"}
+ - {name: "opensuse/leap", tag: "15.5", variant: "-default", url: "registry.opensuse.org/"}
+ - {name: "ubuntu", tag: "23.10"}
+ - {name: "ubuntu", tag: "22.04"}
+ - {name: "ubuntu", tag: "20.04"}
+ - {name: "ubuntu", tag: "18.04"}
+ runs-on: ubuntu-20.04
+ container:
+ image: ${{ matrix.distro.url }}${{ matrix.distro.name }}:${{ matrix.distro.tag }}
+
+ steps:
+ - name: Install git for checkout action
+ if: contains(matrix.distro.name, 'opensuse')
+ run: |
+ zypper --non-interactive install git
+
+ - uses: actions/checkout@v3
+
+ - name: Install AlmaLinux dependencies
+ if: matrix.distro.name == 'almalinux'
+ run: |
+ yum install -y diffutils elfutils-libelf gcc kernel kernel-devel make openssl
+
+ - name: Install Alpine dependencies
+ if: matrix.distro.name == 'alpine'
+ run: |
+ apk --no-cache --update add bash gcc linux${{ matrix.distro.variant }} linux${{ matrix.distro.variant }}-dev make openssl coreutils
+
+ - name: Install Arch Linux dependencies
+ if: matrix.distro.name == 'archlinux'
+ run: |
+ pacman -Syu --noconfirm diffutils gcc make linux${{ matrix.distro.variant }} linux${{ matrix.distro.variant }}-headers openssl
+
+ - name: Install CentOS dependencies
+ if: contains(matrix.distro.name, 'centos')
+ run: |
+ yum install -y diffutils elfutils-libelf gcc kernel kernel-devel make openssl
+
+ - name: Install Debian dependencies
+ if: matrix.distro.name == 'debian'
+ run: |
+ apt-get update -q
+ apt-get install -qy make linux-headers-amd64 linux-image-amd64 openssl xz-utils
+
+ - name: Install Fedora dependencies
+ if: contains(matrix.distro.name, 'fedora')
+ run: |
+ yum install -y diffutils elfutils-libelf gcc kernel kernel-devel make openssl
+
+ - name: Install Gentoo Linux dependencies
+ if: matrix.distro.name == 'gentoo/stage3'
+ run: |
+ echo -e "ACCEPT_KEYWORDS=\"~amd64\"\nACCEPT_LICENSE=\"*\"" >> /etc/portage/make.conf
+ emerge --sync
+ FEATURES="getbinpkg binpkg-ignore-signature" USE="generic-uki" emerge --noreplace -j$(nproc) -l$(nproc) --autounmask-continue '>=sys-kernel/gentoo-kernel-bin-6.6.0'
+
+ - name: Install openSUSE leap dependencies
+ if: contains(matrix.distro.name, 'opensuse')
+ run: |
+ zypper --non-interactive install diffutils elfutils gcc kernel${{ matrix.distro.variant }} kernel${{ matrix.distro.variant }}-devel make openssl
+
+ - name: Install Ubuntu dependencies
+ if: matrix.distro.name == 'ubuntu'
+ run: |
+ apt-get update -q
+ apt-get install -qy gcc make linux-headers-generic linux-image-generic openssl shim-signed
+
+ - name: Install dkms
+ run: make install
+
+ - name: Run tests
+ run: |
+ for moddir in /usr/lib/modules/ /lib/modules/; do
+ if [ -e "$moddir" ]; then
+ kernels=$(find "$moddir" -maxdepth 1 -type d -exec basename {} \;)
+ break
+ fi
+ done
+
+ # There should be two entries - "modules" and the kernel we installed
+ if [ $(echo "${kernels}" | wc -l) -ne 2 ]; then
+ echo >&2 "Error: invalid number of kernels installed"
+ fi
+
+ KERNEL_VER=$(echo "${kernels}" | tail -n1)
+ if [ -z "${KERNEL_VER}" ] ; then
+ echo >&2 "Error: no kernel package found"
+ exit 1
+ fi
+
+ echo "Found kernel ${KERNEL_VER}"
+ export KERNEL_VER
+
+ echo "Module search paths"
+ for depmod in /etc/depmod.d/ /usr/lib/depmod.d/ /lib/depmod.d/; do
+ [ -e "$depmod" ] && grep -r ^search "$depmod" || true
+ done
+
+ if [ "${{ matrix.distro.name }}" = alpine ] && [ "${{ matrix.distro.variant }}" = "-lts" ]; then
+ if [ "${{ matrix.distro.tag}}" = "3.16" ] || [ "${{ matrix.distro.tag }}" = "3.17" ]; then
+ ./run_test.sh --no-signing-tool
+ else
+ ./run_test.sh
+ fi
+ else
+ ./run_test.sh
+ fi
+
+ test-vm:
+ name: Test in Ubuntu VM
+ strategy:
+ matrix:
+ version:
+ - 22.04
+ - 20.04
+ runs-on: ubuntu-${{ matrix.version }}
+
+ steps:
+ - uses: actions/checkout@v3
+
+ - name: Install dependencies
+ run: |
+ sudo apt-get update -q
+ sudo apt-get install -qqy make
+
+ - name: Install dkms
+ run: sudo make install
+
+ - name: Run tests
+ run: sudo ./run_test.sh
+
+ - name: Install the test module
+ run: sudo dkms install test/dkms_test-1.0
+
+ - name: Load the test module
+ run: sudo modprobe dkms_test
+
+ - name: Remove the test module
+ run: sudo dkms remove --all -m dkms_test -v 1.0