-
Notifications
You must be signed in to change notification settings - Fork 1
166 lines (155 loc) · 6.33 KB
/
Copy pathesp-idf-build-check.yml
File metadata and controls
166 lines (155 loc) · 6.33 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
name: Build(esp-idf-native)
on:
push:
tags-ignore:
- '*.*.*'
- 'v*.*.*'
branches:
- '*'
paths:
- 'src/**.cpp'
- 'src/**.hpp'
- 'src/**.h'
- 'src/**.c'
- 'CMakeLists.txt'
- 'idf_component.yml'
- 'examples/UnitUnified/**.cpp'
- 'examples/UnitUnified/**.hpp'
- 'examples/UnitUnified/**.h'
- 'examples/UnitUnified/**.c'
- 'examples/UnitUnified/**/CMakeLists.txt'
- 'examples/UnitUnified/**/Kconfig.projbuild'
- 'examples/UnitUnified/common/**'
- '.github/workflows/esp-idf-build-check.yml'
pull_request:
paths:
- 'src/**.cpp'
- 'src/**.hpp'
- 'src/**.h'
- 'src/**.c'
- 'CMakeLists.txt'
- 'idf_component.yml'
- 'examples/UnitUnified/**.cpp'
- 'examples/UnitUnified/**.hpp'
- 'examples/UnitUnified/**.h'
- 'examples/UnitUnified/**.c'
- 'examples/UnitUnified/**/CMakeLists.txt'
- 'examples/UnitUnified/**/Kconfig.projbuild'
- 'examples/UnitUnified/common/**'
- '.github/workflows/esp-idf-build-check.yml'
workflow_dispatch:
defaults:
run:
shell: bash
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
# Cross design: variant coverage on esp32s3, chip coverage on the other SoCs with the default
# I2C variant (UnitRFID2). The M5Unit-RFID driver (WS1850S) is exercised by UnitRFID2 (GROVE I2C)
# and the M5Dial built-in WS1850S (In_I2C, ESP32-S3 only); UnitNFC / CapCC1101 select the
# ST25R3916 (M5Unit-NFC) path and are not built here. RFID has no Tab5-specific example, so
# esp32p4 (Tab5) is folded into chip coverage rather than a separate Tab5 job.
#
# UHF-RFID (JRD-4035, UART) is a separate protocol family from the I2C WS1850S/MFRC522 units above,
# with only one unit type (no Kconfig variant to select), so it does not fit the variant/chip jobs
# above and gets its own build-uhf job covering every supported SoC (incl. esp32s3, which the
# I2C jobs above do not cover for this family).
jobs:
# Variant coverage: RFID variants on esp32s3 (LCD-capable dual-core Xtensa with PSRAM; also the
# M5Dial host chip). M5Dial built-in (In_I2C) is ESP32-S3 only, so it lives here.
build-variants:
name: ${{ matrix.idf }} esp32s3 ${{ matrix.example_config.label }}
runs-on: ubuntu-latest
timeout-minutes: 30
strategy:
fail-fast: false
max-parallel: 20
matrix:
# idf boundaries: 5.1.7 = oldest legacy-driver (5.0.x dropped: M5GFX needs esp_mm added
# in 5.1), 5.4.4 = new driver/*_master.h + touch_sens.h era, 5.5.4 = latest.
idf: [v5.1.7, v5.4.4, v5.5.4]
# NFCA Detect gets UnitRFID2 (GROVE) and the M5Dial built-in WS1850S (In_I2C). NFCB Detect
# gets UnitRFID2 only (NFCB is not offered for the Dial built-in — small-antenna limit).
example_config:
- label: NFCA-Detect-UnitRFID2 (full)
example_path: examples/UnitUnified/NFCA/Detect
variant: USING_UNIT_RFID2
- label: NFCA-Detect-M5DialBuiltin (full)
example_path: examples/UnitUnified/NFCA/Detect
variant: USING_M5DIAL_BUILTIN_WS1850S
- label: NFCB-Detect-UnitRFID2 (no_dial)
example_path: examples/UnitUnified/NFCB/Detect
variant: USING_UNIT_RFID2
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Select Kconfig variant
# The example's own sdkconfig.defaults is not read (top CMakeLists points SDKCONFIG_DEFAULTS
# at common/sdkconfig.defaults). Append the choice to common/ in the CI workspace only.
run: |
echo "" >> examples/UnitUnified/common/sdkconfig.defaults
echo "CONFIG_EXAMPLE_${{ matrix.example_config.variant }}=y" >> examples/UnitUnified/common/sdkconfig.defaults
- name: ESP-IDF build
uses: espressif/esp-idf-ci-action@v1
with:
esp_idf_version: ${{ matrix.idf }}
target: esp32s3
path: ${{ matrix.example_config.example_path }}
# Chip coverage: NFCA Detect (UnitRFID2 / GROVE I2C) on every other supported SoC. esp32 = classic
# Xtensa dual-core (M5Unified touch-deprecation path). esp32c6 / esp32h2 = RISC-V single-core,
# exercises the app_main CONFIG_FREERTOS_UNICORE feedIdle branch. esp32p4 (M5Stack Tab5) =
# RISC-V dual-core; sdkconfig.defaults.esp32p4 overlay (chip-rev minimum keys) is auto-applied.
build-chips:
name: ${{ matrix.idf }} ${{ matrix.target }} NFCA-Detect-UnitRFID2
runs-on: ubuntu-latest
timeout-minutes: 30
strategy:
fail-fast: false
max-parallel: 20
matrix:
target: [esp32, esp32c6, esp32h2, esp32p4]
idf: [v5.1.7, v5.4.4, v5.5.4]
exclude:
# esp32p4 stable from IDF v5.3 (M5GFX P4 verified on 5.4/5.5). 5.1.7 not applicable.
- target: esp32p4
idf: v5.1.7
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Select Kconfig variant
run: |
echo "" >> examples/UnitUnified/common/sdkconfig.defaults
echo "CONFIG_EXAMPLE_USING_UNIT_RFID2=y" >> examples/UnitUnified/common/sdkconfig.defaults
- name: ESP-IDF build
uses: espressif/esp-idf-ci-action@v1
with:
esp_idf_version: ${{ matrix.idf }}
target: ${{ matrix.target }}
path: examples/UnitUnified/NFCA/Detect
# UHF coverage: Unit UHF-RFID (JRD-4035) is UART-based (addUART, PortC preferred / PortA
# fallback) and has no Kconfig variant (single unit type), so no "Select Kconfig variant" step
# is needed here. Built across every supported SoC (incl. esp32s3) to catch UART wiring
# differences per chip.
build-uhf:
name: ${{ matrix.idf }} ${{ matrix.target }} UHF-Detect
runs-on: ubuntu-latest
timeout-minutes: 30
strategy:
fail-fast: false
max-parallel: 20
matrix:
target: [esp32, esp32s3, esp32c6, esp32h2, esp32p4]
idf: [v5.1.7, v5.4.4, v5.5.4]
exclude:
# esp32p4 stable from IDF v5.3 (M5GFX P4 verified on 5.4/5.5). 5.1.7 not applicable.
- target: esp32p4
idf: v5.1.7
steps:
- name: Checkout
uses: actions/checkout@v4
- name: ESP-IDF build
uses: espressif/esp-idf-ci-action@v1
with:
esp_idf_version: ${{ matrix.idf }}
target: ${{ matrix.target }}
path: examples/UnitUnified/UHF/Detect