summaryrefslogtreecommitdiffstats
path: root/.github/actions/vmtest
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--.github/actions/vmtest/action.yml99
1 files changed, 99 insertions, 0 deletions
diff --git a/.github/actions/vmtest/action.yml b/.github/actions/vmtest/action.yml
new file mode 100644
index 0000000..d124fbd
--- /dev/null
+++ b/.github/actions/vmtest/action.yml
@@ -0,0 +1,99 @@
+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'