diff options
Diffstat (limited to '.github/actions/vmtest/action.yml')
-rw-r--r-- | .github/actions/vmtest/action.yml | 99 |
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' |