File: vmtest.yml

package info (click to toggle)
libbpf 1.6.2-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 4,696 kB
  • sloc: ansic: 36,195; cpp: 782; sh: 637; makefile: 170; python: 23
file content (117 lines) | stat: -rw-r--r-- 3,697 bytes parent folder | download | duplicates (4)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
name: 'Build kernel and selftests/bpf, run selftests via vmtest'

on:
  workflow_call:
    inputs:
      runs_on:
        required: true
        default: 'ubuntu-24.04'
        type: string
      arch:
        description: 'what arch to test'
        required: true
        default: 'x86_64'
        type: string
      kernel:
        description: 'kernel version or LATEST'
        required: true
        default: 'LATEST'
        type: string
      pahole:
        description: 'pahole rev or branch'
        required: false
        default: 'master'
        type: string
      llvm-version:
        description: 'llvm version'
        required: false
        default: '18'
        type: string
jobs:
  vmtest:
    name: pahole@${{ inputs.pahole }}
    runs-on: ${{ inputs.runs_on }}
    steps:

      - uses: actions/checkout@v4

      - name: Setup environment
        uses: libbpf/ci/setup-build-env@v3
        with:
          pahole: ${{ inputs.pahole }}
          arch: ${{ inputs.arch }}
          llvm-version: ${{ inputs.llvm-version }}

      - 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@v3
        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@v3
        with:
          patches-root: '${{ github.workspace }}/ci/diffs'
          repo-root: '.kernel'

      - name: Configure kernel build
        shell: bash
        run: |
          cd .kernel
          cat tools/testing/selftests/bpf/config \
              tools/testing/selftests/bpf/config.${{ inputs.arch }} > .config
          # this file might or might not exist depending on kernel version
          cat tools/testing/selftests/bpf/config.vm >> .config || :
          make olddefconfig && make prepare
          cd -

      - name: Build kernel image
        if: ${{ inputs.kernel == 'LATEST' }}
        shell: bash
        run: |
          cd .kernel
          make -j $((4*$(nproc))) all
          cp vmlinux ${{ github.workspace }}
          cd -

      - name: Download prebuilt kernel
        if: ${{ inputs.kernel != 'LATEST' }}
        uses: libbpf/ci/download-vmlinux@v3
        with:
          kernel: ${{ inputs.kernel }}
          arch: ${{ inputs.arch }}

      - name: Build selftests/bpf
        uses: libbpf/ci/build-selftests@v3
        env:
          MAX_MAKE_JOBS: 32
          VMLINUX_BTF: ${{ github.workspace }}/vmlinux
          VMLINUX_H: ${{ inputs.kernel != 'LATEST' && format('{0}/.github/actions/build-selftests/vmlinux.h', github.workspace) || '' }}
        with:
          arch: ${{ inputs.arch }}
          kernel-root: ${{ github.workspace }}/.kernel
          llvm-version: ${{ inputs.llvm-version }}

      - name: Run selftests
        env:
          ALLOWLIST_FILE: /tmp/allowlist
          DENYLIST_FILE: /tmp/denylist
          KERNEL: ${{ inputs.kernel }}
          VMLINUX: ${{ github.workspace }}/vmlinux
          LLVM_VERSION: ${{ inputs.llvm-version }}
          SELFTESTS_BPF: ${{ github.workspace }}/.kernel/tools/testing/selftests/bpf
          VMTEST_CONFIGS: ${{ github.workspace }}/ci/vmtest/configs
        uses: libbpf/ci/run-vmtest@v3
        with:
          arch: ${{ inputs.arch }}
          kbuild-output: ${{ github.workspace }}/.kernel
          kernel-root: ${{ github.workspace }}/.kernel
          vmlinuz: ${{ inputs.arch }}/vmlinuz-${{ inputs.kernel }}