## Summary * **What is the goal of this PR?** speed increase gh workflows, optimized for pioarduino Platform * **What changes are included?** remove pip and pip cache install and use `uv` use pioarduino core instead of Platformio core for optimal performance with pioarduino Platform ## Additional Context - signed off by the maintainer of pioarduino --- ### 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? _**< YES | PARTIALLY | NO >**_NO
122 lines
3.3 KiB
YAML
122 lines
3.3 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 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
|