Skip to content

Merge branch 'develop' #33

Merge branch 'develop'

Merge branch 'develop' #33

name: Build(platformio)
on:
push:
tags-ignore:
- '*.*.*'
- 'v*.*.*'
branches:
- '*'
paths:
- 'src/**.cpp'
- 'src/**.hpp'
- 'src/**.h'
- 'src/**.c'
- 'examples/UnitUnified/**.ino'
- 'examples/UnitUnified/**.cpp'
- 'examples/UnitUnified/**.hpp'
- 'examples/UnitUnified/**.h'
- 'examples/UnitUnified/**.c'
- '.github/workflows/platformio-build-check.yml'
- 'platformio.ini'
pull_request:
paths:
- 'src/**.cpp'
- 'src/**.hpp'
- 'src/**.h'
- 'src/**.c'
- 'examples/UnitUnified/**.ino'
- 'examples/UnitUnified/**.cpp'
- 'examples/UnitUnified/**.hpp'
- 'examples/UnitUnified/**.h'
- 'examples/UnitUnified/**.c'
- '.github/workflows/platformio-build-check.yml'
- 'platformio.ini'
workflow_dispatch:
defaults:
run:
shell: bash
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
build:
name: ${{ matrix.example }}@${{ matrix.board }}:${{ matrix.framework }}:${{ matrix.espressif32 }}
runs-on: ubuntu-latest
timeout-minutes: 12
strategy:
fail-fast: false
max-parallel: 20
matrix:
# Cross design (skill m5-build-ci-matrix §3): the board axis is carried by one
# representative per distinct code path. NFCA (WS1850S over I2C, addI2C) and UHF
# (JRD4035 over UART, addUART) are different units on different transports, so both
# stay on the board axis. NFCB is the same unit, bus and wiring helper as NFCA, so
# one build on the representative board is enough to prove its stack compiles.
example:
- NFCA_Detect
# - NFCB_Detect # via include (Core only): same unit/bus/wiring as NFCA
- UHF_Detect
# Build CI board axis = distinct compile config only (skill m5-build-ci-matrix).
# I2C path is a runtime M5.getBoard() branch (same compile for all boards), so
# only one board per compile config is kept; variant-header siblings are commented out.
board:
- Core # espressif32 x ESP32 (xtensa-esp32)
- CoreS3 # espressif32 x ESP32-S3 (xtensa-esp32s3, separate GCC target)
- NanoC6 # pioarduino x ESP32-C6 (rv32)
- NanoH2 # pioarduino x ESP32-H2 (H2 image target / f_flash16M)
- Tab5 # pioarduino x ESP32-P4 (rv32 single-float / 16MB partition)
# - Core2 # ESP32: represented by Core
# - Fire # ESP32: represented by Core
# - StampS3 # ESP32-S3: represented by CoreS3
# - Dial # ESP32-S3: represented by CoreS3
# - Atom # ESP32: represented by Core
# - AtomS3 # ESP32-S3: represented by CoreS3
# - AtomS3R # ESP32-S3: represented by CoreS3
# - StickCPlus # ESP32: represented by Core
# - StickCPlus2 # ESP32: represented by Core
# - StickS3 # ESP32-S3: represented by CoreS3
# - Paper # ESP32: represented by Core
# - CoreInk # ESP32: represented by Core
# - Cardputer # ESP32-S3: represented by CoreS3
# - NessoN1 # ESP32-C6: represented by NanoC6
framework:
- Arduino
espressif32:
- latest
include:
# Detect (NFCB, Core only) - moved off the board axis above
- example: NFCB_Detect
board: Core
framework: Arduino
espressif32: latest
# NFCA Specific sketches (Core only)
- example: NFCA_Dump
board: Core
framework: Arduino
espressif32: latest
- example: NFCA_ValueBlock
board: Core
framework: Arduino
espressif32: latest
- example: NFCA_ReadWrite
board: Core
framework: Arduino
espressif32: latest
- example: NFCA_NDEF
board: Core
framework: Arduino
espressif32: latest
- example: NFCA_PolicyOverride
board: Core
framework: Arduino
espressif32: latest
# NFCA Detect on M5Dial with builtin WS1850S
- example: NFCA_Detect
board: Dial_Builtin
framework: Arduino
espressif32: latest
# NFCB JapanIDCard (Core only)
- example: NFCB_JapanIDCard
board: Core
framework: Arduino
espressif32: latest
# UHF sketches other than Detect (Core only). Detect carries the board axis above,
# which is what covers the other compile configurations for this family
- example: UHF_Dump
board: Core
framework: Arduino
espressif32: latest
- example: UHF_ReadWrite
board: Core
framework: Arduino
espressif32: latest
- example: UHF_ReaderSettings
board: Core
framework: Arduino
espressif32: latest
- example: UHF_Lock
board: Core
framework: Arduino
espressif32: latest
- example: UHF_Kill
board: Core
framework: Arduino
espressif32: latest
- example: UHF_WriteEPC
board: Core
framework: Arduino
espressif32: latest
- example: UHF_SleepIdle
board: Core
framework: Arduino
espressif32: latest
- example: UHF_MonzaQT
board: Core
framework: Arduino
espressif32: latest
- example: UHF_PermanentLock
board: Core
framework: Arduino
espressif32: latest
- example: UHF_NxpG2X
board: Core
framework: Arduino
espressif32: latest
- example: UHF_NxpReadProtect
board: Core
framework: Arduino
espressif32: latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: '3.10'
- name: Install intelhex
run: pip install intelhex
- name: Build examples
uses: karniv00l/platformio-run-action@v1
with:
environments: ${{ format('{0}_{1}_{2}_{3}', matrix.example, matrix.board, matrix.framework, matrix.espressif32) }}
project-dir: "./"
project-conf: "./platformio.ini"