name: CI on: push: branches: [main] pull_request: branches: [main] jobs: build: name: Build firmware runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 with: submodules: recursive - name: Install toolchain run: | sudo apt-get update -q sudo apt-get install -y --no-install-recommends \ gcc-arm-none-eabi binutils-arm-none-eabi libnewlib-arm-none-eabi \ cmake ninja-build - name: Compile firmware run: cmake -B build -G Ninja -DCMAKE_BUILD_TYPE=MinSizeRel . && ninja -C build - name: Print size run: arm-none-eabi-size build/firmware format: name: Check formatting runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Install clang-format run: | sudo apt-get update -q sudo apt-get install -y --no-install-recommends clang-format - name: clang-format check run: | find src include -name '*.c' -o -name '*.h' | \ xargs clang-format --dry-run --Werror --style=file:.clang-format lint: name: Static analysis runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Install cppcheck run: | sudo apt-get update -q sudo apt-get install -y --no-install-recommends cppcheck - name: cppcheck run: | cppcheck --error-exitcode=1 \ --enable=warning,style,performance,portability \ --suppress=missingInclude \ --inline-suppr \ --std=c11 \ -I include \ src/ docs: name: Build documentation runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Install Doxygen run: | sudo apt-get update -q sudo apt-get install -y --no-install-recommends doxygen - name: Doxygen run: | doxygen Doxyfile 2>&1 | tee /tmp/doxy.log ! grep -q 'warning:' /tmp/doxy.log