| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195 |
- name: "CI Checks"
- env:
- bashPass: \033[32;1mPASSED -
- bashInfo: \033[33;1mINFO -
- bashFail: \033[31;1mFAILED -
- bashEnd: \033[0m
- on:
- push:
- branches: ["**"]
- pull_request:
- branches: [main]
- workflow_dispatch:
- jobs:
- unittest:
- runs-on: ubuntu-latest
- steps:
- - name: Clone This Repo
- uses: actions/checkout@v3
- - env:
- stepName: Build CoreMQTT
- run: |
- # ${{ env.stepName }}
- echo -e "::group::${{ env.bashInfo }} ${{ env.stepName }} ${{ env.bashEnd }}"
- sudo apt-get install -y lcov
- cmake -S test -B build/ \
- -G "Unix Makefiles" \
- -DCMAKE_BUILD_TYPE=Debug \
- -DBUILD_CLONE_SUBMODULES=ON \
- -DCMAKE_C_FLAGS='--coverage -Wall -Wextra -Werror -DNDEBUG -DLIBRARY_LOG_LEVEL=LOG_DEBUG'
- make -C build/ all
- echo "::endgroup::"
- echo -e "${{ env.bashPass }} ${{env.stepName}} ${{ env.bashEnd }}"
- - name: Run System Tests
- run: ctest --test-dir build -E system --output-on-failure
- - env:
- stepName: Line and Branch Coverage Build
- run: |
- # ${{ env.stepName }}
- echo -e "::group::${{ env.bashInfo }} Build Coverage Target ${{ env.bashEnd }}"
- # Build the coverage target
- make -C build/ coverage
- echo -e "::group::${{ env.bashInfo }} Generate Coverage Report ${{ env.bashEnd }}"
- # Generate coverage report, excluding extra directories
- lcov --rc lcov_branch_coverage=1 -r build/coverage.info -o build/coverage.info '*test*' '*CMakeCCompilerId*' '*mocks*'
- echo "::endgroup::"
- lcov --rc lcov_branch_coverage=1 --list build/coverage.info
- echo -e "${{ env.bashPass }} ${{env.stepName}} ${{ env.bashEnd }}"
- - name: Check Coverage
- uses: FreeRTOS/CI-CD-Github-Actions/coverage-cop@main
- with:
- coverage-file: ./build/coverage.info
- complexity:
- runs-on: ubuntu-latest
- steps:
- - uses: actions/checkout@v3
- - name: Check complexity
- uses: FreeRTOS/CI-CD-Github-Actions/complexity@main
- with:
- path: ./
- horrid_threshold: 12
- doxygen:
- runs-on: ubuntu-latest
- steps:
- - uses: actions/checkout@v3
- - name: Run doxygen build
- uses: FreeRTOS/CI-CD-Github-Actions/doxygen@main
- with:
- path: ./
- spell-check:
- runs-on: ubuntu-latest
- steps:
- - name: Clone This Repo
- uses: actions/checkout@v3
- - name: Run spellings check
- uses: FreeRTOS/CI-CD-Github-Actions/spellings@main
- with:
- path: ./
- formatting:
- runs-on: ubuntu-20.04
- steps:
- - uses: actions/checkout@v3
- - name: Check formatting
- uses: FreeRTOS/CI-CD-Github-Actions/formatting@main
- with:
- path: ./
- git-secrets:
- runs-on: ubuntu-latest
- steps:
- - uses: actions/checkout@v3
- - name: Checkout awslabs/git-secrets
- uses: actions/checkout@v3
- with:
- repository: awslabs/git-secrets
- ref: master
- path: git-secrets
- - name: Install git-secrets
- run: cd git-secrets && sudo make install && cd ..
- - name: Run git-secrets
- run: |
- git-secrets --register-aws
- git-secrets --scan
- custom-standard-c-headers:
- runs-on: ubuntu-latest
- steps:
- - name: Clone This Repo
- uses: actions/checkout@v3
- - env:
- stepName: Build With Custom Headers
- run: |
- # ${{ env.stepName }}
- echo -e "::group::${{ env.bashInfo }} ${{ env.stepName }} ${{ env.bashEnd }}"
- # Copy the custom headers into the build directory
- mkdir -p override-include
- cp source/include/stdbool.readme override-include/stdbool.h
- cp source/include/stdint.readme override-include/stdint.h
- # Build using the custom headers
- cmake -S test -B build/ \
- -G "Unix Makefiles" \
- -DBUILD_CLONE_SUBMODULES=ON \
- -DCMAKE_C_FLAGS='-Wall -Wextra -I../override-include'
- make -C build/ coverity_analysis
- echo "::endgroup::"
- echo -e "${{ env.bashPass }} ${{ env.stepName }} ${{ env.bashEnd }}"
- memory_statistics:
- runs-on: ubuntu-latest
- steps:
- - uses: actions/checkout@v3
- with:
- submodules: 'recursive'
- - name: Install Python3
- uses: actions/setup-python@v3
- with:
- python-version: '3.11.0'
- - name: Measure sizes
- uses: FreeRTOS/CI-CD-Github-Actions/memory_statistics@main
- with:
- config: .github/memory_statistics_config.json
- check_against: docs/doxygen/include/size_table.md
- link-verifier:
- runs-on: ubuntu-latest
- steps:
- - uses: actions/checkout@v3
- - name: Check Links
- env:
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- uses: FreeRTOS/CI-CD-Github-Actions/link-verifier@main
- with:
- path: ./
- verify-manifest:
- runs-on: ubuntu-latest
- steps:
- - uses: actions/checkout@v3
- with:
- submodules: true
- fetch-depth: 0
- - name: Run manifest verifier
- uses: FreeRTOS/CI-CD-GitHub-Actions/manifest-verifier@main
- with:
- path: ./
- fail-on-incorrect-version: true
- proof_ci:
- if: ${{ github.event.pull_request }}
- runs-on: cbmc_ubuntu-latest_64-core
- steps:
- - name: Set up CBMC runner
- uses: FreeRTOS/CI-CD-Github-Actions/set_up_cbmc_runner@main
- - name: Run CBMC
- uses: FreeRTOS/CI-CD-Github-Actions/run_cbmc@main
- with:
- proofs_dir: test/cbmc/proofs
|