Skip to content

ESP32.yml aktualisieren #49

ESP32.yml aktualisieren

ESP32.yml aktualisieren #49

Workflow file for this run

name: Build MicroPython for ESP32 Boards
on:
push:
branches:
- CI
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
setup-environment:
runs-on: ubuntu-24.04
steps:
# Cache ESP-IDF dependencies and MicroPython
- name: Cache ESP-IDF and MicroPython
id: cache_esp_idf
uses: actions/cache@v4
with:
path: |
~/esp-idf/
~/.espressif/
!~/.espressif/dist/
~/.cache/pip/
~/micropython/
key: esp-idf-${{ hashFiles('path-to-lock-file-or-important-files') }}
restore-keys: |
esp-idf-
# 3. Install ESP-IDF dependencies (if not cached)
- name: Install ESP-IDF dependencies
if: steps.cache_esp_idf.outputs.cache-hit != 'true'
run: |
sudo apt-get update
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
# 4. Download and set up ESP-IDF 5.2.x (if not cached)
- name: Set up ESP-IDF 5.2.x
id: export-idf
if: steps.cache_esp_idf.outputs.cache-hit != 'true'
run: |
cd ~
git clone --branch release/v5.2 --recursive https://github.com/espressif/esp-idf.git
cd esp-idf
./install.sh all
cd components
git clone https://github.com/espressif/esp32-camera
# 5. Clone the latest MicroPython release (if not cached)
- name: Clone MicroPython latest release
id: clone-micropython
if: steps.cache_esp_idf.outputs.cache-hit != 'true'
run: |
LATEST_RELEASE=$(curl --silent "https://api.github.com/repos/micropython/micropython/releases/latest" | jq -r .tag_name)
echo "Cloning MicroPython release: $LATEST_RELEASE"
cd ~
git clone --depth 1 --branch $LATEST_RELEASE https://github.com/micropython/micropython.git
cd micropython
git submodule update --init --depth 1
cd mpy-cross
make
cd ~/micropython/ports/esp32
make submodules
echo "Micropython setup successfully"
- name: test ESP-IDF environment
run: |
cd ~/esp-idf/
source ./export.sh
# Dynamically create jobs for each board
build:
needs: setup-environment
runs-on: ubuntu-24.04
strategy:
fail-fast: false
matrix:
board:
- ESP32_GENERIC:SPIRAM
- ESP32_GENERIC_S2:SPIRAM
- ESP32_GENERIC_S3:SPIRAM
steps:
# Cache ESP-IDF dependencies and MicroPython
- name: Cache ESP-IDF and MicroPython
uses: actions/cache@v4
with:
path: |
~/esp-idf/
~/.espressif/
!~/.espressif/dist/
~/.cache/pip/
~/micropython/
key: esp-idf-${{ hashFiles('path-to-lock-file-or-important-files') }}
restore-keys: |
esp-idf-
- name: Checkout repository
uses: actions/checkout@v4
- name: Install ESP-IDF dependencies
run: |
sudo apt-get update
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
# Parse Board Name and Variant
- name: Parse Board Name and Variant
id: parse
run: |
IFS=':' read -r BOARD_NAME BOARD_VARIANT <<< "${{ matrix.board }}"
echo "BOARD_NAME=${BOARD_NAME}" >> $GITHUB_ENV
if [ -n "${BOARD_VARIANT}" ]; then
echo "BOARD_VARIANT=${BOARD_VARIANT}" >> $GITHUB_ENV
else
echo "BOARD_VARIANT=none" >> $GITHUB_ENV
fi
# Build MicroPython for each board
- name: Build MicroPython
run: |
cd ~/micropython/mpy-cross
make
cd ~/micropython/ports/esp32
source ~/esp-idf/export.sh
# Check if a variant is defined and adjust the make command
make USER_C_MODULES=${{ github.workspace }}/src/micropython.cmake BOARD=${{ env.BOARD_NAME }} BUILD=~/build/${{ env.BOARD_NAME }} submodules
if [ "${{ env.BOARD_VARIANT }}" != "none" ]; then
make USER_C_MODULES=${{ github.workspace }}/src/micropython.cmake BOARD=${{ env.BOARD_NAME }} VARIANT=${{ env.BOARD_VARIANT }} BUILD=~/build/${{ env.BOARD_NAME }} all
else
make USER_C_MODULES=${{ github.workspace }}/src/micropython.cmake BOARD=${{ env.BOARD_NAME }} BUILD=~/build/${{ env.BOARD_NAME }} all
fi
# delete Build in MicroPython