run_test.sh: add gentoo as valid os id in tests #342
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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: "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: "alpine", tag: "3.15", variant: "-lts"} | ||
- {name: "alpine", tag: "3.15", variant: "-virt"} | ||
- {name: "archlinux", tag: "latest"} | ||
- {name: "archlinux", tag: "latest", variant: "-lts"} | ||
- {name: "archlinux", tag: "latest", variant: "-zen"} | ||
- {name: "centos", tag: "7"} | ||
- {name: "almalinux", tag: "9"} | ||
- {name: "almalinux", tag: "8"} | ||
- {name: "debian", tag: "12"} | ||
- {name: "debian", tag: "11"} | ||
- {name: "debian", tag: "10"} | ||
- {name: "ubuntu", tag: "22.04"} | ||
- {name: "ubuntu", tag: "20.04"} | ||
- {name: "ubuntu", tag: "18.04"} | ||
- {name: "gentoo", tag: "latest"} | ||
runs-on: ubuntu-20.04 | ||
if: matrix.distro.name == 'gentoo' | ||
container: | ||
image: docker://docker.io/${{ matrix.distro.name }}:${{ matrix.distro.tag }} | ||
if: matrix.distro.name != 'gentoo' | ||
container: | ||
image: docker://docker.io/library/${{ matrix.distro.name }}:${{ matrix.distro.tag }} | ||
steps: | ||
- uses: actions/checkout@v3 | ||
- 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 }}-headers openssl | ||
- name: Install CentOS dependencies | ||
if: matrix.distro.name == 'centos' | ||
run: | | ||
yum install -y diffutils elfutils-libelf-devel gcc kernel kernel-devel make openssl | ||
- name: Install AlmaLinux dependencies | ||
if: matrix.distro.name == 'almalinux' | ||
run: | | ||
yum install -y diffutils elfutils-libelf-devel 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 | ||
- 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 Gentoo Linux dependencies | ||
if: matrix.distro.name == 'gentoo' | ||
run: | | ||
emerge --sync | ||
emerge --noreplace -j2 -l2 gentoo-kernel-bin openssl | ||
- name: Compute packaged kernel version | ||
id: versions | ||
run: | | ||
KERNEL_VER='' | ||
if [ "${{ matrix.distro.name }}" = alpine ] ; then | ||
KERNEL_VER="$(apk info --contents "linux${{ matrix.distro.variant }}-dev" | sed -n 's:^lib/modules/\([^/][^/]*\)/.*:\1:p' | head -n 1)" | ||
elif [ "${{ matrix.distro.name }}" = archlinux ] ; then | ||
KERNEL_VER="$(pacman -Qql "linux${{ matrix.distro.variant }}-headers" | sed -n 's:^/usr/lib/modules/\([^/]\+\)/.*:\1:p' | head -n 1)" | ||
elif [ "${{ matrix.distro.name }}" = centos ] || [ "${{ matrix.distro.name }}" = almalinux ] ; then | ||
KERNEL_VER="$(LANG=C rpm -qi kernel-devel | sed -n 's/^Source RPM *: kernel-\(.*\).src.rpm$/\1.x86_64/p' | tail -n 1)" | ||
elif [ "${{ matrix.distro.name }}" = debian ] ; then | ||
KERNEL_VER="$(LANG=C dpkg --status linux-headers-amd64 | sed -n 's/^Depends: linux-headers-\(\S\+\)\( .*\)\?/\1/p' | head -n 1)" | ||
elif [ "${{ matrix.distro.name }}" = ubuntu ] ; then | ||
KERNEL_VER="$(LANG=C dpkg --status linux-headers-generic | sed -n 's/^Depends: linux-headers-\(\S\+\)\( .*\)\?/\1/p' | head -n 1)" | ||
elif [ "${{ matrix.distro.name }}" = gentoo ] ; then | ||
KERNEL_VER="$(emerge --search gentoo-kernel-bin | sed -n 's/Latest version installed: \([0-9.]\)/\1/p' | head -n 1)" | ||
fi | ||
if [ -z "${KERNEL_VER}" ] ; then | ||
echo >&2 "Error: no kernel package found" | ||
exit 1 | ||
fi | ||
echo "Found packaged kernel ${KERNEL_VER}" | ||
echo "KERNEL_VER=${KERNEL_VER}" >> "$GITHUB_ENV" | ||
- name: Install dkms | ||
run: make install | ||
- name: Run tests | ||
run: | | ||
if [ "${{ matrix.distro.name }}" = alpine ] && [ "${{ matrix.distro.variant }}" = "-lts" ]; then | ||
./run_test.sh --no-signing-tool | ||
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 |