• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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