Something went wrong. Try again.
A fork of https://github.com/crosspoint-reader/crosspoint-reader
Something went wrong. Try again.
3.4 kB · 121 lines
YAML
at master
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122name: 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 uv uses: astral-sh/setup-uv@v7 with: version: "latest" enable-cache: false
- name: Install PlatformIO Core run: uv pip install --system -U https://github.com/pioarduino/platformio-core/archive/refs/tags/v6.1.19.zip
- 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 uv uses: astral-sh/setup-uv@v7 with: version: "latest" enable-cache: false
- name: Install PlatformIO Core run: uv pip install --system -U https://github.com/pioarduino/platformio-core/archive/refs/tags/v6.1.19.zip
- 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