1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
|
name: Run tests
on: [push, pull_request]
jobs:
test-distributions:
name: Build in containers
strategy:
matrix:
distro:
- {name: "alpine", tag: "3.14", variant: "-lts"}
- {name: "alpine", tag: "3.14", variant: "-virt"}
- {name: "alpine", tag: "3.13", variant: "-lts"}
- {name: "alpine", tag: "3.13", variant: "-virt"}
- {name: "alpine", tag: "3.12", variant: "-lts"}
- {name: "alpine", tag: "3.12", variant: "-virt"}
- {name: "alpine", tag: "3.11", variant: "-lts"}
- {name: "alpine", tag: "3.11", variant: "-virt"}
- {name: "alpine", tag: "3.10", variant: "-vanilla"}
- {name: "alpine", tag: "3.10", 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: "8"}
- {name: "almalinux", tag: "9"}
- {name: "debian", tag: "11"}
- {name: "debian", tag: "10"}
- {name: "debian", tag: "9"}
- {name: "debian", tag: "8"}
- {name: "ubuntu", tag: "22.04"}
- {name: "ubuntu", tag: "20.04"}
- {name: "ubuntu", tag: "18.04"}
runs-on: ubuntu-20.04
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
- 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: |
EXTRA_ARGS=''
if [ "${{ matrix.distro.tag }}" = 8 ] ; then
# repo key is expired
EXTRA_ARGS="--allow-unauthenticated"
fi
apt-get update -q
apt-get install -qy $EXTRA_ARGS gcc 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: 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)"
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.tag }}" = 3.10 ] || [ "${{ matrix.distro.variant }}" = "-lts" ]); then
./run_test.sh --no-signing-tool
elif [ "${{ matrix.distro.name }}" = debian ] && [ "${{ matrix.distro.tag }}" = 8 ]; 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
|