mirror of
https://github.com/daveallie/crosspoint-reader.git
synced 2026-02-05 15:17:37 +03:00
## Summary * Add CI check job to consolidate status ## Additional Context * As in the inline comment: > This job is used as the PR required actions check, allows for changes to other steps in the future without breaking PR requirements. --- ### AI Usage While CrossPoint doesn't have restrictions on AI tools in contributing, please be transparent about their usage as it helps set the right context for reviewers. Did you use AI tools to help write this code? No
110 lines
2.9 KiB
YAML
110 lines
2.9 KiB
YAML
name: CI (build)
|
|
|
|
on:
|
|
push:
|
|
branches: [master]
|
|
pull_request:
|
|
|
|
permissions:
|
|
contents: read
|
|
|
|
jobs:
|
|
clang-format:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v6
|
|
with:
|
|
submodules: recursive
|
|
|
|
- uses: actions/setup-python@v6
|
|
with:
|
|
python-version: '3.14'
|
|
|
|
- name: Install clang-format-21
|
|
run: |
|
|
wget https://apt.llvm.org/llvm.sh
|
|
chmod +x llvm.sh
|
|
sudo ./llvm.sh 21
|
|
sudo apt-get update
|
|
sudo apt-get install -y clang-format-21
|
|
|
|
- name: Run clang-format
|
|
run: |
|
|
PATH="/usr/lib/llvm-21/bin:$PATH" ./bin/clang-format-fix
|
|
git diff --exit-code || (echo "Please run 'bin/clang-format-fix' to fix formatting issues" && exit 1)
|
|
|
|
cppcheck:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v6
|
|
with:
|
|
submodules: recursive
|
|
|
|
- uses: actions/setup-python@v6
|
|
with:
|
|
python-version: '3.14'
|
|
|
|
- name: Install PlatformIO Core
|
|
run: pip install --upgrade platformio
|
|
|
|
- name: Run cppcheck
|
|
run: pio check --fail-on-defect low --fail-on-defect medium --fail-on-defect high
|
|
|
|
build:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v6
|
|
with:
|
|
submodules: recursive
|
|
|
|
- uses: actions/setup-python@v6
|
|
with:
|
|
python-version: '3.14'
|
|
|
|
- name: Install PlatformIO Core
|
|
run: pip install --upgrade platformio
|
|
|
|
- name: Build CrossPoint
|
|
run: |
|
|
set -euo pipefail
|
|
pio run | tee pio.log
|
|
|
|
- name: Extract firmware stats
|
|
|
|
run: |
|
|
set -euo pipefail
|
|
ram_line="$(grep -E "RAM:\\s" -m1 pio.log || true)"
|
|
flash_line="$(grep -E "Flash:\\s" -m1 pio.log || true)"
|
|
echo "ram_line=${ram_line}" >> "$GITHUB_OUTPUT"
|
|
echo "flash_line=${flash_line}" >> "$GITHUB_OUTPUT"
|
|
{
|
|
echo "## Firmware build stats"
|
|
if [ -n "$ram_line" ]; then echo "- ${ram_line}"; else echo "- RAM: not found"; fi
|
|
if [ -n "$flash_line" ]; then echo "- ${flash_line}"; else echo "- Flash: not found"; fi
|
|
} >> "$GITHUB_STEP_SUMMARY"
|
|
|
|
- name: Upload firmware.bin artifact
|
|
uses: actions/upload-artifact@v6
|
|
with:
|
|
name: firmware.bin
|
|
path: .pio/build/default/firmware.bin
|
|
if-no-files-found: error
|
|
|
|
# This job is used as the PR required actions check, allows for changes to other steps in the future without breaking
|
|
# PR requirements.
|
|
test-status:
|
|
name: Test Status
|
|
needs:
|
|
- build
|
|
- clang-format
|
|
- cppcheck
|
|
if: always()
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: Fail because needed jobs failed
|
|
# Fail if any job failed or was cancelled (skipped jobs are ok)
|
|
if: ${{ contains(needs.*.result, 'failure') || contains(needs.*.result, 'cancelled') }}
|
|
run: exit 1
|
|
- name: Success
|
|
run: exit 0
|