Files
i915-sriov-dkms/.github/workflows/test.yml
2026-05-06 11:43:26 +08:00

198 lines
8.2 KiB
YAML

name: Test
on:
workflow_dispatch:
push:
branches:
- "**"
tags-ignore:
- "[0-9]+.[0-9]+.[0-9]+"
jobs:
test-proxmox-trixie:
runs-on: ubuntu-24.04
container:
image: debian:trixie
steps:
- name: Install Dependencies
run: |
export DEBIAN_FRONTEND=noninteractive
apt-get update
apt-get install -y curl
sh -c "echo deb http://download.proxmox.com/debian/pve trixie pve-no-subscription >> /etc/apt/sources.list"
curl -o /etc/apt/trusted.gpg.d/proxmox-release-trixie.gpg https://enterprise.proxmox.com/debian/proxmox-release-trixie.gpg
apt-get update
apt-get install -y proxmox-archive-keyring
apt-get upgrade -y
apt-get install -y build-essential elfutils libelf-dev proxmox-default-kernel proxmox-default-headers
- name: Checkout
uses: actions/checkout@v6
with:
path: i915-sriov-dkms
- name: Check Kernel Compatibility
if: github.event_name != 'workflow_dispatch'
id: check_kernel
shell: bash
working-directory: i915-sriov-dkms
run: |
KERNEL_SOURCE_DIR=$(dpkg -L $(dpkg -s $(dpkg -s proxmox-default-headers | grep "Depends: " | cut -d " " -f2) | grep "Depends: " | cut -d " " -f2) | grep -m 1 -Eo ".*/lib/modules/[^/]+/build")
KERNELRELEASE=$(echo -n "$KERNEL_SOURCE_DIR" | sed 's/.*\/lib\/modules\///g;s/\/build//')
echo "Detected kernel: $KERNELRELEASE"
REGEX=$(grep '^BUILD_EXCLUSIVE_KERNEL=' dkms.conf | cut -d'"' -f2)
if [[ ! "$KERNELRELEASE" =~ $REGEX ]]; then
echo "Kernel $KERNELRELEASE not supported yet."
echo "skip_build=true" >> $GITHUB_OUTPUT
else
echo "Kernel $KERNELRELEASE is supported."
echo "skip_build=false" >> $GITHUB_OUTPUT
fi
- name: Build Module
if: github.event_name == 'workflow_dispatch' || steps.check_kernel.outputs.skip_build == 'false'
working-directory: i915-sriov-dkms
run: |
KERNEL_SOURCE_DIR=$(dpkg -L $(dpkg -s $(dpkg -s proxmox-default-headers | grep "Depends: " | cut -d " " -f2) | grep "Depends: " | cut -d " " -f2) | grep -m 1 -Eo ".*/lib/modules/[^/]+/build")
KERNELRELEASE=$(echo -n "$KERNEL_SOURCE_DIR" | sed 's/.*\/lib\/modules\///g;s/\/build//')
make -j$(nproc) KERNELRELEASE=$KERNELRELEASE -C $KERNEL_SOURCE_DIR M=$(pwd)
test-ubuntu-noble:
runs-on: ubuntu-24.04
steps:
- name: Install Dependencies
run: |
sudo apt-get update
sudo DEBIAN_FRONTEND=noninteractive apt-get install -y git build-essential linux-image-generic-6.17 linux-headers-generic-6.17
- name: Checkout
uses: actions/checkout@v6
with:
path: i915-sriov-dkms
- name: Build Module
working-directory: i915-sriov-dkms
run: |
KERNEL_SOURCE_DIR=$(dpkg -L $(dpkg -s linux-headers-generic-6.17 | grep "Depends: " | cut -d " " -f2) | grep -m 1 -Eo ".*/lib/modules/[^/]+/build")
KERNELRELEASE=$(echo -n "$KERNEL_SOURCE_DIR" | sed 's/.*\/lib\/modules\///g;s/\/build//')
sudo make -j$(nproc) KERNELRELEASE=$KERNELRELEASE -C $KERNEL_SOURCE_DIR M=$(pwd)
test-archlinux:
runs-on: ubuntu-24.04
container:
image: archlinux:base-devel
steps:
- name: Install Dependencies
run: |
pacman-key --init
pacman -Syu --noconfirm git linux linux-headers
- name: Checkout
uses: actions/checkout@v6
with:
path: i915-sriov-dkms
- name: Check Kernel Compatibility
if: github.event_name != 'workflow_dispatch'
id: check_kernel
working-directory: i915-sriov-dkms
run: |
KERNEL_SOURCE_DIR=$(pacman -Qql linux-headers | grep -m 1 -Eo ".*/lib/modules/[^/]+/build")
KERNELRELEASE=$(echo -n "$KERNEL_SOURCE_DIR" | sed 's/.*\/lib\/modules\///g;s/\/build//')
echo "Detected kernel: $KERNELRELEASE"
REGEX=$(grep '^BUILD_EXCLUSIVE_KERNEL=' dkms.conf | cut -d'"' -f2)
if [[ ! "$KERNELRELEASE" =~ $REGEX ]]; then
echo "Kernel $KERNELRELEASE not supported yet."
echo "skip_build=true" >> $GITHUB_OUTPUT
else
echo "Kernel $KERNELRELEASE is supported."
echo "skip_build=false" >> $GITHUB_OUTPUT
fi
- name: Build Module
if: github.event_name == 'workflow_dispatch' || steps.check_kernel.outputs.skip_build == 'false'
working-directory: i915-sriov-dkms
run: |
KERNEL_SOURCE_DIR=$(pacman -Qql linux-headers | grep -m 1 -Eo ".*/lib/modules/[^/]+/build")
KERNELRELEASE=$(echo -n "$KERNEL_SOURCE_DIR" | sed 's/.*\/lib\/modules\///g;s/\/build//')
sudo make -j$(nproc) KERNELRELEASE=$KERNELRELEASE -C $KERNEL_SOURCE_DIR M=$(pwd)
test-archlinux-lts:
runs-on: ubuntu-24.04
container:
image: archlinux:base-devel
steps:
- name: Install Dependencies
run: |
pacman-key --init
pacman -Syu --noconfirm git linux-lts linux-lts-headers
- name: Checkout
uses: actions/checkout@v6
with:
path: i915-sriov-dkms
- name: Check Kernel Compatibility
if: github.event_name != 'workflow_dispatch'
id: check_kernel
working-directory: i915-sriov-dkms
run: |
KERNEL_SOURCE_DIR=$(pacman -Qql linux-lts-headers | grep -m 1 -Eo ".*/lib/modules/[^/]+/build")
KERNELRELEASE=$(echo -n "$KERNEL_SOURCE_DIR" | sed 's/.*\/lib\/modules\///g;s/\/build//')
echo "Detected kernel: $KERNELRELEASE"
REGEX=$(grep '^BUILD_EXCLUSIVE_KERNEL=' dkms.conf | cut -d'"' -f2)
if [[ ! "$KERNELRELEASE" =~ $REGEX ]]; then
echo "Kernel $KERNELRELEASE not supported yet."
echo "skip_build=true" >> $GITHUB_OUTPUT
else
echo "Kernel $KERNELRELEASE is supported."
echo "skip_build=false" >> $GITHUB_OUTPUT
fi
- name: Build Module
if: github.event_name == 'workflow_dispatch' || steps.check_kernel.outputs.skip_build == 'false'
working-directory: i915-sriov-dkms
run: |
KERNEL_SOURCE_DIR=$(pacman -Qql linux-lts-headers | grep -m 1 -Eo ".*/lib/modules/[^/]+/build")
KERNELRELEASE=$(echo -n "$KERNEL_SOURCE_DIR" | sed 's/.*\/lib\/modules\///g;s/\/build//')
sudo make -j$(nproc) KERNELRELEASE=$KERNELRELEASE -C $KERNEL_SOURCE_DIR M=$(pwd)
test-archlinux-mainline:
runs-on: ubuntu-24.04
container:
image: archlinux:base-devel
steps:
- name: Install Dependencies
run: |
pacman-key --init
cat <<EOF >> /etc/pacman.conf
[archlinuxcn]
Server = https://repo.archlinuxcn.org/\$arch
SigLevel = Never
EOF
pacman -Syu --noconfirm git linux-mainline linux-mainline-headers
- name: Checkout
uses: actions/checkout@v6
with:
path: i915-sriov-dkms
- name: Check Kernel Compatibility
if: github.event_name != 'workflow_dispatch'
id: check_kernel
working-directory: i915-sriov-dkms
run: |
KERNEL_SOURCE_DIR=$(pacman -Qql linux-mainline-headers | grep -m 1 -Eo ".*/lib/modules/[^/]+/build")
KERNELRELEASE=$(echo -n "$KERNEL_SOURCE_DIR" | sed 's/.*\/lib\/modules\///g;s/\/build//')
echo "Detected kernel: $KERNELRELEASE"
REGEX=$(grep '^BUILD_EXCLUSIVE_KERNEL=' dkms.conf | cut -d'"' -f2)
if [[ ! "$KERNELRELEASE" =~ $REGEX ]]; then
echo "Kernel $KERNELRELEASE not supported yet."
echo "skip_build=true" >> $GITHUB_OUTPUT
else
echo "Kernel $KERNELRELEASE is supported."
echo "skip_build=false" >> $GITHUB_OUTPUT
fi
- name: Build Module
if: github.event_name == 'workflow_dispatch' || steps.check_kernel.outputs.skip_build == 'false'
working-directory: i915-sriov-dkms
run: |
KERNEL_SOURCE_DIR=$(pacman -Qql linux-mainline-headers | grep -m 1 -Eo ".*/lib/modules/[^/]+/build")
KERNELRELEASE=$(echo -n "$KERNEL_SOURCE_DIR" | sed 's/.*\/lib\/modules\///g;s/\/build//')
sudo make -j$(nproc) KERNELRELEASE=$KERNELRELEASE -C $KERNEL_SOURCE_DIR M=$(pwd)