• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1name: CI
2
3on:
4  push:
5    branches: [ master ]
6    paths-ignore:
7      - '**.md'
8      - 'LICENSE'
9  pull_request:
10    types: [opened, synchronize]
11    paths-ignore:
12      - '**.md'
13      - 'LICENSE'
14
15jobs:
16  linux:
17    runs-on: ubuntu-latest
18    if: "!contains(github.event.head_commit.message, 'ci skip')"
19    strategy:
20      fail-fast: false
21      matrix:
22        mem_check:
23          - ENABLE_VALGRIND
24          - ENABLE_SANITIZERS
25          - NONE_MEM_CHECK
26        compiler:
27          - GCC
28          - CLANG
29    steps:
30    - uses: actions/checkout@v2
31    - name: install build dependencies
32      run: |
33        sudo apt-get update
34        sudo apt-get install clang-8 valgrind
35    - name: build and test
36      shell: bash
37      run: |
38          if [ "${{ matrix.mem_check }}" == "ENABLE_VALGRIND" ]; then
39            EVENT_CMAKE_OPTIONS="-DENABLE_CJSON_UTILS=ON -DENABLE_VALGRIND=ON -DENABLE_SAFE_STACK=ON -DENABLE_SANITIZERS=OFF"
40          elif [ "${{ matrix.mem_check }}" == "ENABLE_SANITIZERS" ]; then
41            EVENT_CMAKE_OPTIONS="-DENABLE_CJSON_UTILS=ON -DENABLE_VALGRIND=OFF -DENABLE_SAFE_STACK=OFF -DENABLE_SANITIZERS=ON"
42          else
43            EVENT_CMAKE_OPTIONS="-DENABLE_CJSON_UTILS=ON -DENABLE_VALGRIND=OFF -DENABLE_SAFE_STACK=OFF -DENABLE_SANITIZERS=OFF"
44          fi
45          if [ "${{ matrix.compiler }}" == "GCC" ]; then
46            export CC=gcc
47          else
48            export CC=clang
49          fi
50          #run build and test
51          JOBS=20
52          export CTEST_PARALLEL_LEVEL=$JOBS
53          export CTEST_OUTPUT_ON_FAILURE=1
54          mkdir -p build
55          cd build
56          echo [cmake]: cmake .. $EVENT_CMAKE_OPTIONS
57          cmake .. $EVENT_CMAKE_OPTIONS || (rm -rf * && cmake .. $EVENT_CMAKE_OPTIONS)
58          cmake --build .
59          make
60          make test
61
62  macos:
63    runs-on: macos-latest
64    if: "!contains(github.event.head_commit.message, 'ci skip')"
65    strategy:
66      fail-fast: false
67      matrix:
68        mem_check:
69          - ENABLE_VALGRIND
70          - ENABLE_SANITIZERS
71          - NONE_MEM_CHECK
72        compiler:
73          - GCC
74          - CLANG
75    steps:
76    - uses: actions/checkout@v2
77    - name: build and test
78      shell: bash
79      run: |
80          if [ "${{ matrix.mem_check }}" == "ENABLE_VALGRIND" ]; then
81            EVENT_CMAKE_OPTIONS="-DENABLE_CJSON_UTILS=ON -DENABLE_VALGRIND=ON -DENABLE_SAFE_STACK=ON -DENABLE_SANITIZERS=OFF"
82          elif [ "${{ matrix.mem_check }}" == "ENABLE_SANITIZERS" ]; then
83            EVENT_CMAKE_OPTIONS="-DENABLE_CJSON_UTILS=ON -DENABLE_VALGRIND=OFF -DENABLE_SAFE_STACK=OFF -DENABLE_SANITIZERS=ON"
84          else
85            EVENT_CMAKE_OPTIONS="-DENABLE_CJSON_UTILS=ON -DENABLE_VALGRIND=OFF -DENABLE_SAFE_STACK=OFF -DENABLE_SANITIZERS=OFF"
86          fi
87          if [ "${{ matrix.compiler }}" == "GCC" ]; then
88            export CC=gcc
89          else
90            export CC=clang
91          fi
92          #run build and test
93          JOBS=20
94          export CTEST_PARALLEL_LEVEL=$JOBS
95          export CTEST_OUTPUT_ON_FAILURE=1
96          mkdir -p build
97          cd build
98          echo [cmake]: cmake .. $EVENT_CMAKE_OPTIONS
99          cmake .. $EVENT_CMAKE_OPTIONS || (rm -rf * && cmake .. $EVENT_CMAKE_OPTIONS)
100          cmake --build .
101          make
102          make test
103