1name: Project tests
2
3on:
4  pull_request:
5    branches:
6    - master
7
8jobs:
9  build:
10    runs-on: ubuntu-latest
11    strategy:
12      fail-fast: false
13      matrix:
14        engine:
15          - libfuzzer
16        sanitizer:
17          - address
18          - memory
19          - undefined
20          - coverage
21        architecture:
22          - x86_64
23        include:
24          - engine: afl
25            sanitizer: address
26            architecture: x86_64
27          - engine: honggfuzz
28            sanitizer: address
29            architecture: x86_64
30          - engine: libfuzzer
31            sanitizer: address
32            architecture: i386
33          - engine: none
34            sanitizer: address
35            architecture: x86_64
36          - engine: dataflow
37            sanitizer: dataflow
38            architecture: x86_64
39    env:
40      ENGINE: ${{ matrix.engine }}
41      SANITIZER: ${{ matrix.sanitizer }}
42      ARCHITECTURE: ${{ matrix.architecture }}
43
44    steps:
45      - name: Cancel previous
46        uses: styfle/cancel-workflow-action@0.8.0
47        with:
48          access_token: ${{ github.token }}
49
50      - uses: actions/checkout@v2
51      - run: |  # Needed for git diff to work.
52          git fetch origin master --depth 1
53          git symbolic-ref refs/remotes/origin/HEAD refs/remotes/origin/master
54
55      - name: Clear unnecessary files
56        run: |
57          sudo swapoff -a
58          sudo rm -f /swapfile
59          sudo apt clean
60          docker rmi $(docker images -a -q)
61          df -h
62
63      - name: Setup python environment
64        uses: actions/setup-python@v2
65        with:
66          python-version: 3.8
67
68      - name: Install dependencies
69        run: |
70          python -m pip install --upgrade pip
71          pip install -r infra/ci/requirements.txt
72
73      - name: Run project tests
74        run: python infra/ci/build.py
75