fix: redraw carousel header after restoring cached frames #257
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: CI (build) | |
| on: | |
| push: | |
| branches: [main] | |
| 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: true | |
| - name: Cache PlatformIO packages | |
| uses: actions/cache@v4 | |
| with: | |
| path: ~/.platformio | |
| key: ${{ runner.os }}-platformio-${{ hashFiles('platformio.ini', 'platformio.local.example.ini') }} | |
| restore-keys: | | |
| ${{ runner.os }}-platformio- | |
| - 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: | |
| # Never run untrusted fork PR code on the self-hosted runner. | |
| if: github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == github.repository | |
| runs-on: [self-hosted, linux, crossink-build] | |
| steps: | |
| - uses: actions/checkout@v6 | |
| with: | |
| submodules: recursive | |
| - name: Verify PlatformIO Core | |
| run: pio --version | |
| - name: Build CrossInk tiny | |
| run: | | |
| set -euo pipefail | |
| pio run -e tiny | tee pio.log | |
| - name: Extract firmware stats | |
| run: | | |
| set -euo pipefail | |
| { | |
| echo "## Firmware build stats" | |
| grep -E "RAM:\s|Flash:\s" pio.log | while read -r line; do echo "- ${line}"; done | |
| } >> "$GITHUB_STEP_SUMMARY" | |
| - name: Upload firmware artifacts | |
| uses: actions/upload-artifact@v7 | |
| with: | |
| name: firmware-tiny | |
| path: | | |
| .pio/build/tiny/firmware-tiny.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 |