29
29
- name : Get MicroPython latest release
30
30
run : |
31
31
MPY_RELEASE=$(curl --silent "https://api.github.com/repos/micropython/micropython/releases/latest" | jq -r .tag_name)
32
- # echo "MPY_RELEASE=${MPY_RELEASE}" >> $GITHUB_ENV
33
- echo "MPY_RELEASE=v1.25.0" >> $GITHUB_ENV
32
+ echo "MPY_RELEASE=${MPY_RELEASE}" >> $GITHUB_ENV
34
33
35
34
# Cache ESP-IDF dependencies and MicroPython
36
35
- name : Cache ESP-IDF and MicroPython
@@ -84,56 +83,25 @@ jobs:
84
83
cd ~/esp-idf/
85
84
source ./export.sh
86
85
cd ~
87
- git clone --depth 1 --branch ${{ env.MPY_RELEASE }} https://github.com/micropython/micropython.git
88
- cd micropython
89
- # git submodule update --init --depth 1
90
- cd mpy-cross
91
- make
92
- cd ~/micropython/ports/esp32
93
- make submodules
94
- echo "Micropython setup successfully"
86
+ git clone --branch ${{ env.MPY_RELEASE }} https://github.com/micropython/micropython.git
87
+ echo "Micropython cloned successfully"
95
88
source ~/micropython/tools/ci.sh && echo "IDF_VER=$IDF_VER" >> $GITHUB_ENV
96
89
97
- # Dynamically create jobs for each board
90
+ # Dynamically create jobs for each commit
98
91
build :
99
92
needs : setup-environment
100
93
runs-on : ubuntu-24.04
101
94
strategy :
102
95
fail-fast : false
103
96
matrix :
104
- board :
105
- - ESP32_GENERIC-SPIRAM
106
- - ESP32_GENERIC_S2
107
- - ESP32_GENERIC_S3
108
- - ESP32_GENERIC_S3-SPIRAM_OCT
109
- - ESP32_GENERIC_S3-FLASH_4M
110
- - ESP32_GENERIC-SPIRAM@WROVER_KIT
111
- - ESP32_GENERIC-SPIRAM@ESP_EYE
112
- - ESP32_GENERIC-SPIRAM@M5STACK_PSRAM
113
- - ESP32_GENERIC-SPIRAM@M5STACK_V2_PSRAM
114
- - ESP32_GENERIC-SPIRAM@M5STACK_WIDE
115
- - ESP32_GENERIC-SPIRAM@M5STACK_ESP32CAM
116
- - ESP32_GENERIC-SPIRAM@M5STACK_UNITCAM
117
- - ESP32_GENERIC-SPIRAM@AI_THINKER
118
- - ESP32_GENERIC-SPIRAM@TTGO_T_JOURNAL
119
- - ESP32_GENERIC-SPIRAM@TTGO_T_CAMERA_PLUS
120
- - ESP32_GENERIC_S3-SPIRAM_OCT@M5STACK_CAMS3_UNIT
121
- - ESP32_GENERIC_S3-SPIRAM_OCT@M5STACK_ATOM_S3R
122
- - ESP32_GENERIC_S3-SPIRAM_OCT@XIAO_ESP32S3
123
- - ESP32_GENERIC_S3-SPIRAM_OCT@ESP32S3_CAM_LCD
124
- - ESP32_GENERIC_S3-SPIRAM_OCT@ESP32S3_EYE
125
- - ESP32_GENERIC_S3-SPIRAM_OCT@FREENOVE_ESP32S3_CAM
126
- - ESP32_GENERIC_S3-SPIRAM_OCT@DFRobot_ESP32S3
127
- - ESP32_GENERIC_S3-SPIRAM_OCT@NEW_ESPS3_RE1_0
128
- - ESP32_GENERIC_S3-SPIRAM_OCT@XENOIONEX
97
+ commit_offset : [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23]
129
98
130
99
steps :
131
100
# Get the latest MicroPython release
132
101
- name : Get MicroPython latest release
133
102
run : |
134
103
MPY_RELEASE=$(curl --silent "https://api.github.com/repos/micropython/micropython/releases/latest" | jq -r .tag_name)
135
- # echo "MPY_RELEASE=${MPY_RELEASE}" >> $GITHUB_ENV
136
- echo "MPY_RELEASE=v1.25.0" >> $GITHUB_ENV
104
+ echo "MPY_RELEASE=${MPY_RELEASE}" >> $GITHUB_ENV
137
105
138
106
# Cache ESP-IDF dependencies and MicroPython
139
107
- name : Cache ESP-IDF and MicroPython
@@ -156,7 +124,26 @@ jobs:
156
124
sudo apt-get update
157
125
sudo apt-get install -y git wget flex bison gperf python3 python3-pip python3-venv cmake ninja-build ccache libffi-dev libssl-dev dfu-util libusb-1.0-0 build-essential pkg-config
158
126
159
- # Build MicroPython for each board
127
+ # Setup MicroPython for specific commit
128
+ - name : Setup MicroPython for commit
129
+ run : |
130
+ cd ~/micropython
131
+ # Get the commit hash that is N commits before the release tag
132
+ COMMIT_HASH=$(git rev-list --reverse HEAD~${{ matrix.commit_offset }}..HEAD | head -1)
133
+ if [ -z "$COMMIT_HASH" ]; then
134
+ COMMIT_HASH=$(git rev-parse HEAD~${{ matrix.commit_offset }})
135
+ fi
136
+ echo "Testing commit: $COMMIT_HASH (offset: ${{ matrix.commit_offset }})"
137
+ git checkout $COMMIT_HASH
138
+ git submodule update --init --depth 1
139
+ cd mpy-cross
140
+ make
141
+ cd ~/micropython/ports/esp32
142
+ make submodules
143
+ echo "Micropython setup successfully for commit $COMMIT_HASH"
144
+ echo "COMMIT_HASH=$COMMIT_HASH" >> $GITHUB_ENV
145
+
146
+ # Build MicroPython for ESP32_GENERIC_S3-SPIRAM_OCT
160
147
- name : Build MicroPython
161
148
run : |
162
149
cd ${{ github.workspace }}
@@ -166,33 +153,32 @@ jobs:
166
153
cd ~/micropython/ports/esp32
167
154
source ~/esp-idf/export.sh
168
155
169
- # Check if a variant is defined and adjust the idf.py command
170
- IFS='@' read -r BUILD_TARGET CAMERA_MODEL <<< "${{ matrix.board }}"
171
- IFS='-' read -r BOARD_NAME BOARD_VARIANT <<< "${BUILD_TARGET}"
156
+ # Fixed board configuration for ESP32_GENERIC_S3-SPIRAM_OCT
157
+ BOARD_NAME="ESP32_GENERIC_S3"
158
+ BOARD_VARIANT="SPIRAM_OCT"
159
+ BUILD_TARGET="ESP32_GENERIC_S3-SPIRAM_OCT"
160
+
161
+ IDF_CMD="idf.py -D MICROPY_BOARD=$BOARD_NAME -D USER_C_MODULES=${{ github.workspace }}/src/micropython.cmake -D MICROPY_BOARD_VARIANT=$BOARD_VARIANT -B build-$BUILD_TARGET -D MP_CAMERA_DRIVER_VERSION=$CAM_DRIVER -D MP_JPEG_DIR=${{ github.workspace }}/mp_jpeg"
162
+ FINAL_CMD="${IDF_CMD} build"
172
163
173
- if [ -n "${BOARD_VARIANT}" ]; then
174
- IDF_CMD="idf.py -D MICROPY_BOARD=$BOARD_NAME -D USER_C_MODULES=${{ github.workspace }}/src/micropython.cmake -D MICROPY_BOARD_VARIANT=$BOARD_VARIANT -B build-$BUILD_TARGET -D MP_CAMERA_DRIVER_VERSION=$CAM_DRIVER -D MP_JPEG_DIR=${{ github.workspace }}/mp_jpeg"
175
- else
176
- IDF_CMD="idf.py -D MICROPY_BOARD=$BOARD_NAME -D USER_C_MODULES=${{ github.workspace }}/src/micropython.cmake -B build-$BUILD_TARGET -D MP_CAMERA_DRIVER_VERSION=$CAM_DRIVER -D MP_JPEG_DIR=${{ github.workspace }}/mp_jpeg"
177
- fi
178
- if [ -n "${CAMERA_MODEL}" ]; then
179
- echo "FW_NAME=${CAMERA_MODEL}" >> $GITHUB_ENV
180
- FINAL_CMD="${IDF_CMD} -D MICROPY_CAMERA_MODEL=${CAMERA_MODEL} build"
181
- else
182
- echo "FW_NAME=${BUILD_TARGET}" >> $GITHUB_ENV
183
- FINAL_CMD="${IDF_CMD} build"
184
- fi
185
164
make USER_C_MODULES=${{ github.workspace }}/src/micropython.cmake BOARD=$BOARD_NAME submodules
186
165
echo "Running command: $FINAL_CMD"
187
166
eval $FINAL_CMD
167
+
188
168
cd ~/micropython/ports/esp32/build-${BUILD_TARGET}
189
169
python ../makeimg.py sdkconfig bootloader/bootloader.bin partition_table/partition-table.bin micropython.bin firmware.bin micropython.uf2
190
170
mkdir -p ~/artifacts
191
171
mv ~/micropython/ports/esp32/build-${BUILD_TARGET}/firmware.bin ~/artifacts/firmware.bin
172
+
173
+ # Get binary size info
174
+ ls -lh ~/artifacts/firmware.bin
175
+ FIRMWARE_SIZE=$(stat -c%s ~/artifacts/firmware.bin)
176
+ echo "Firmware size: $FIRMWARE_SIZE bytes"
177
+ echo "FIRMWARE_SIZE=$FIRMWARE_SIZE" >> $GITHUB_ENV
192
178
193
179
- name : Upload firmware artifact
194
180
uses : actions/upload-artifact@v4
195
181
with :
196
- name : mpy_cam-${{ env.MPY_RELEASE }}-${{ env.FW_NAME }}
182
+ name : mpy_cam-${{ env.MPY_RELEASE }}-commit- ${{ matrix.commit_offset }}-${{ env.COMMIT_HASH }}-ESP32_GENERIC_S3-SPIRAM_OCT
197
183
path : ~/artifacts/**
198
184
retention-days : 5
0 commit comments