1+ name : MicroPython For ESP32
2+
3+ on :
4+ workflow_dispatch :
5+
6+ env :
7+ MICROPYTHON : micropython
8+ MICROPYTHON_REPO : https://github.com/micropython/micropython.git
9+ MICROPYTHON_VERSION : v1.24.1
10+ ESPIDF : esp-idf
11+ ESPIDF_REPO : https://github.com/espressif/esp-idf.git
12+ ESPIDF_VERSION : v5.2.2
13+ TZ : Asia/Shanghai
14+
15+ jobs :
16+ MicroPython_ESP32 :
17+ name : Build MicroPython
18+ runs-on : ubuntu-22.04
19+
20+ strategy :
21+ fail-fast : false
22+ matrix :
23+ info :
24+ - ' { "BOARD": "ESP32_GENERIC", "BOARD_VARIANT": "SPIRAM", "FLASH": "4" }'
25+ - ' { "BOARD": "ESP32_GENERIC", "BOARD_VARIANT": "SPIRAM", "FLASH": "8" }'
26+ - ' { "BOARD": "ESP32_GENERIC", "BOARD_VARIANT": "SPIRAM", "FLASH": "16" }'
27+ - ' { "BOARD": "ESP32_GENERIC_S3", "BOARD_VARIANT": "SPIRAM_OCT", "FLASH": "4" }'
28+ - ' { "BOARD": "ESP32_GENERIC_S3", "BOARD_VARIANT": "SPIRAM_OCT", "FLASH": "8" }'
29+ - ' { "BOARD": "ESP32_GENERIC_S3", "BOARD_VARIANT": "SPIRAM_OCT", "FLASH": "16" }'
30+
31+ steps :
32+ - name : Checkout
33+ uses : actions/checkout@main
34+
35+ - name : Initialization environment
36+ run : |
37+ sudo apt-get update -y
38+ sudo apt-get install -y build-essential libffi-dev git pkg-config
39+ sudo apt-get install -y git wget flex bison gperf python3 python3-venv cmake ninja-build ccache libffi-dev libssl-dev dfu-util libusb-1.0-0 python-is-python3 pip
40+ sudo timedatectl set-timezone "$TZ"
41+
42+ - name : Clone ESP-IDF
43+ run : |
44+ git clone -b $ESPIDF_VERSION --recursive $ESPIDF_REPO $ESPIDF
45+ cd $ESPIDF
46+ git checkout $ESPIDF_VERSION
47+ git submodule update --init --recursive
48+ ./install.sh
49+ source export.sh
50+
51+ - name : Clone MicroPython
52+ run : |
53+ git clone -b $MICROPYTHON_VERSION --recursive $MICROPYTHON_REPO $MICROPYTHON
54+ cd $MICROPYTHON
55+ git checkout $MICROPYTHON_VERSION
56+ git submodule update --init --recursive
57+
58+ - name : Custom MicroPython for ESP32
59+ run : |
60+ wget -P $MICROPYTHON/ports/esp32/modules https://raw.githubusercontent.com/Josverl/micropython-stubs/main/mip/typing.py
61+ wget -P $MICROPYTHON/ports/esp32/modules https://raw.githubusercontent.com/micropython/micropython-lib/master/python-stdlib/logging/logging.py
62+ wget -P $MICROPYTHON/ports/esp32/modules https://raw.githubusercontent.com/micropython/micropython-lib/master/micropython/drivers/storage/sdcard/sdcard.py
63+ rm -rf $MICROPYTHON/ports/esp32/boards/${{ fromJSON(matrix.info).BOARD }}/mpconfigboard.cmake
64+ rm -rf $MICROPYTHON/ports/esp32/boards/${{ fromJSON(matrix.info).BOARD }}/sdkconfig.board
65+ mv config/micropython/${{ fromJSON(matrix.info).BOARD }}.mpconfigboard $MICROPYTHON/ports/esp32/boards/${{ fromJSON(matrix.info).BOARD }}/mpconfigboard.cmake
66+ mv config/micropython/N${{ fromJSON(matrix.info).FLASH }}.sdkconfig $MICROPYTHON/ports/esp32/boards/${{ fromJSON(matrix.info).BOARD }}/sdkconfig.board
67+
68+ - name : Compile the firmware
69+ id : compile
70+ run : |
71+ source $ESPIDF/export.sh
72+ cd $MICROPYTHON
73+ make -C mpy-cross
74+ cd ports/esp32
75+ make submodules
76+ make V=1 BOARD=${{ fromJSON(matrix.info).BOARD }} BOARD_VARIANT=${{ fromJSON(matrix.info).BOARD_VARIANT }}
77+ echo "status=success" >> $GITHUB_OUTPUT
78+ echo "COMPILE_DATE=$(date +"%Y%m%d%H%M")" >> $GITHUB_ENV
79+
80+ - name : Organize compiled firmware
81+ if : steps.compile.outputs.status == 'success' && !cancelled()
82+ run : |
83+ cd $MICROPYTHON/ports/esp32/build-${{ fromJSON(matrix.info).BOARD }}-${{ fromJSON(matrix.info).BOARD_VARIANT }}
84+ mv firmware.bin MicroPython_${{ env.MICROPYTHON_VERSION }}-${{ fromJSON(matrix.info).BOARD }}-${{ fromJSON(matrix.info).BOARD_VARIANT }}-N${{ fromJSON(matrix.info).FLASH }}-${{ env.COMPILE_DATE }}.bin
85+
86+ - name : Upload firmware to release
87+ if : steps.compile.outputs.status == 'success' && !cancelled()
88+ uses : svenstaro/upload-release-action@v2
89+ with :
90+ repo_token : ${{ secrets.GITHUB_TOKEN }}
91+ file : ${{ env.MICROPYTHON }}/ports/esp32/build-${{ fromJSON(matrix.info).BOARD }}-${{ fromJSON(matrix.info).BOARD_VARIANT }}/MicroPython_${{ env.MICROPYTHON_VERSION }}-${{ fromJSON(matrix.info).BOARD }}-${{ fromJSON(matrix.info).BOARD_VARIANT }}-N${{ fromJSON(matrix.info).FLASH }}-${{ env.COMPILE_DATE }}.bin
92+ asset_name : MicroPython_${{ env.MICROPYTHON_VERSION }}-${{ fromJSON(matrix.info).BOARD }}-${{ fromJSON(matrix.info).BOARD_VARIANT }}-N${{ fromJSON(matrix.info).FLASH }}-${{ env.COMPILE_DATE }}.bin
93+ tag : MicroPython-${{ env.MICROPYTHON_VERSION }}
94+ body : |
95+ ### MicroPython Firmware For ESP32
96+ 1. ESP32-NX: ESP32、ESP32-WROOM、ESP32-WROVER、ESP32-SOLO、ESP32-PICO、ESP32-MINI with SPIRAM and xMib Flash
97+ 2. ESP32-S3-NX: ESP32-S3、ESP32-S3-WROOM、ESP32-S3-MINI with Octal-SPIRAM and xMib Flash
98+ overwrite : true
99+
100+ Delete_Workflow :
101+ needs : [ MicroPython_ESP32 ]
102+ runs-on : ubuntu-22.04
103+ steps :
104+ - name : Delete workflow runs
105+ uses : Mattraks/delete-workflow-runs@main
106+ with :
107+ retain_days : 0
108+ keep_minimum_runs : 4
0 commit comments