mirror of
https://github.com/netdata/libbpf.git
synced 2026-03-22 01:09:06 +08:00
As of https://github.com/libbpf/ci/pull/67 a bunch of actions honor KBUILD_OUTPUT. Doing so will make it possible to separate source code from build artifacts, which in turn may allow us to support incremental kernel compilation in CI down the line. Irrespective of these future changes, actions pertaining the kernel build now ask for an additional input defining where to store or expect build artifacts. Provide it. Signed-off-by: Daniel Müller <deso@posteo.net>
100 lines
3.0 KiB
YAML
100 lines
3.0 KiB
YAML
name: 'vmtest'
|
|
description: 'Build + run vmtest'
|
|
inputs:
|
|
kernel:
|
|
description: 'kernel version or LATEST'
|
|
required: true
|
|
default: 'LATEST'
|
|
arch:
|
|
description: 'what arch to test'
|
|
required: true
|
|
default: 'x86_64'
|
|
pahole:
|
|
description: 'pahole rev or master'
|
|
required: true
|
|
default: 'master'
|
|
runs:
|
|
using: "composite"
|
|
steps:
|
|
# setup environment
|
|
- name: Setup environment
|
|
uses: libbpf/ci/setup-build-env@master
|
|
with:
|
|
pahole: ${{ inputs.pahole }}
|
|
# 1. download CHECKPOINT kernel source
|
|
- name: Get checkpoint commit
|
|
shell: bash
|
|
run: |
|
|
cat CHECKPOINT-COMMIT
|
|
echo "CHECKPOINT=$(cat CHECKPOINT-COMMIT)" >> $GITHUB_ENV
|
|
- name: Get kernel source at checkpoint
|
|
uses: libbpf/ci/get-linux-source@master
|
|
with:
|
|
repo: 'https://git.kernel.org/pub/scm/linux/kernel/git/bpf/bpf-next.git'
|
|
rev: ${{ env.CHECKPOINT }}
|
|
dest: '${{ github.workspace }}/.kernel'
|
|
- name: Patch kernel source
|
|
uses: libbpf/ci/patch-kernel@master
|
|
with:
|
|
patches-root: '${{ github.workspace }}/ci/diffs'
|
|
repo-root: '.kernel'
|
|
- name: Prepare to build BPF selftests
|
|
shell: bash
|
|
run: |
|
|
source $GITHUB_ACTION_PATH/../../../ci/vmtest/helpers.sh
|
|
foldable start "Prepare building selftest"
|
|
cd .kernel
|
|
cat tools/testing/selftests/bpf/config \
|
|
tools/testing/selftests/bpf/config.${{ inputs.arch }} > .config
|
|
make olddefconfig && make prepare
|
|
cd -
|
|
foldable end
|
|
# 2. if kernel == LATEST, build kernel image from tree
|
|
- name: Build kernel image
|
|
if: ${{ inputs.kernel == 'LATEST' }}
|
|
shell: bash
|
|
run: |
|
|
source $GITHUB_ACTION_PATH/../../../ci/vmtest/helpers.sh
|
|
foldable start "Build Kernel Image"
|
|
cd .kernel
|
|
make -j $((4*$(nproc))) all > /dev/null
|
|
cp vmlinux ${{ github.workspace }}
|
|
cd -
|
|
foldable end
|
|
# else, just download prebuilt kernel image
|
|
- name: Download prebuilt kernel
|
|
if: ${{ inputs.kernel != 'LATEST' }}
|
|
uses: libbpf/ci/download-vmlinux@master
|
|
with:
|
|
kernel: ${{ inputs.kernel }}
|
|
arch: ${{ inputs.arch }}
|
|
# 3. build selftests
|
|
- name: Build BPF selftests
|
|
uses: ./.github/actions/build-selftests
|
|
with:
|
|
repo-path: '.kernel'
|
|
kernel: ${{ inputs.kernel }}
|
|
# 4. prepare rootfs
|
|
- name: prepare rootfs
|
|
uses: libbpf/ci/prepare-rootfs@master
|
|
env:
|
|
KBUILD_OUTPUT: '.kernel'
|
|
with:
|
|
project-name: 'libbpf'
|
|
arch: ${{ inputs.arch }}
|
|
kernel: ${{ inputs.kernel }}
|
|
kernel-root: '.kernel'
|
|
kbuild-output: ${{ env.KBUILD_OUTPUT }}
|
|
image-output: '/tmp/root.img'
|
|
# 5. run selftest in QEMU
|
|
- name: Run selftests
|
|
env:
|
|
KERNEL: ${{ inputs.kernel }}
|
|
REPO_ROOT: ${{ github.workspace }}
|
|
uses: libbpf/ci/run-qemu@master
|
|
with:
|
|
arch: ${{ inputs.arch }}
|
|
img: '/tmp/root.img'
|
|
vmlinuz: 'vmlinuz'
|
|
kernel-root: '.kernel'
|