From 17b6051da02303ef4d33f2ae4c7a2a8dec30900c Mon Sep 17 00:00:00 2001 From: Manuel Weiser Date: Sun, 16 Feb 2025 11:47:20 +0100 Subject: [PATCH] feat: update GitHub Actions workflow for firmware release and add partition configuration --- .github/workflows/release.yml | 77 ++++++++++++++++++++++++++++++++--- partitions.csv | 5 +++ platformio.ini | 1 + 3 files changed, 77 insertions(+), 6 deletions(-) create mode 100644 partitions.csv diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 5385246..3f97bc5 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -5,24 +5,59 @@ on: tags: - 'v*' +permissions: + contents: write + jobs: build: runs-on: ubuntu-latest 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 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 id: changelog run: | - CHANGELOG=$(awk "/## \[${{ steps.get_version.outputs.VERSION }}\]/{p=1;print;next} /## \[/{p=0} p" CHANGELOG.md) - echo "::set-output name=CHANGES::$CHANGELOG" - + CHANGELOG=$(awk "/## \\[${{ steps.get_version.outputs.VERSION }}\\]/{p=1;print;next} /## \\[/{p=0} p" CHANGELOG.md) + echo "CHANGES<> $GITHUB_OUTPUT + echo "$CHANGELOG" >> $GITHUB_OUTPUT + echo "EOF" >> $GITHUB_OUTPUT + - name: Create Release uses: actions/create-release@v1 + id: create_release env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: @@ -30,4 +65,34 @@ jobs: release_name: Release ${{ steps.get_version.outputs.VERSION }} body: ${{ steps.changelog.outputs.CHANGES }} draft: false - prerelease: false \ No newline at end of file + 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 \ No newline at end of file diff --git a/partitions.csv b/partitions.csv new file mode 100644 index 0000000..61776c8 --- /dev/null +++ b/partitions.csv @@ -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, \ No newline at end of file diff --git a/platformio.ini b/platformio.ini index f51a701..e7aaaaa 100644 --- a/platformio.ini +++ b/platformio.ini @@ -33,6 +33,7 @@ lib_deps = board_build.filesystem = spiffs board_build.spiffs.partition = 2M board_build.spiffs.upload_size = 2M +board_build.partitions = partitions.csv build_flags = -Os