feat: update GitHub Actions workflow for firmware release and add partition configuration

This commit is contained in:
Manuel Weiser 2025-02-16 11:47:20 +01:00
parent 84617ebc53
commit 17b6051da0
3 changed files with 77 additions and 6 deletions

View File

@ -5,24 +5,59 @@ on:
tags: tags:
- 'v*' - 'v*'
permissions:
contents: write
jobs: jobs:
build: build:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v2 - uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: '3.x'
- name: Install PlatformIO
run: |
python -m pip install --upgrade pip
pip install --upgrade platformio
- name: Build Firmware
run: |
pio run -t buildfs # Build SPIFFS
pio run # Build firmware
- name: Install esptool
run: |
pip install esptool
- name: Merge firmware and SPIFFS
run: |
esptool.py --chip esp32 merge_bin \
--flash_mode dio \
--flash_freq 40m \
--flash_size 4MB \
-o .pio/build/esp32dev/merged_firmware.bin \
0x10000 .pio/build/esp32dev/firmware.bin \
0x290000 .pio/build/esp32dev/spiffs.bin
- name: Get version from tag - name: Get version from tag
id: get_version id: get_version
run: echo ::set-output name=VERSION::${GITHUB_REF/refs\/tags\/v/} run: echo "VERSION=${GITHUB_REF#refs/tags/v}" >> $GITHUB_OUTPUT
- name: Read CHANGELOG.md - name: Read CHANGELOG.md
id: changelog id: changelog
run: | run: |
CHANGELOG=$(awk "/## \[${{ steps.get_version.outputs.VERSION }}\]/{p=1;print;next} /## \[/{p=0} p" CHANGELOG.md) CHANGELOG=$(awk "/## \\[${{ steps.get_version.outputs.VERSION }}\\]/{p=1;print;next} /## \\[/{p=0} p" CHANGELOG.md)
echo "::set-output name=CHANGES::$CHANGELOG" echo "CHANGES<<EOF" >> $GITHUB_OUTPUT
echo "$CHANGELOG" >> $GITHUB_OUTPUT
echo "EOF" >> $GITHUB_OUTPUT
- name: Create Release - name: Create Release
uses: actions/create-release@v1 uses: actions/create-release@v1
id: create_release
env: env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with: with:
@ -30,4 +65,34 @@ jobs:
release_name: Release ${{ steps.get_version.outputs.VERSION }} release_name: Release ${{ steps.get_version.outputs.VERSION }}
body: ${{ steps.changelog.outputs.CHANGES }} body: ${{ steps.changelog.outputs.CHANGES }}
draft: false draft: false
prerelease: false prerelease: false
- name: Upload Firmware Assets
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: .pio/build/esp32dev/firmware.bin
asset_name: firmware.bin
asset_content_type: application/octet-stream
- name: Upload SPIFFS Assets
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: .pio/build/esp32dev/spiffs.bin
asset_name: spiffs.bin
asset_content_type: application/octet-stream
- name: Upload Merged Firmware
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: .pio/build/esp32dev/merged_firmware.bin
asset_name: merged_firmware.bin
asset_content_type: application/octet-stream

5
partitions.csv Normal file
View File

@ -0,0 +1,5 @@
# Name, Type, SubType, Offset, Size, Flags
nvs, data, nvs, 0x9000, 0x5000,
otadata, data, ota, 0xe000, 0x2000,
app0, app, ota_0, 0x10000, 0x280000,
spiffs, data, spiffs, 0x290000,0x170000,
1 # Name Type SubType Offset Size Flags
2 nvs data nvs 0x9000 0x5000
3 otadata data ota 0xe000 0x2000
4 app0 app ota_0 0x10000 0x280000
5 spiffs data spiffs 0x290000 0x170000

View File

@ -33,6 +33,7 @@ lib_deps =
board_build.filesystem = spiffs board_build.filesystem = spiffs
board_build.spiffs.partition = 2M board_build.spiffs.partition = 2M
board_build.spiffs.upload_size = 2M board_build.spiffs.upload_size = 2M
board_build.partitions = partitions.csv
build_flags = build_flags =
-Os -Os