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