mirror of
https://github.com/netdata/libbpf.git
synced 2026-03-21 08:49:06 +08:00
With an upcoming change we would like to invoke bpftool checks from the run-qemu action (https://github.com/libbpf/ci/pull/37). This action requires two environment variables, KERNEL and REPO_ROOT, set in order to function. Make sure to set them now. Long term we should probably make them explicit input arguments instead of implicit global state, but there are many more such instances that we need to clean up. Signed-off-by: Daniel Müller <deso@posteo.net>
97 lines
2.9 KiB
YAML
97 lines
2.9 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 }}/travis-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
|
|
with:
|
|
project-name: 'libbpf'
|
|
arch: ${{ inputs.arch }}
|
|
kernel: ${{ inputs.kernel }}
|
|
kernel-root: '.kernel'
|
|
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'
|