Skip to content

Pin ESP-IDF to release/v6.0 branch in all workflows #14

Pin ESP-IDF to release/v6.0 branch in all workflows

Pin ESP-IDF to release/v6.0 branch in all workflows #14

Workflow file for this run

name: Build ESP32 Firmware
on:
push:
branches: [ main ]
paths:
- 'esp/**'
- '.github/workflows/build-esp32.yml'
pull_request:
branches: [ main ]
paths:
- 'esp/**'
- '.github/workflows/build-esp32.yml'
workflow_dispatch:
jobs:
build-esp32:
name: Build ESP32-S3 Firmware
runs-on: ubuntu-latest
strategy:
matrix:
board:
- name: xiao_esp32s3
display_name: "XIAO ESP32-S3"
sdkconfig: "sdkconfig.defaults;sdkconfig.board.xiao"
- name: lilygo_tdisplays3
display_name: "LilyGo T-Display-S3"
sdkconfig: "sdkconfig.defaults;sdkconfig.board.lilygo"
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
submodules: recursive
- name: Build ${{ matrix.board.display_name }}
uses: espressif/esp-idf-ci-action@v1
with:
esp_idf_version: release/v6.0
target: esp32s3
path: esp
command: |
. ~/esp-idf/export.sh
cd esp
export SDKCONFIG_DEFAULTS="${{ matrix.board.sdkconfig }}"
idf.py build
# Create single merged binary with all components
esptool.py --chip esp32s3 merge_bin \
-o build/mouthpad_usb_merged.bin \
--flash_mode dio \
--flash_freq 80m \
--flash_size 8MB \
0x0 build/bootloader/bootloader.bin \
0x8000 build/partition_table/partition-table.bin \
0x10000 build/mouthpad_usb.bin
- name: Prepare artifacts
run: |
mkdir -p artifacts
COMMIT_SHA=$(echo "${{ github.sha }}" | cut -c1-7)
# Copy merged binary with commit hash
cp esp/build/mouthpad_usb_merged.bin artifacts/mp_usb_${{ matrix.board.name }}_${COMMIT_SHA}.bin
echo "✅ ${{ matrix.board.display_name }} merged binary created"
ls -lh artifacts/
# Export COMMIT_SHA for use in next steps
echo "COMMIT_SHA=${COMMIT_SHA}" >> $GITHUB_ENV
- name: Upload firmware artifacts
uses: actions/upload-artifact@v4
with:
name: mp_usb_${{ matrix.board.name }}_${{ env.COMMIT_SHA }}
path: artifacts/mp_usb_${{ matrix.board.name }}_*.bin
if-no-files-found: error
retention-days: 30
- name: Build summary
run: |
echo "### ✅ ${{ matrix.board.display_name }} Build Complete" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
echo "**Board:** ${{ matrix.board.display_name }}" >> $GITHUB_STEP_SUMMARY
echo "**SDK Config:** \`${{ matrix.board.sdkconfig }}\`" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
if [ -f esp/build/mouthpad_usb_merged.bin ]; then
SIZE=$(stat -c%s esp/build/mouthpad_usb_merged.bin 2>/dev/null || stat -f%z esp/build/mouthpad_usb_merged.bin 2>/dev/null || echo "unknown")
echo "**Merged binary size:** $SIZE bytes" >> $GITHUB_STEP_SUMMARY
fi
echo "" >> $GITHUB_STEP_SUMMARY
echo "**Artifact:** \`mp_usb_${{ matrix.board.name }}_${{ env.COMMIT_SHA }}.bin\`" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
echo "Flash with: \`esptool.py --chip esp32s3 write_flash 0x0 mp_usb_${{ matrix.board.name }}_${{ env.COMMIT_SHA }}.bin\`" >> $GITHUB_STEP_SUMMARY