1name: BCC Build and tests 2 3on: 4 push: 5 branches: 6 - master 7 pull_request: 8 9jobs: 10 test_bcc: 11 runs-on: ubuntu-20.04 12 strategy: 13 matrix: 14 os: [{version: "18.04", nick: bionic}, {version: "20.04", nick: focal}] 15 env: 16 - TYPE: Debug 17 PYTHON_TEST_LOGFILE: critical.log 18 RW_ENGINE_ENABLED: ON 19 - TYPE: Debug 20 PYTHON_TEST_LOGFILE: critical.log 21 RW_ENGINE_ENABLED: OFF 22 - TYPE: Release 23 PYTHON_TEST_LOGFILE: critical.log 24 RW_ENGINE_ENABLED: ON 25 steps: 26 - uses: actions/checkout@v2 27 - name: System info 28 run: | 29 uname -a 30 ip addr 31 - name: Build docker container with all deps 32 run: | 33 docker build \ 34 --build-arg UBUNTU_VERSION=${{ matrix.os.version }} \ 35 --build-arg UBUNTU_SHORTNAME=${{ matrix.os.nick }} \ 36 -t bcc-docker -f docker/Dockerfile.tests . 37 - name: Run bcc build 38 env: ${{ matrix.env }} 39 run: | 40 /bin/bash -c \ 41 "docker run --privileged \ 42 --pid=host \ 43 -v $(pwd):/bcc \ 44 -v /sys/kernel/debug:/sys/kernel/debug:rw \ 45 -v /lib/modules:/lib/modules:ro \ 46 -v /usr/src:/usr/src:ro \ 47 -v /usr/include/linux:/usr/include/linux:ro \ 48 bcc-docker \ 49 /bin/bash -c \ 50 'mkdir -p /bcc/build && cd /bcc/build && \ 51 cmake -DCMAKE_BUILD_TYPE=${TYPE} -DENABLE_LLVM_NATIVECODEGEN=${RW_ENGINE_ENABLED} .. && make -j9'" 52 - name: Run bcc's cc tests 53 env: ${{ matrix.env }} 54 # tests are wrapped with `script` as a hack to get a TTY as github actions doesn't provide this 55 # see https://github.com/actions/runner/issues/241 56 run: | 57 script -e -c /bin/bash -c \ 58 "docker run -ti \ 59 --privileged \ 60 --network=host \ 61 --pid=host \ 62 -v $(pwd):/bcc \ 63 -v /sys/kernel/debug:/sys/kernel/debug:rw \ 64 -v /lib/modules:/lib/modules:ro \ 65 -v /usr/src:/usr/src:ro \ 66 -e CTEST_OUTPUT_ON_FAILURE=1 \ 67 bcc-docker \ 68 /bin/bash -c \ 69 '/bcc/build/tests/wrapper.sh \ 70 c_test_all sudo /bcc/build/tests/cc/test_libbcc'" 71 72 - name: Run all tests 73 env: ${{ matrix.env }} 74 run: | 75 script -e -c /bin/bash -c \ 76 "docker run -ti \ 77 --privileged \ 78 --network=host \ 79 --pid=host \ 80 -v $(pwd):/bcc \ 81 -v /sys/kernel/debug:/sys/kernel/debug:rw \ 82 -v /lib/modules:/lib/modules:ro \ 83 -v /usr/src:/usr/src:ro \ 84 -e CTEST_OUTPUT_ON_FAILURE=1 \ 85 bcc-docker \ 86 /bin/bash -c \ 87 'cd /bcc/build && \ 88 make test PYTHON_TEST_LOGFILE=$PYTHON_TEST_LOGFILE ARGS=-V'" 89 90 - name: Check critical tests 91 env: ${{ matrix.env }} 92 run: | 93 critical_count=$(grep @mayFail tests/python/critical.log | wc -l) 94 echo "There were $critical_count critical tests skipped with @mayFail:" 95 grep -A2 @mayFail tests/python/critical.log 96 97 - uses: actions/upload-artifact@v1 98 with: 99 name: critical-tests-${{ matrix.env['TYPE'] }}-${{ matrix.os.version }} 100 path: tests/python/critical.log 101 102 test_bcc_fedora: 103 runs-on: ubuntu-20.04 104 strategy: 105 matrix: 106 env: 107 - TYPE: Debug 108 PYTHON_TEST_LOGFILE: critical.log 109 - TYPE: Release 110 PYTHON_TEST_LOGFILE: critical.log 111 steps: 112 - uses: actions/checkout@v2 113 - name: System info 114 run: | 115 uname -a 116 ip addr 117 - name: Build docker container with all deps 118 run: | 119 docker build \ 120 -t bcc-docker -f docker/Dockerfile.fedora . 121 - name: Run bcc build 122 env: ${{ matrix.env }} 123 run: | 124 /bin/bash -c \ 125 "docker run --privileged \ 126 --pid=host \ 127 -v $(pwd):/bcc \ 128 -v /sys/kernel/debug:/sys/kernel/debug:rw \ 129 -v /lib/modules:/lib/modules:ro \ 130 -v /usr/src:/usr/src:ro \ 131 -v /usr/include/linux:/usr/include/linux:ro \ 132 bcc-docker \ 133 /bin/bash -c \ 134 'mkdir -p /bcc/build && cd /bcc/build && \ 135 cmake -DCMAKE_BUILD_TYPE=${TYPE} -DENABLE_LLVM_SHARED=ON -DRUN_LUA_TESTS=OFF .. && make -j9'" 136 - name: Run libbpf-tools build 137 env: ${{ matrix.env }} 138 run: | 139 /bin/bash -c \ 140 "docker run --privileged \ 141 --pid=host \ 142 -v $(pwd):/bcc \ 143 -v /sys/kernel/debug:/sys/kernel/debug:rw \ 144 -v /lib/modules:/lib/modules:ro \ 145 -v /usr/src:/usr/src:ro \ 146 -v /usr/include/linux:/usr/include/linux:ro \ 147 bcc-docker \ 148 /bin/bash -c \ 149 'cd /bcc/libbpf-tools && make -j9'" 150 151 - name: Run bcc's cc tests 152 env: ${{ matrix.env }} 153 # tests are wrapped with `script` as a hack to get a TTY as github actions doesn't provide this 154 # see https://github.com/actions/runner/issues/241 155 run: | 156 script -e -c /bin/bash -c \ 157 "docker run -ti \ 158 --privileged \ 159 --network=host \ 160 --pid=host \ 161 -v $(pwd):/bcc \ 162 -v /sys/kernel/debug:/sys/kernel/debug:rw \ 163 -v /lib/modules:/lib/modules:ro \ 164 -v /usr/src:/usr/src:ro \ 165 -e CTEST_OUTPUT_ON_FAILURE=1 \ 166 bcc-docker \ 167 /bin/bash -c \ 168 '/bcc/build/tests/wrapper.sh \ 169 c_test_all sudo /bcc/build/tests/cc/test_libbcc'" 170 171 - name: Run all tests 172 env: ${{ matrix.env }} 173 run: | 174 script -e -c /bin/bash -c \ 175 "docker run -ti \ 176 --privileged \ 177 --network=host \ 178 --pid=host \ 179 -v $(pwd):/bcc \ 180 -v /sys/kernel/debug:/sys/kernel/debug:rw \ 181 -v /lib/modules:/lib/modules:ro \ 182 -v /usr/src:/usr/src:ro \ 183 -e CTEST_OUTPUT_ON_FAILURE=1 \ 184 bcc-docker \ 185 /bin/bash -c \ 186 'cd /bcc/build && \ 187 make test PYTHON_TEST_LOGFILE=$PYTHON_TEST_LOGFILE ARGS=-V'" 188 189 - name: Check critical tests 190 env: ${{ matrix.env }} 191 run: | 192 critical_count=$(grep @mayFail tests/python/critical.log | wc -l) 193 echo "There were $critical_count critical tests skipped with @mayFail:" 194 grep -A2 @mayFail tests/python/critical.log 195 196 197# To debug weird issues, you can add this step to be able to SSH to the test environment 198# https://github.com/marketplace/actions/debugging-with-tmate 199# - name: Setup tmate session 200# uses: mxschmitt/action-tmate@v1 201