Skip to content

fix: guard bambu_parse against unread blocks (#7) #27

fix: guard bambu_parse against unread blocks (#7)

fix: guard bambu_parse against unread blocks (#7) #27

Workflow file for this run

name: CI
on:
push:
branches: [main, master, 'epic/**']
pull_request:
branches: [main, master, 'epic/**']
workflow_dispatch:
jobs:
test:
name: Parser Tests
runs-on: ubuntu-latest
timeout-minutes: 5
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Run parser validation tests
run: make test
build-ufbt:
name: Build Plugin (ufbt)
runs-on: ubuntu-latest
timeout-minutes: 15
needs: test # Only build if tests pass
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Build Bambu parser plugin with ufbt
id: build
# Pinned to the commit v0.1.4 points at: this action downloads and runs
# an SDK toolchain, so a mutable tag would be an unreviewed code path.
uses: flipperdevices/flipperzero-ufbt-action@e7cd34914e61ddc056acd8daaab96d8b4d4d9f55 # v0.1.4
with:
# Deliberately floating. Pinning an SDK version would hide firmware API
# breakage until a manual bump; on `release` this job goes red instead.
# What a red job means is "the SDK moved and broke the build" — i.e.
# API-table breakage. It is a prompt to re-diff
# plugin/nfc_supported_card_plugin.h against upstream, not a detector of
# drift inside it: as that header explains, NfcSupportedCardsPlugin is
# exported rather than imported, so a struct layout change compiles
# clean, passes APPCHK and leaves this job green. Nothing catches that
# automatically.
sdk-channel: release
- name: Upload plugin artifact
uses: actions/upload-artifact@v4
with:
name: bambu_parser-ufbt
path: ${{ steps.build.outputs.fap-dir }}/bambu_parser.fal
retention-days: 30
build:
name: Build Plugin (fbt)
runs-on: ubuntu-latest
timeout-minutes: 45
needs: test # Only build if tests pass
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Checkout flipperzero-firmware submodule
run: |
git submodule update --init flipperzero-firmware
cd flipperzero-firmware
git submodule update --init --depth 1
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: '3.11'
- name: Cache Flipper toolchain
uses: actions/cache@v4
with:
path: flipperzero-firmware/toolchain
key: flipper-toolchain-${{ runner.os }}-v2
restore-keys: |
flipper-toolchain-${{ runner.os }}-
- name: Build Bambu parser plugin
env:
FBT_NO_SYNC: 1
FBT_GIT_SUBMODULE_SHALLOW: 1
run: make build
- name: Upload plugin artifact
uses: actions/upload-artifact@v4
with:
name: bambu_parser
path: dist/bambu_parser.fal
retention-days: 30
manifest-agreement:
name: Manifest Agreement
runs-on: ubuntu-latest
timeout-minutes: 5
needs: [build, build-ufbt]
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Download fbt artifact
uses: actions/download-artifact@v4
with:
name: bambu_parser
path: artifacts/fbt
- name: Download ufbt artifact
uses: actions/download-artifact@v4
with:
name: bambu_parser-ufbt
path: artifacts/ufbt
# The app is declared twice — in the root application.fam for ufbt, and in
# the App() block `make copy-plugin` appends for fbt. Nothing else compares
# them, so a one-sided edit would ship divergent metadata with CI green.
- name: Compare shipped app metadata from both build paths
run: |
python3 .github/scripts/compare_fapmeta.py \
artifacts/fbt/bambu_parser.fal \
artifacts/ufbt/bambu_parser.fal