@@ -11,60 +11,140 @@ permissions:
1111 packages : write
1212
1313jobs :
14+ setup :
15+ runs-on : ubuntu-latest
16+ outputs :
17+ cache-hit : ${{ steps.cache-esp-idf.outputs.cache-hit }}
18+ steps :
19+ - uses : actions/checkout@v4
20+
21+ - name : Install dependencies
22+ run : |
23+ sudo apt-get update
24+ sudo apt-get install -y git wget flex bison gperf quilt python3 python3-pip \
25+ python3-venv cmake ninja-build ccache libffi-dev libssl-dev dfu-util libusb-1.0-0
26+
27+ - name : Cache esp-idf
28+ uses : actions/cache@v4
29+ id : cache-esp-idf
30+ with :
31+ path : |
32+ ~/.espressif
33+ ${{ github.workspace }}/esp-idf
34+ key : ${{ runner.os }}-idf-v5.4.1
35+
36+ - name : Install ESP-IDF
37+ if : steps.cache-esp-idf.outputs.cache-hit != 'true'
38+ run : |
39+ git clone --depth=1 -b $IDF_VERSION https://github.com/espressif/esp-idf.git
40+ ./esp-idf/install.sh
41+ env :
42+ IDF_VERSION : " v5.4.1"
43+
44+ - name : Setup environment
45+ run : |
46+ source tools/ci.sh && ci_esp32_idf541_setup
47+ source esp-idf/export.sh
48+ pip install future
49+ make -C m5stack submodules
50+ make -C m5stack patch
51+ make -C m5stack littlefs
52+
53+
1454 build :
15- runs-on : [self-hosted, Linux, X64]
55+ needs : setup
56+ runs-on : ubuntu-latest
57+ strategy :
58+ matrix :
59+ board :
60+ - M5STACK_AirQ
61+ - M5STACK_Atom_Echo
62+ - M5STACK_Atom_Lite
63+ - M5STACK_Atom_Matrix
64+ - M5STACK_AtomS3
65+ - M5STACK_AtomS3_Lite
66+ - M5STACK_AtomS3R
67+ - M5STACK_AtomS3R_CAM
68+ - M5STACK_AtomS3U
69+ - M5STACK_AtomU
70+ - M5STACK_Basic
71+ - M5STACK_Basic_4MB
72+ - M5STACK_Capsule
73+ - M5STACK_Cardputer
74+ - M5STACK_Core2
75+ - M5STACK_CoreInk
76+ - M5STACK_CoreS3
77+ - M5STACK_Dial
78+ - M5STACK_DinMeter
79+ - M5STACK_Fire
80+ - M5STACK_NanoC6
81+ - M5STACK_Paper
82+ - M5STACK_PaperS3
83+ - M5STACK_Stamp_PICO
84+ - M5STACK_StamPLC
85+ - M5STACK_StampS3
86+ - M5STACK_Station
87+ - M5STACK_StickC
88+ - M5STACK_StickC_PLUS
89+ - M5STACK_StickC_PLUS2
90+ - M5STACK_Tab5
91+ - M5STACK_Tough
92+ - ESPRESSIF_ESP32_S3_BOX_3
93+ - SEEED_STUDIO_XIAO_ESP32S3
94+ max-parallel : 4
1695 steps :
17- 18-
19- - name : Install dependencies with apt
20- run : |
21- sudo apt-get update
22- 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
23-
24- - name : Install packages
25- run : source tools/ci.sh && ci_esp32_idf541_setup
26-
27- - name : Build
28- run : source tools/ci.sh && ci_esp32_nightly_build
29-
30- - name : Upload firmware
31- uses : softprops/action-gh-release@v2
32- if : startsWith(github.ref, 'refs/tags/')
33- env :
34- GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
35- with :
36- files : |
37- $GITHUB_WORKSPACE/m5stack/build-M5STACK_AirQ/uiflow-*-*.bin
38- $GITHUB_WORKSPACE/m5stack/build-M5STACK_Atom_Echo/uiflow-*-*.bin
39- $GITHUB_WORKSPACE/m5stack/build-M5STACK_Atom_Lite/uiflow-*-*.bin
40- $GITHUB_WORKSPACE/m5stack/build-M5STACK_Atom_Matrix/uiflow-*-*.bin
41- $GITHUB_WORKSPACE/m5stack/build-M5STACK_AtomS3/uiflow-*-*.bin
42- $GITHUB_WORKSPACE/m5stack/build-M5STACK_AtomS3_Lite/uiflow-*-*.bin
43- $GITHUB_WORKSPACE/m5stack/build-M5STACK_AtomS3R/uiflow-*-*.bin
44- $GITHUB_WORKSPACE/m5stack/build-M5STACK_AtomS3R_CAM/uiflow-*-*.bin
45- $GITHUB_WORKSPACE/m5stack/build-M5STACK_AtomS3U/uiflow-*-*.bin
46- $GITHUB_WORKSPACE/m5stack/build-M5STACK_AtomU/uiflow-*-*.bin
47- $GITHUB_WORKSPACE/m5stack/build-M5STACK_Basic/uiflow-*-*.bin
48- $GITHUB_WORKSPACE/m5stack/build-M5STACK_Basic_4MB/uiflow-*-*.bin
49- $GITHUB_WORKSPACE/m5stack/build-M5STACK_Capsule/uiflow-*-*.bin
50- $GITHUB_WORKSPACE/m5stack/build-M5STACK_Cardputer/uiflow-*-*.bin
51- $GITHUB_WORKSPACE/m5stack/build-M5STACK_Core2/uiflow-*-*.bin
52- $GITHUB_WORKSPACE/m5stack/build-M5STACK_CoreInk/uiflow-*-*.bin
53- $GITHUB_WORKSPACE/m5stack/build-M5STACK_CoreS3/uiflow-*-*.bin
54- $GITHUB_WORKSPACE/m5stack/build-M5STACK_Dial/uiflow-*-*.bin
55- $GITHUB_WORKSPACE/m5stack/build-M5STACK_DinMeter/uiflow-*-*.bin
56- $GITHUB_WORKSPACE/m5stack/build-M5STACK_Fire/uiflow-*-*.bin
57- $GITHUB_WORKSPACE/m5stack/build-M5STACK_NanoC6/uiflow-*-*.bin
58- $GITHUB_WORKSPACE/m5stack/build-M5STACK_Paper/uiflow-*-*.bin
59- $GITHUB_WORKSPACE/m5stack/build-M5STACK_PaperS3/uiflow-*-*.bin
60- $GITHUB_WORKSPACE/m5stack/build-M5STACK_Stamp_PICO/uiflow-*-*.bin
61- $GITHUB_WORKSPACE/m5stack/build-M5STACK_StamPLC/uiflow-*-*.bin
62- $GITHUB_WORKSPACE/m5stack/build-M5STACK_StampS3/uiflow-*-*.bin
63- $GITHUB_WORKSPACE/m5stack/build-M5STACK_Station/uiflow-*-*.bin
64- $GITHUB_WORKSPACE/m5stack/build-M5STACK_StickC/uiflow-*-*.bin
65- $GITHUB_WORKSPACE/m5stack/build-M5STACK_StickC_PLUS/uiflow-*-*.bin
66- $GITHUB_WORKSPACE/m5stack/build-M5STACK_StickC_PLUS2/uiflow-*-*.bin
67- $GITHUB_WORKSPACE/m5stack/build-M5STACK_Tab5/uiflow-*-*.bin
68- $GITHUB_WORKSPACE/m5stack/build-M5STACK_Tough/uiflow-*-*.bin
69- $GITHUB_WORKSPACE/third-party/build-SEEED_STUDIO_XIAO_ESP32S3/uiflow-*-*.bin
70- $GITHUB_WORKSPACE/third-party/build-ESPRESSIF_ESP32_S3_BOX_3/uiflow-*-*.bin
96+ - uses : actions/checkout@v4
97+
98+ - name : Install dependencies
99+ run : |
100+ sudo apt-get update
101+ sudo apt-get install -y git wget flex bison gperf quilt python3 python3-pip \
102+ python3-venv cmake ninja-build ccache libffi-dev libssl-dev dfu-util libusb-1.0-0
103+
104+ - name : Restore ESP-IDF cache
105+ uses : actions/cache@v4
106+ with :
107+ path : |
108+ ~/.espressif
109+ ${{ github.workspace }}/esp-idf
110+ key : ${{ runner.os }}-idf-v5.4.1
111+
112+ - name : Prepare environment
113+ run : |
114+ source esp-idf/export.sh
115+
116+ - name : Build M5Stack ${{ matrix.board }}
117+ if : startsWith(matrix.board, 'M5STACK')
118+ run : |
119+ source esp-idf/export.sh
120+ pip install future
121+ make -C m5stack submodules
122+ make -C m5stack patch
123+ make -C m5stack littlefs
124+ make -C m5stack BOARD=${{ matrix.board }} pack_all
125+
126+ - name : Build third-party ${{ matrix.board }}
127+ if : " !startsWith(matrix.board, 'M5STACK')"
128+ run : |
129+ source esp-idf/export.sh
130+ pip install future
131+ make -C m5stack submodules
132+ make -C m5stack patch
133+ make -C m5stack littlefs
134+ make -C third-party BOARD=${{ matrix.board }} pack_all
135+
136+ - name : Upload firmware artifact
137+ uses : actions/upload-artifact@v4
138+ with :
139+ name : firmware-${{ matrix.board }}
140+ path : |
141+ ${{ startsWith(matrix.board, 'M5STACK') && 'm5stack' || 'third-party' }}/build-${{ matrix.board }}/uiflow-*-*.bin
142+
143+ - name : Upload firmware to release
144+ uses : softprops/action-gh-release@v2
145+ if : startsWith(github.ref, 'refs/tags/')
146+ env :
147+ GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
148+ with :
149+ files : |
150+ ${{ startsWith(matrix.board, 'M5STACK') && 'm5stack' || 'third-party' }}/build-${{ matrix.board }}/uiflow-*-*.bin
0 commit comments