Skip to content

MicroPython For ESP32 #14

MicroPython For ESP32

MicroPython For ESP32 #14

Workflow file for this run

name: MicroPython For ESP32
on:
workflow_dispatch:
env:
MICROPYTHON: micropython
MICROPYTHON_REPO: https://github.com/micropython/micropython.git
MICROPYTHON_VERSION: v1.26.0
ESPIDF: esp-idf
ESPIDF_REPO: https://github.com/espressif/esp-idf.git
ESPIDF_VERSION: v5.4.2
TZ: Asia/Shanghai
jobs:
MicroPython_ESP32:
name: Build MicroPython
runs-on: ubuntu-22.04
strategy:
fail-fast: false
matrix:
info:
- '{ "BOARD": "ESP32_GENERIC", "BOARD_VARIANT": "SPIRAM", "FLASH": "4" }'
- '{ "BOARD": "ESP32_GENERIC", "BOARD_VARIANT": "SPIRAM", "FLASH": "8" }'
- '{ "BOARD": "ESP32_GENERIC", "BOARD_VARIANT": "SPIRAM", "FLASH": "16" }'
- '{ "BOARD": "ESP32_GENERIC_S3", "BOARD_VARIANT": "SPIRAM_OCT", "FLASH": "4" }'
- '{ "BOARD": "ESP32_GENERIC_S3", "BOARD_VARIANT": "SPIRAM_OCT", "FLASH": "8" }'
- '{ "BOARD": "ESP32_GENERIC_S3", "BOARD_VARIANT": "SPIRAM_OCT", "FLASH": "16" }'
steps:
- name: Checkout
uses: actions/checkout@main
- name: Initialization environment
run: |
sudo apt-get update -y
sudo apt-get install -y build-essential libffi-dev git pkg-config
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
sudo timedatectl set-timezone "${{env.TZ}}"
- name: Clone ESP-IDF
run: |
git clone -b ${{env.ESPIDF_VERSION}} --recursive ${{env.ESPIDF_REPO}} ${{env.ESPIDF}}
cd ${{env.ESPIDF}}
git checkout ${{env.ESPIDF_VERSION}}
git submodule update --init --recursive
./install.sh
- name: Clone MicroPython
run: |
git clone -b ${{env.MICROPYTHON_VERSION}} --recursive ${{env.MICROPYTHON_REPO}} ${{env.MICROPYTHON}}
cd ${{env.MICROPYTHON}}
git checkout ${{env.MICROPYTHON_VERSION}}
git submodule update --init --recursive
- name: Custom MicroPython for ESP32
run: |
wget -P ${{env.MICROPYTHON}}/ports/esp32/modules https://raw.githubusercontent.com/Josverl/micropython-stubs/main/mip/typing.py
wget -P ${{env.MICROPYTHON}}/ports/esp32/modules https://raw.githubusercontent.com/micropython/micropython-lib/master/python-stdlib/logging/logging.py
wget -P ${{env.MICROPYTHON}}/ports/esp32/modules https://raw.githubusercontent.com/micropython/micropython-lib/master/micropython/drivers/storage/sdcard/sdcard.py
rm -rf ${{env.MICROPYTHON}}/ports/esp32/boards/${{fromJSON(matrix.info).BOARD}}/sdkconfig.board
mv config/micropython/N${{fromJSON(matrix.info).FLASH}}.sdkconfig ${{env.MICROPYTHON}}/ports/esp32/boards/${{fromJSON(matrix.info).BOARD}}/sdkconfig.board
- name: Compile the firmware
id: compile
run: |
source ${{env.ESPIDF}}/export.sh
cd ${{env.MICROPYTHON}}
make -C mpy-cross
cd ports/esp32
make submodules
make V=1 BOARD=${{fromJSON(matrix.info).BOARD}} BOARD_VARIANT=${{fromJSON(matrix.info).BOARD_VARIANT}}
echo "status=success" >> $GITHUB_OUTPUT
echo "OUTPUT=${{env.MICROPYTHON}}/ports/esp32/build-${{fromJSON(matrix.info).BOARD}}-${{fromJSON(matrix.info).BOARD_VARIANT}}" >> $GITHUB_ENV
echo "FIREMWARE_ORIGIN=firmware.bin" >> $GITHUB_ENV
echo "FIREMWARE=MicroPython-${{fromJSON(matrix.info).BOARD}}_${{fromJSON(matrix.info).BOARD_VARIANT}}_N${{fromJSON(matrix.info).FLASH}}-${{env.MICROPYTHON_VERSION}}-$(date +"%Y%m%d%H%M").bin" >> $GITHUB_ENV
- name: Organize compiled firmware
id: firmware
if: steps.compile.outputs.status == 'success' && !cancelled()
run: |
mv ${{env.OUTPUT}}/${{env.FIREMWARE_ORIGIN}} ${{env.OUTPUT}}/${{env.FIREMWARE}}
- name: Upload firmware to release
if: steps.compile.outputs.status == 'success' && !cancelled()
uses: svenstaro/upload-release-action@v2
with:
repo_token: ${{secrets.GITHUB_TOKEN}}
file: ${{env.OUTPUT}}/${{env.FIREMWARE}}
asset_name: ${{env.FIREMWARE}}
tag: MicroPython-${{env.MICROPYTHON_VERSION}}
body: |
### MicroPython Firmware For ESP32
1. ESP32_GENERIC_SPIRAM_Nx: ESP32、ESP32-WROOM、ESP32-WROVER、ESP32-SOLO、ESP32-PICO、ESP32-MINI with SPIRAM and xMiB Flash
2. ESP32_GENERIC_S3_SPIRAM_OCT_Nx: ESP32-S3、ESP32-S3-WROOM、ESP32-S3-MINI with Octal-SPIRAM and xMiB Flash
overwrite: true
Delete_Workflow:
needs: [ MicroPython_ESP32 ]
runs-on: ubuntu-22.04
steps:
- name: Delete workflow runs
uses: Mattraks/delete-workflow-runs@main
with:
retain_days: 0
keep_minimum_runs: 4