Skip to content

Commit b15b123

Browse files
committed
tools/ci.sh: Update CI strategy.
Signed-off-by: lbuque <[email protected]>
1 parent fc0a29f commit b15b123

File tree

2 files changed

+252
-7
lines changed

2 files changed

+252
-7
lines changed

.gitlab-ci.yml

Lines changed: 188 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,13 @@ cache:
1010

1111
stages:
1212
- code_format
13-
- build_quick
13+
- build_uint
14+
- build_module
15+
- build_base
16+
- build_hat
17+
- build_cmodule
18+
- build_third_party
19+
- build_board
1420
- docs
1521
- build
1622
- release
@@ -29,18 +35,21 @@ code-format:
2935
- uiflow-firmware
3036
only:
3137
changes:
38+
- ".gitlab-ci.yml"
3239
- "m5stack/**"
3340
- "examples/**"
3441
- "tests/**"
3542
- "third-party/**"
43+
- "tools/ci.sh"
3644

37-
build-quick-job:
38-
stage: build_quick
45+
46+
build-uint-and-common-job:
47+
stage: build_uint
3948
script:
4049
- sudo apt-get update -qy
4150
- sudo apt-get install git wget flex bison gperf quilt python3 python3-pip python3-venv cmake ninja-build ccache libffi-dev libssl-dev dfu-util libusb-1.0-0 -y
4251
- source tools/ci.sh && ci_esp32_idf541_setup
43-
- source tools/ci.sh && ci_esp32_quick_build
52+
- source tools/ci.sh && ci_unit_build
4453
artifacts:
4554
paths:
4655
- m5stack/build-*/uiflow-*-*.bin
@@ -49,11 +58,185 @@ build-quick-job:
4958
- uiflow-firmware
5059
only:
5160
changes:
52-
- "m5stack/**"
61+
- "m5stack/libs/driver/**"
62+
- "m5stack/libs/unit/**"
63+
- "m5stack/libs/bleuart/**"
64+
- "m5stack/libs/ezdata/**"
65+
- "m5stack/libs/hardware/**"
66+
- "m5stack/libs/image_plus/**"
67+
- "m5stack/libs/m5espnow/**"
68+
- "m5stack/libs/modbus/**"
69+
- "m5stack/libs/requests2/**"
70+
- "m5stack/libs/umqtt/**"
71+
- "m5stack/libs/usb/**"
72+
- "m5stack/libs/utility/**"
73+
- "m5stack/libs/*.py"
74+
75+
76+
build-module-job:
77+
stage: build_module
78+
script:
79+
- sudo apt-get update -qy
80+
- sudo apt-get install git wget flex bison gperf quilt python3 python3-pip python3-venv cmake ninja-build ccache libffi-dev libssl-dev dfu-util libusb-1.0-0 -y
81+
- source tools/ci.sh && ci_esp32_idf541_setup
82+
- source tools/ci.sh && ci_module_build
83+
artifacts:
84+
paths:
85+
- m5stack/build-*/uiflow-*-*.bin
86+
- third-party/build-*/uiflow-*-*.bin
87+
tags:
88+
- uiflow-firmware
89+
only:
90+
changes:
91+
- "m5stack/libs/driver/**"
92+
- "m5stack/libs/unit/**"
93+
- "m5stack/libs/module/**"
94+
95+
96+
build-base-job:
97+
stage: build_base
98+
script:
99+
- sudo apt-get update -qy
100+
- sudo apt-get install git wget flex bison gperf quilt python3 python3-pip python3-venv cmake ninja-build ccache libffi-dev libssl-dev dfu-util libusb-1.0-0 -y
101+
- source tools/ci.sh && ci_esp32_idf541_setup
102+
- source tools/ci.sh && ci_base_build
103+
artifacts:
104+
paths:
105+
- m5stack/build-*/uiflow-*-*.bin
106+
- third-party/build-*/uiflow-*-*.bin
107+
tags:
108+
- uiflow-firmware
109+
only:
110+
changes:
111+
- "m5stack/libs/driver/**"
112+
- "m5stack/libs/unit/**"
113+
- "m5stack/libs/base/**"
114+
115+
116+
build-hat-job:
117+
stage: build_hat
118+
script:
119+
- sudo apt-get update -qy
120+
- sudo apt-get install git wget flex bison gperf quilt python3 python3-pip python3-venv cmake ninja-build ccache libffi-dev libssl-dev dfu-util libusb-1.0-0 -y
121+
- source tools/ci.sh && ci_esp32_idf541_setup
122+
- source tools/ci.sh && ci_hat_build
123+
artifacts:
124+
paths:
125+
- m5stack/build-*/uiflow-*-*.bin
126+
- third-party/build-*/uiflow-*-*.bin
127+
tags:
128+
- uiflow-firmware
129+
only:
130+
changes:
131+
- "m5stack/libs/driver/**"
132+
- "m5stack/libs/unit/**"
133+
- "m5stack/libs/hat/**"
134+
135+
136+
build-cmodule-job:
137+
stage: build_cmodule
138+
script:
139+
- sudo apt-get update -qy
140+
- sudo apt-get install git wget flex bison gperf quilt python3 python3-pip python3-venv cmake ninja-build ccache libffi-dev libssl-dev dfu-util libusb-1.0-0 -y
141+
- source tools/ci.sh && ci_esp32_idf541_setup
142+
- source tools/ci.sh && ci_esp32_nightly_build
143+
artifacts:
144+
paths:
145+
- m5stack/build-*/uiflow-*-*.bin
146+
- third-party/build-*/uiflow-*-*.bin
147+
tags:
148+
- uiflow-firmware
149+
only:
150+
changes:
151+
- ".gitlab-ci.yml"
152+
- "esp-adf/**"
153+
- "m5stack/boards/include/**"
154+
- "m5stack/boards/*.txt"
155+
- "m5stack/boards/Kconfig"
156+
- "m5stack/boards/*.py"
157+
- "m5stack/boards/sdkconfig.*"
158+
- "m5stack/cmodule/**"
159+
- "m5stack/components/**"
160+
- "m5stack/fs/**"
161+
- "m5stack/include/**"
162+
- "m5stack/main/**"
163+
- "m5stack/*.c"
164+
- "m5stack/*.cpp"
165+
- "m5stack/*.h"
166+
- "m5stack/*.cmake"
167+
- "m5stack/*.csv"
168+
- "m5stack/*.txt"
53169
- "tools/**"
170+
171+
build-third-party-job:
172+
stage: build_third_party
173+
script:
174+
- sudo apt-get update -qy
175+
- sudo apt-get install git wget flex bison gperf quilt python3 python3-pip python3-venv cmake ninja-build ccache libffi-dev libssl-dev dfu-util libusb-1.0-0 -y
176+
- source tools/ci.sh && ci_esp32_idf541_setup
177+
- source tools/ci.sh && ci_esp32_nightly_build
178+
artifacts:
179+
paths:
180+
- m5stack/build-*/uiflow-*-*.bin
181+
- third-party/build-*/uiflow-*-*.bin
182+
tags:
183+
- uiflow-firmware
184+
only:
185+
changes:
54186
- "third-party/**"
55187

56188

189+
.def_job_template: &def_job_template
190+
stage: build_board
191+
script:
192+
- sudo apt-get update -qy
193+
- sudo apt-get install git wget flex bison gperf quilt python3 python3-pip python3-venv cmake ninja-build ccache libffi-dev libssl-dev dfu-util libusb-1.0-0 -y
194+
- source tools/ci.sh && ci_esp32_idf541_setup
195+
- source tools/ci.sh && source esp-idf/export.sh && pip install future && make -C m5stack submodules && make -C m5stack patch && make -C m5stack littlefs && make -C m5stack mpy-cross && make -C m5stack BOARD=${BOARD} pack_all
196+
only:
197+
changes:
198+
- "m5stack/${BOARD}/*"
199+
200+
201+
boards_jobs:
202+
parallel:
203+
matrix:
204+
- BOARD: [
205+
"M5STACK_AirQ",
206+
"M5STACK_Atom_Echo",
207+
"M5STACK_Atom_Lite",
208+
"M5STACK_Atom_Matrix",
209+
"M5STACK_AtomS3",
210+
"M5STACK_AtomS3_Lite",
211+
"M5STACK_AtomS3R",
212+
"M5STACK_AtomS3R_CAM",
213+
"M5STACK_AtomS3U",
214+
"M5STACK_AtomU",
215+
"M5STACK_Basic",
216+
"M5STACK_Capsule",
217+
"M5STACK_Cardputer",
218+
"M5STACK_Core2",
219+
"M5STACK_CoreInk",
220+
"M5STACK_CoreS3",
221+
"M5STACK_Dial",
222+
"M5STACK_DinMeter",
223+
"M5STACK_Fire",
224+
"M5STACK_NanoC6",
225+
"M5STACK_Paper",
226+
"M5STACK_PaperS3",
227+
"M5STACK_StamPLC",
228+
"M5STACK_Stamp_PICO",
229+
"M5STACK_StampS3",
230+
"M5STACK_Station",
231+
"M5STACK_StickC",
232+
"M5STACK_StickC_PLUS",
233+
"M5STACK_StickC_PLUS2",
234+
"M5STACK_Tab5",
235+
"M5STACK_Tough"
236+
]
237+
extends: .def_job_template
238+
239+
57240
build-job:
58241
stage: build
59242
script:

tools/ci.sh

Lines changed: 64 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,8 @@ function ci_code_formatting_setup {
3232

3333
function ci_code_formatting_run {
3434
source .venv/bin/activate
35-
tools/codeformat.py -v
35+
tools/codeformat.py -v -c -f
36+
deactivate
3637
}
3738

3839
########################################################################################
@@ -163,7 +164,7 @@ function ci_esp32_idf522_setup {
163164
function ci_esp32_idf541_setup {
164165
if [ -d esp-idf ]; then
165166
echo "esp-idf is already cloned."
166-
if [ "$(git -C esp-idf rev-parse --abbrev-ref HEAD)" == "v5.4.1" ]; then
167+
if [ "$(git -C esp-idf describe --tags)" == "v5.4.1" ]; then
167168
echo "esp-idf is on v5.4.1 branch."
168169
return 0
169170
else
@@ -233,6 +234,66 @@ function ci_esp32_quick_build {
233234
make ${MAKEOPTS} -C third-party BOARD=SEEED_STUDIO_XIAO_ESP32S3 pack_all
234235
}
235236

237+
function ci_unit_build {
238+
source esp-idf/export.sh
239+
pip install future
240+
make ${MAKEOPTS} -C m5stack unpatch
241+
make ${MAKEOPTS} -C m5stack submodules
242+
make ${MAKEOPTS} -C m5stack patch
243+
make ${MAKEOPTS} -C m5stack littlefs
244+
make ${MAKEOPTS} -C m5stack mpy-cross
245+
make ${MAKEOPTS} -C m5stack BOARD=M5STACK_Basic_4MB pack_all
246+
make ${MAKEOPTS} -C m5stack BOARD=M5STACK_CoreS3 pack_all
247+
make ${MAKEOPTS} -C m5stack BOARD=M5STACK_NanoC6 pack_all
248+
make ${MAKEOPTS} -C m5stack BOARD=M5STACK_Tab5 pack_all
249+
make ${MAKEOPTS} -C third-party BOARD=ESPRESSIF_ESP32_S3_BOX_3 pack_all
250+
}
251+
252+
function ci_module_build {
253+
source esp-idf/export.sh
254+
pip install future
255+
make ${MAKEOPTS} -C m5stack unpatch
256+
make ${MAKEOPTS} -C m5stack submodules
257+
make ${MAKEOPTS} -C m5stack patch
258+
make ${MAKEOPTS} -C m5stack littlefs
259+
make ${MAKEOPTS} -C m5stack mpy-cross
260+
make ${MAKEOPTS} -C m5stack BOARD=M5STACK_Basic_4MB pack_all
261+
make ${MAKEOPTS} -C m5stack BOARD=M5STACK_Fire pack_all
262+
make ${MAKEOPTS} -C m5stack BOARD=M5STACK_Core2 pack_all
263+
make ${MAKEOPTS} -C m5stack BOARD=M5STACK_Tough pack_all
264+
make ${MAKEOPTS} -C m5stack BOARD=M5STACK_CoreS3 pack_all
265+
make ${MAKEOPTS} -C m5stack BOARD=M5STACK_Tab5 pack_all
266+
make ${MAKEOPTS} -C third-party BOARD=ESPRESSIF_ESP32_S3_BOX_3 pack_all
267+
}
268+
269+
270+
function ci_base_build {
271+
source esp-idf/export.sh
272+
pip install future
273+
make ${MAKEOPTS} -C m5stack unpatch
274+
make ${MAKEOPTS} -C m5stack submodules
275+
make ${MAKEOPTS} -C m5stack patch
276+
make ${MAKEOPTS} -C m5stack littlefs
277+
make ${MAKEOPTS} -C m5stack mpy-cross
278+
make ${MAKEOPTS} -C m5stack BOARD=M5STACK_Atom_Lite pack_all
279+
make ${MAKEOPTS} -C m5stack BOARD=M5STACK_AtomS3 pack_all
280+
make ${MAKEOPTS} -C third-party BOARD=ESPRESSIF_ESP32_S3_BOX_3 pack_all
281+
}
282+
283+
function ci_hat_build {
284+
source esp-idf/export.sh
285+
pip install future
286+
make ${MAKEOPTS} -C m5stack unpatch
287+
make ${MAKEOPTS} -C m5stack submodules
288+
make ${MAKEOPTS} -C m5stack patch
289+
make ${MAKEOPTS} -C m5stack littlefs
290+
make ${MAKEOPTS} -C m5stack mpy-cross
291+
make ${MAKEOPTS} -C m5stack BOARD=M5STACK_StickC pack_all
292+
make ${MAKEOPTS} -C m5stack BOARD=M5STACK_StickC_PLUS2 pack_all
293+
make ${MAKEOPTS} -C third-party BOARD=ESPRESSIF_ESP32_S3_BOX_3 pack_all
294+
}
295+
296+
236297
function ci_esp32_nightly_build {
237298
source esp-idf/export.sh
238299
pip install future
@@ -271,6 +332,7 @@ function ci_esp32_nightly_build {
271332
make ${MAKEOPTS} -C m5stack BOARD=M5STACK_StickC pack_all
272333
make ${MAKEOPTS} -C m5stack BOARD=M5STACK_StickC_PLUS pack_all
273334
make ${MAKEOPTS} -C m5stack BOARD=M5STACK_StickC_PLUS2 pack_all
335+
make ${MAKEOPTS} -C m5stack BOARD=M5STACK_Tab5 pack_all
274336
make ${MAKEOPTS} -C m5stack BOARD=M5STACK_Tough pack_all
275337
make ${MAKEOPTS} -C third-party BOARD=ESPRESSIF_ESP32_S3_BOX_3 pack_all
276338
make ${MAKEOPTS} -C third-party BOARD=SEEED_STUDIO_XIAO_ESP32S3 pack_all

0 commit comments

Comments
 (0)