1name: CI Checks
2
3on:
4  push:
5    branches: ["**"]
6  pull_request:
7    branches: [main]
8  workflow_dispatch:
9
10jobs:
11  unittest:
12    runs-on: ubuntu-latest
13    steps:
14      - name: Clone This Repo
15        uses: actions/checkout@v2
16        with:
17          submodules: recursive
18      - name: Build
19        run: |
20          sudo apt-get install -y lcov
21          cmake -S test -B build/ \
22          -G "Unix Makefiles" \
23          -DCMAKE_BUILD_TYPE=Debug \
24          -DBUILD_CLONE_SUBMODULES=ON \
25          -DCMAKE_C_FLAGS='--coverage -Wall -Wextra -Werror -DNDEBUG -DLIBRARY_LOG_LEVEL=LOG_DEBUG'
26          make -C build/ all
27      - name: Test
28        run: |
29          cd build/
30          ctest -E system --output-on-failure
31          cd ..
32      - name: Run Coverage
33        run: |
34          make -C build/ coverage
35          declare -a EXCLUDE=("\*test\*" "\*CMakeCCompilerId\*" "\*mocks\*" "\*dependency\*")
36          echo ${EXCLUDE[@]} | xargs lcov --rc lcov_branch_coverage=1 -r build/coverage.info -o build/coverage.info
37          lcov --rc lcov_branch_coverage=1 --list build/coverage.info
38      - name: Check Coverage
39        uses: FreeRTOS/CI-CD-Github-Actions/coverage-cop@main
40        with:
41          path: ./build/coverage.info
42  complexity:
43    runs-on: ubuntu-latest
44    steps:
45      - uses: actions/checkout@v2
46      - name: Check complexity
47        uses: FreeRTOS/CI-CD-Github-Actions/complexity@main
48        with:
49          path: ./
50  doxygen:
51    runs-on: ubuntu-latest
52    steps:
53      - uses: actions/checkout@v2
54      - name: Download MQTT tag
55        run: |
56          # We don't need to generate the coreMQTT docs, we only need the tag file. We can just download it.
57          mkdir -p source/dependency/coreMQTT/docs/doxygen/output
58          wget -O source/dependency/coreMQTT/docs/doxygen/output/mqtt.tag \
59          "https://freertos.org/Documentation/api-ref/coreMQTT/docs/doxygen/output/mqtt.tag"
60      - name: Run doxygen build
61        uses: FreeRTOS/CI-CD-Github-Actions/doxygen@main
62        with:
63          path: ./
64  spell-check:
65    runs-on: ubuntu-latest
66    steps:
67      - name: Clone This Repo
68        uses: actions/checkout@v2
69      - name: Run spellings check
70        uses: FreeRTOS/CI-CD-Github-Actions/spellings@main
71        with:
72          path: ./
73  formatting:
74    runs-on: ubuntu-latest
75    steps:
76      - uses: actions/checkout@v2
77      - name: Check formatting
78        uses: FreeRTOS/CI-CD-Github-Actions/formatting@main
79        with:
80          path: ./
81  git-secrets:
82    runs-on: ubuntu-latest
83    steps:
84      - uses: actions/checkout@v2
85      - name: Checkout awslabs/git-secrets
86        uses: actions/checkout@v2
87        with:
88          repository: awslabs/git-secrets
89          ref: master
90          path: git-secrets
91      - name: Install git-secrets
92        run: cd git-secrets && sudo make install && cd ..
93      - name: Run git-secrets
94        run: |
95          git-secrets --register-aws
96          git-secrets --scan
97  memory_statistics:
98    runs-on: ubuntu-latest
99    steps:
100      - uses: actions/checkout@v2
101        with:
102            submodules: 'recursive'
103      - name: Measure sizes
104        uses: FreeRTOS/CI-CD-Github-Actions/memory_statistics@main
105        with:
106            config: .github/memory_statistics_config.json
107            check_against: docs/doxygen/include/size_table.md
108