name: CI on: push: branches: [main] pull_request: branches: [main] env: IMAGE: ptt-builder jobs: build: name: Build firmware runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 with: submodules: recursive - name: Build container image run: docker build -t $IMAGE . - name: Compile firmware run: | docker run --rm \ --user "$(id -u):$(id -g)" \ -v "$PWD:/src" \ $IMAGE \ sh -c "cmake -B /src/build -G Ninja \ -DCMAKE_BUILD_TYPE=MinSizeRel /src \ && ninja -C /src/build" - name: Print size run: | docker run --rm \ -v "$PWD:/src" \ $IMAGE \ arm-none-eabi-size /src/build/firmware format: name: Check formatting runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Build container image run: docker build -t $IMAGE . - name: clang-format check run: | docker run --rm \ --user "$(id -u):$(id -g)" \ -v "$PWD:/src" \ $IMAGE \ sh -c "find /src/src /src/include -name '*.c' -o -name '*.h' | \ xargs clang-format --dry-run --Werror \ --style=file:/src/.clang-format" lint: name: Static analysis runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Build container image run: docker build -t $IMAGE . - name: cppcheck run: | docker run --rm \ --user "$(id -u):$(id -g)" \ -v "$PWD:/src" \ $IMAGE \ sh -c "cppcheck --error-exitcode=1 \ --enable=warning,style,performance,portability \ --suppress=missingInclude \ --inline-suppr \ --std=c11 \ -I /src/include \ /src/src/" docs: name: Build documentation runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Build container image run: docker build -t $IMAGE . - name: Doxygen run: | docker run --rm \ --user "$(id -u):$(id -g)" \ -v "$PWD:/src" \ $IMAGE \ sh -c "cd /src && doxygen Doxyfile 2>&1 | tee /tmp/doxy.log && \ ! grep -q 'warning:' /tmp/doxy.log"