From 48721e25941bb0167a009769d0610b19afd9163e Mon Sep 17 00:00:00 2001 From: Matthew Kendall Date: Fri, 12 Aug 2022 12:16:31 -0700 Subject: [PATCH 01/11] Add build script for Github actions --- .github/workflows/build-platformio.yml | 54 ++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 .github/workflows/build-platformio.yml diff --git a/.github/workflows/build-platformio.yml b/.github/workflows/build-platformio.yml new file mode 100644 index 00000000..36e24356 --- /dev/null +++ b/.github/workflows/build-platformio.yml @@ -0,0 +1,54 @@ +name: Build Firmware + +on: + push: + paths-ignore: + - 'doc/**' + +jobs: + build: + + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v2 + - name: Cache pip + uses: actions/cache@v3 + with: + path: ~/.cache/pip + key: ${{ runner.os }}-pip-${{ hashFiles('**/requirements.txt') }} + restore-keys: | + ${{ runner.os }}-pip- + - name: Cache PlatformIO + uses: actions/cache@v3 + with: + path: ~/.platformio + key: ${{ runner.os }}-platformio-${{ hashFiles('**/lockfiles') }} + - 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: Run PlatformIO + run: pio run -e esp32dev + - name: Create merged binary + run: > + python ~/.platformio/packages/tool-esptoolpy/esptool.py --chip esp32 merge_bin -o .pio/build/esp32dev/firmware-full.bin + 0x1000 ~/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/bin/bootloader_dio_40m.bin + 0x8000 .pio/build/esp32dev/partitions.bin + 0xe000 ~/.platformio/packages/framework-arduinoespressif32/tools/partitions/boot_app0.bin + 0x10000 .pio/build/esp32dev/firmware.bin + - name: Rename binaries + run: | + mv .pio/build/esp32dev/firmware.bin .pio/build/esp32dev/tinygs-ota.bin + mv .pio/build/esp32dev/firmware-full.bin .pio/build/esp32dev/tinygs-full.bin + - name: Archive build artifacts + uses: actions/upload-artifact@v3 + with: + name: firmware + path: | + .pio/build/esp32dev/tinygs-ota.bin + .pio/build/esp32dev/tinygs-full.bin From 94c823affc8f84c14cdf276840780854432b35d4 Mon Sep 17 00:00:00 2001 From: Matthew Kendall Date: Fri, 12 Aug 2022 12:20:05 -0700 Subject: [PATCH 02/11] Fix build environment name --- .github/workflows/build-platformio.yml | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/.github/workflows/build-platformio.yml b/.github/workflows/build-platformio.yml index 36e24356..d158d64e 100644 --- a/.github/workflows/build-platformio.yml +++ b/.github/workflows/build-platformio.yml @@ -33,22 +33,22 @@ jobs: python -m pip install --upgrade pip pip install --upgrade platformio - name: Run PlatformIO - run: pio run -e esp32dev + run: pio run -e heltec_wifi_lora_32 - name: Create merged binary run: > - python ~/.platformio/packages/tool-esptoolpy/esptool.py --chip esp32 merge_bin -o .pio/build/esp32dev/firmware-full.bin + python ~/.platformio/packages/tool-esptoolpy/esptool.py --chip esp32 merge_bin -o .pio/build/heltec_wifi_lora_32/firmware-full.bin 0x1000 ~/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/bin/bootloader_dio_40m.bin - 0x8000 .pio/build/esp32dev/partitions.bin + 0x8000 .pio/build/heltec_wifi_lora_32/partitions.bin 0xe000 ~/.platformio/packages/framework-arduinoespressif32/tools/partitions/boot_app0.bin - 0x10000 .pio/build/esp32dev/firmware.bin + 0x10000 .pio/build/heltec_wifi_lora_32/firmware.bin - name: Rename binaries run: | - mv .pio/build/esp32dev/firmware.bin .pio/build/esp32dev/tinygs-ota.bin - mv .pio/build/esp32dev/firmware-full.bin .pio/build/esp32dev/tinygs-full.bin + mv .pio/build/heltec_wifi_lora_32/firmware.bin .pio/build/heltec_wifi_lora_32/tinygs-ota.bin + mv .pio/build/heltec_wifi_lora_32/firmware-full.bin .pio/build/heltec_wifi_lora_32/tinygs-full.bin - name: Archive build artifacts uses: actions/upload-artifact@v3 with: name: firmware path: | - .pio/build/esp32dev/tinygs-ota.bin - .pio/build/esp32dev/tinygs-full.bin + .pio/build/heltec_wifi_lora_32/tinygs-ota.bin + .pio/build/heltec_wifi_lora_32/tinygs-full.bin From 42b405aea7f53141e7febbe3580e03e6423c7b47 Mon Sep 17 00:00:00 2001 From: Matthew Kendall Date: Fri, 12 Aug 2022 13:57:30 -0700 Subject: [PATCH 03/11] Add tag to built firmware filenames. Rename default env. --- .github/workflows/build-platformio.yml | 16 ++++++++-------- platformio.ini | 6 ++---- 2 files changed, 10 insertions(+), 12 deletions(-) diff --git a/.github/workflows/build-platformio.yml b/.github/workflows/build-platformio.yml index d158d64e..5caf178c 100644 --- a/.github/workflows/build-platformio.yml +++ b/.github/workflows/build-platformio.yml @@ -33,22 +33,22 @@ jobs: python -m pip install --upgrade pip pip install --upgrade platformio - name: Run PlatformIO - run: pio run -e heltec_wifi_lora_32 + run: pio run -e default - name: Create merged binary run: > - python ~/.platformio/packages/tool-esptoolpy/esptool.py --chip esp32 merge_bin -o .pio/build/heltec_wifi_lora_32/firmware-full.bin + python ~/.platformio/packages/tool-esptoolpy/esptool.py --chip esp32 merge_bin -o .pio/build/default/firmware-full.bin 0x1000 ~/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/bin/bootloader_dio_40m.bin - 0x8000 .pio/build/heltec_wifi_lora_32/partitions.bin + 0x8000 .pio/build/default/partitions.bin 0xe000 ~/.platformio/packages/framework-arduinoespressif32/tools/partitions/boot_app0.bin - 0x10000 .pio/build/heltec_wifi_lora_32/firmware.bin + 0x10000 .pio/build/default/firmware.bin - name: Rename binaries run: | - mv .pio/build/heltec_wifi_lora_32/firmware.bin .pio/build/heltec_wifi_lora_32/tinygs-ota.bin - mv .pio/build/heltec_wifi_lora_32/firmware-full.bin .pio/build/heltec_wifi_lora_32/tinygs-full.bin + mv .pio/build/default/firmware.bin .pio/build/default/tinygs-$(git describe --tags --always)-ota.bin + mv .pio/build/default/firmware-full.bin .pio/build/default/tinygs-$(git describe --tags --always)-full.bin - name: Archive build artifacts uses: actions/upload-artifact@v3 with: name: firmware path: | - .pio/build/heltec_wifi_lora_32/tinygs-ota.bin - .pio/build/heltec_wifi_lora_32/tinygs-full.bin + .pio/build/default/tinygs-*-ota.bin + .pio/build/default/tinygs-*-full.bin diff --git a/platformio.ini b/platformio.ini index 1b29e1e5..79615faa 100644 --- a/platformio.ini +++ b/platformio.ini @@ -24,15 +24,13 @@ build_flags = ;upload_protocol = espota ;upload_port = IP_OF_THE_BOARD - - ; NOTE: There is no need to change anything below here, the board is configured through the Web panel ; Only make changes if you know what you are doing -[env:heltec_wifi_lora_32] +[env:default] platform = espressif32 board = heltec_wifi_lora_32 framework = arduino monitor_speed = 115200 upload_speed = 921600 monitor_port = /dev/ttyUSB* -upload_port = /dev/ttyUSB* \ No newline at end of file +upload_port = /dev/ttyUSB* From 7acd353fb2307948108e6b022a481f03b847d727 Mon Sep 17 00:00:00 2001 From: Matthew Kendall Date: Wed, 7 Sep 2022 17:07:22 -0700 Subject: [PATCH 04/11] Explicitly set flash flags in merged binary --- .github/workflows/build-platformio.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/build-platformio.yml b/.github/workflows/build-platformio.yml index 5caf178c..b154d12a 100644 --- a/.github/workflows/build-platformio.yml +++ b/.github/workflows/build-platformio.yml @@ -37,6 +37,7 @@ jobs: - name: Create merged binary run: > python ~/.platformio/packages/tool-esptoolpy/esptool.py --chip esp32 merge_bin -o .pio/build/default/firmware-full.bin + --flash_mode dio --flash_freq 40m --flash_size 4MB 0x1000 ~/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/bin/bootloader_dio_40m.bin 0x8000 .pio/build/default/partitions.bin 0xe000 ~/.platformio/packages/framework-arduinoespressif32/tools/partitions/boot_app0.bin From 865bdc81c2fbc395ca86dfada6209e4e620275fc Mon Sep 17 00:00:00 2001 From: Matthew Kendall Date: Thu, 29 Dec 2022 16:55:29 -0800 Subject: [PATCH 05/11] Fix bootloader filename for framework 3.20006 --- .github/workflows/build-platformio.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build-platformio.yml b/.github/workflows/build-platformio.yml index b154d12a..980ae050 100644 --- a/.github/workflows/build-platformio.yml +++ b/.github/workflows/build-platformio.yml @@ -38,7 +38,7 @@ jobs: run: > python ~/.platformio/packages/tool-esptoolpy/esptool.py --chip esp32 merge_bin -o .pio/build/default/firmware-full.bin --flash_mode dio --flash_freq 40m --flash_size 4MB - 0x1000 ~/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/bin/bootloader_dio_40m.bin + 0x1000 ~/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/bin/bootloader_dio_40m.elf 0x8000 .pio/build/default/partitions.bin 0xe000 ~/.platformio/packages/framework-arduinoespressif32/tools/partitions/boot_app0.bin 0x10000 .pio/build/default/firmware.bin From ae185d13c4c077b029beda64c13b2aebf71ec55b Mon Sep 17 00:00:00 2001 From: Matthew Kendall Date: Thu, 29 Dec 2022 17:41:41 -0800 Subject: [PATCH 06/11] Convert bootloader format from elf to bin --- .github/workflows/build-platformio.yml | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/.github/workflows/build-platformio.yml b/.github/workflows/build-platformio.yml index 980ae050..9f9a8143 100644 --- a/.github/workflows/build-platformio.yml +++ b/.github/workflows/build-platformio.yml @@ -34,11 +34,16 @@ jobs: pip install --upgrade platformio - name: Run PlatformIO run: pio run -e default + - name: Convert bootloader format from elf to bin + run: > + python ~/.platformio/packages/tool-esptoolpy/esptool.py --chip esp32 elf2image + --dont-append-digest + ~/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/bin/bootloader_dio_40m.elf - name: Create merged binary run: > python ~/.platformio/packages/tool-esptoolpy/esptool.py --chip esp32 merge_bin -o .pio/build/default/firmware-full.bin --flash_mode dio --flash_freq 40m --flash_size 4MB - 0x1000 ~/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/bin/bootloader_dio_40m.elf + 0x1000 ~/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/bin/bootloader_dio_40m.bin 0x8000 .pio/build/default/partitions.bin 0xe000 ~/.platformio/packages/framework-arduinoespressif32/tools/partitions/boot_app0.bin 0x10000 .pio/build/default/firmware.bin From 250ad049d8bdb8a0f2e2641dd96e10e56d5d0c70 Mon Sep 17 00:00:00 2001 From: Matthew Kendall Date: Mon, 3 Nov 2025 15:26:24 -0800 Subject: [PATCH 07/11] Fix build name --- .github/workflows/build-platformio.yml | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/.github/workflows/build-platformio.yml b/.github/workflows/build-platformio.yml index 9f9a8143..aa00a25b 100644 --- a/.github/workflows/build-platformio.yml +++ b/.github/workflows/build-platformio.yml @@ -33,7 +33,7 @@ jobs: python -m pip install --upgrade pip pip install --upgrade platformio - name: Run PlatformIO - run: pio run -e default + run: pio run -e ESP32 - name: Convert bootloader format from elf to bin run: > python ~/.platformio/packages/tool-esptoolpy/esptool.py --chip esp32 elf2image @@ -41,20 +41,20 @@ jobs: ~/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/bin/bootloader_dio_40m.elf - name: Create merged binary run: > - python ~/.platformio/packages/tool-esptoolpy/esptool.py --chip esp32 merge_bin -o .pio/build/default/firmware-full.bin + python ~/.platformio/packages/tool-esptoolpy/esptool.py --chip esp32 merge_bin -o .pio/build/ESP32/firmware-full.bin --flash_mode dio --flash_freq 40m --flash_size 4MB 0x1000 ~/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/bin/bootloader_dio_40m.bin - 0x8000 .pio/build/default/partitions.bin + 0x8000 .pio/build/ESP32/partitions.bin 0xe000 ~/.platformio/packages/framework-arduinoespressif32/tools/partitions/boot_app0.bin - 0x10000 .pio/build/default/firmware.bin + 0x10000 .pio/build/ESP32/firmware.bin - name: Rename binaries run: | - mv .pio/build/default/firmware.bin .pio/build/default/tinygs-$(git describe --tags --always)-ota.bin - mv .pio/build/default/firmware-full.bin .pio/build/default/tinygs-$(git describe --tags --always)-full.bin + mv .pio/build/ESP32/firmware.bin .pio/build/ESP32/tinygs-$(git describe --tags --always)-ota.bin + mv .pio/build/ESP32/firmware-full.bin .pio/build/ESP32/tinygs-$(git describe --tags --always)-full.bin - name: Archive build artifacts uses: actions/upload-artifact@v3 with: name: firmware path: | - .pio/build/default/tinygs-*-ota.bin - .pio/build/default/tinygs-*-full.bin + .pio/build/ESP32/tinygs-*-ota.bin + .pio/build/ESP32/tinygs-*-full.bin From 9c06bc01cc36828daa680faf59315292389cbe57 Mon Sep 17 00:00:00 2001 From: Matthew Kendall Date: Mon, 3 Nov 2025 15:31:57 -0800 Subject: [PATCH 08/11] Update upload-artifact action to v4 --- .github/workflows/build-platformio.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build-platformio.yml b/.github/workflows/build-platformio.yml index aa00a25b..c31e7370 100644 --- a/.github/workflows/build-platformio.yml +++ b/.github/workflows/build-platformio.yml @@ -52,7 +52,7 @@ jobs: mv .pio/build/ESP32/firmware.bin .pio/build/ESP32/tinygs-$(git describe --tags --always)-ota.bin mv .pio/build/ESP32/firmware-full.bin .pio/build/ESP32/tinygs-$(git describe --tags --always)-full.bin - name: Archive build artifacts - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: name: firmware path: | From 99a9fd0c9c2534533ea146c2b7f24d96df30a5e9 Mon Sep 17 00:00:00 2001 From: Matthew Kendall Date: Mon, 3 Nov 2025 15:48:07 -0800 Subject: [PATCH 09/11] Fix YAML indentation --- .github/workflows/build-platformio.yml | 95 +++++++++++++------------- 1 file changed, 48 insertions(+), 47 deletions(-) diff --git a/.github/workflows/build-platformio.yml b/.github/workflows/build-platformio.yml index c31e7370..cc98854d 100644 --- a/.github/workflows/build-platformio.yml +++ b/.github/workflows/build-platformio.yml @@ -11,50 +11,51 @@ jobs: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 - - name: Cache pip - uses: actions/cache@v3 - with: - path: ~/.cache/pip - key: ${{ runner.os }}-pip-${{ hashFiles('**/requirements.txt') }} - restore-keys: | - ${{ runner.os }}-pip- - - name: Cache PlatformIO - uses: actions/cache@v3 - with: - path: ~/.platformio - key: ${{ runner.os }}-platformio-${{ hashFiles('**/lockfiles') }} - - 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: Run PlatformIO - run: pio run -e ESP32 - - name: Convert bootloader format from elf to bin - run: > - python ~/.platformio/packages/tool-esptoolpy/esptool.py --chip esp32 elf2image - --dont-append-digest - ~/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/bin/bootloader_dio_40m.elf - - name: Create merged binary - run: > - python ~/.platformio/packages/tool-esptoolpy/esptool.py --chip esp32 merge_bin -o .pio/build/ESP32/firmware-full.bin - --flash_mode dio --flash_freq 40m --flash_size 4MB - 0x1000 ~/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/bin/bootloader_dio_40m.bin - 0x8000 .pio/build/ESP32/partitions.bin - 0xe000 ~/.platformio/packages/framework-arduinoespressif32/tools/partitions/boot_app0.bin - 0x10000 .pio/build/ESP32/firmware.bin - - name: Rename binaries - run: | - mv .pio/build/ESP32/firmware.bin .pio/build/ESP32/tinygs-$(git describe --tags --always)-ota.bin - mv .pio/build/ESP32/firmware-full.bin .pio/build/ESP32/tinygs-$(git describe --tags --always)-full.bin - - name: Archive build artifacts - uses: actions/upload-artifact@v4 - with: - name: firmware - path: | - .pio/build/ESP32/tinygs-*-ota.bin - .pio/build/ESP32/tinygs-*-full.bin + - name: Checkout repository + uses: actions/checkout@v2 + - name: Cache pip + uses: actions/cache@v3 + with: + path: ~/.cache/pip + key: ${{ runner.os }}-pip-${{ hashFiles('**/requirements.txt') }} + restore-keys: | + ${{ runner.os }}-pip- + - name: Cache PlatformIO + uses: actions/cache@v3 + with: + path: ~/.platformio + key: ${{ runner.os }}-platformio-${{ hashFiles('**/lockfiles') }} + - 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: Run PlatformIO + run: pio run -e ESP32 + - name: Convert bootloader format from elf to bin + run: > + python ~/.platformio/packages/tool-esptoolpy/esptool.py --chip esp32 elf2image + --dont-append-digest + ~/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/bin/bootloader_dio_40m.elf + - name: Create merged binary + run: > + python ~/.platformio/packages/tool-esptoolpy/esptool.py --chip esp32 merge_bin -o .pio/build/ESP32/firmware-full.bin + --flash_mode dio --flash_freq 40m --flash_size 4MB + 0x1000 ~/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/bin/bootloader_dio_40m.bin + 0x8000 .pio/build/ESP32/partitions.bin + 0xe000 ~/.platformio/packages/framework-arduinoespressif32/tools/partitions/boot_app0.bin + 0x10000 .pio/build/ESP32/firmware.bin + - name: Rename binaries + run: | + mv .pio/build/ESP32/firmware.bin .pio/build/ESP32/tinygs-$(git describe --tags --always)-ota.bin + mv .pio/build/ESP32/firmware-full.bin .pio/build/ESP32/tinygs-$(git describe --tags --always)-full.bin + - name: Archive build artifacts + uses: actions/upload-artifact@v4 + with: + name: firmware + path: | + .pio/build/ESP32/tinygs-*-ota.bin + .pio/build/ESP32/tinygs-*-full.bin From 8066dcb71becaf089cfcb4142ec9550afe01b5b9 Mon Sep 17 00:00:00 2001 From: Matthew Kendall Date: Mon, 3 Nov 2025 17:12:11 -0800 Subject: [PATCH 10/11] Add matrix to build all environments --- .github/workflows/build-platformio.yml | 41 ++++++++++++++------------ 1 file changed, 22 insertions(+), 19 deletions(-) diff --git a/.github/workflows/build-platformio.yml b/.github/workflows/build-platformio.yml index cc98854d..f2bab418 100644 --- a/.github/workflows/build-platformio.yml +++ b/.github/workflows/build-platformio.yml @@ -10,9 +10,14 @@ jobs: runs-on: ubuntu-latest + strategy: + fail-fast: false + matrix: + env: [ESP32, ESP32-S3, ESP32-S3-USB, ESP32-C3, ESP32-LILYGO_SX1280] + steps: - name: Checkout repository - uses: actions/checkout@v2 + uses: actions/checkout@v4 - name: Cache pip uses: actions/cache@v3 with: @@ -34,28 +39,26 @@ jobs: python -m pip install --upgrade pip pip install --upgrade platformio - name: Run PlatformIO - run: pio run -e ESP32 - - name: Convert bootloader format from elf to bin - run: > - python ~/.platformio/packages/tool-esptoolpy/esptool.py --chip esp32 elf2image - --dont-append-digest - ~/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/bin/bootloader_dio_40m.elf + run: pio run -e ${{ matrix.env }} - name: Create merged binary - run: > - python ~/.platformio/packages/tool-esptoolpy/esptool.py --chip esp32 merge_bin -o .pio/build/ESP32/firmware-full.bin - --flash_mode dio --flash_freq 40m --flash_size 4MB - 0x1000 ~/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/bin/bootloader_dio_40m.bin - 0x8000 .pio/build/ESP32/partitions.bin - 0xe000 ~/.platformio/packages/framework-arduinoespressif32/tools/partitions/boot_app0.bin - 0x10000 .pio/build/ESP32/firmware.bin + run: | + CHIP=esp32 + if [[ "${{ matrix.env }}" == *"S3"* ]]; then CHIP=esp32s3; fi + if [[ "${{ matrix.env }}" == *"C3"* ]]; then CHIP=esp32c3; fi + python ~/.platformio/packages/tool-esptoolpy/esptool.py --chip "$CHIP" merge_bin -o .pio/build/${{ matrix.env }}/firmware-full.bin \ + --flash_mode dio --flash_freq 40m --flash_size 4MB \ + 0x1000 .pio/build/${{ matrix.env }}/bootloader.bin \ + 0x8000 .pio/build/${{ matrix.env }}/partitions.bin \ + 0xe000 ~/.platformio/packages/framework-arduinoespressif32/tools/partitions/boot_app0.bin \ + 0x10000 .pio/build/${{ matrix.env }}/firmware.bin - name: Rename binaries run: | - mv .pio/build/ESP32/firmware.bin .pio/build/ESP32/tinygs-$(git describe --tags --always)-ota.bin - mv .pio/build/ESP32/firmware-full.bin .pio/build/ESP32/tinygs-$(git describe --tags --always)-full.bin + mv .pio/build/${{ matrix.env }}/firmware.bin .pio/build/${{ matrix.env }}/tinygs-${{ matrix.env }}-$(git describe --tags --always)-ota.bin + mv .pio/build/${{ matrix.env }}/firmware-full.bin .pio/build/${{ matrix.env }}/tinygs-${{ matrix.env }}-$(git describe --tags --always)-full.bin - name: Archive build artifacts uses: actions/upload-artifact@v4 with: - name: firmware + name: firmware-${{ matrix.env }} path: | - .pio/build/ESP32/tinygs-*-ota.bin - .pio/build/ESP32/tinygs-*-full.bin + .pio/build/${{ matrix.env }}/tinygs-${{ matrix.env }}-*-ota.bin + .pio/build/${{ matrix.env }}/tinygs-${{ matrix.env }}-*-full.bin From e2032a39fc19c8bcf851541e54773b7419991281 Mon Sep 17 00:00:00 2001 From: Matthew Kendall Date: Sun, 9 Nov 2025 14:53:44 -0800 Subject: [PATCH 11/11] Trigger manually or on release; upload artifacts to that release --- .github/workflows/build-platformio.yml | 46 ++++++++++++++++++++++---- 1 file changed, 39 insertions(+), 7 deletions(-) diff --git a/.github/workflows/build-platformio.yml b/.github/workflows/build-platformio.yml index f2bab418..aa547f64 100644 --- a/.github/workflows/build-platformio.yml +++ b/.github/workflows/build-platformio.yml @@ -1,9 +1,9 @@ name: Build Firmware on: - push: - paths-ignore: - - 'doc/**' + release: + types: [published] + workflow_dispatch: jobs: build: @@ -18,6 +18,8 @@ jobs: steps: - name: Checkout repository uses: actions/checkout@v4 + with: + fetch-depth: 0 - name: Cache pip uses: actions/cache@v3 with: @@ -40,6 +42,15 @@ jobs: pip install --upgrade platformio - name: Run PlatformIO run: pio run -e ${{ matrix.env }} + - name: Determine tag + id: tag + run: | + if [ "${{ github.event_name }}" = "release" ]; then + echo "TAG=${{ github.event.release.tag_name }}" >> $GITHUB_OUTPUT + else + TAG=$(git describe --tags --always) + echo "TAG=$TAG" >> $GITHUB_OUTPUT + fi - name: Create merged binary run: | CHIP=esp32 @@ -53,12 +64,33 @@ jobs: 0x10000 .pio/build/${{ matrix.env }}/firmware.bin - name: Rename binaries run: | - mv .pio/build/${{ matrix.env }}/firmware.bin .pio/build/${{ matrix.env }}/tinygs-${{ matrix.env }}-$(git describe --tags --always)-ota.bin - mv .pio/build/${{ matrix.env }}/firmware-full.bin .pio/build/${{ matrix.env }}/tinygs-${{ matrix.env }}-$(git describe --tags --always)-full.bin + mv .pio/build/${{ matrix.env }}/firmware.bin .pio/build/${{ matrix.env }}/tinygs-${{ matrix.env }}-${{ steps.tag.outputs.TAG }}-ota.bin + mv .pio/build/${{ matrix.env }}/firmware-full.bin .pio/build/${{ matrix.env }}/tinygs-${{ matrix.env }}-${{ steps.tag.outputs.TAG }}-full.bin - name: Archive build artifacts + if: github.event_name == 'workflow_dispatch' uses: actions/upload-artifact@v4 with: name: firmware-${{ matrix.env }} path: | - .pio/build/${{ matrix.env }}/tinygs-${{ matrix.env }}-*-ota.bin - .pio/build/${{ matrix.env }}/tinygs-${{ matrix.env }}-*-full.bin + .pio/build/${{ matrix.env }}/tinygs-${{ matrix.env }}-${{ steps.tag.outputs.TAG }}-ota.bin + .pio/build/${{ matrix.env }}/tinygs-${{ matrix.env }}-${{ steps.tag.outputs.TAG }}-full.bin + - name: Upload OTA firmware to release + if: github.event_name == 'release' + uses: actions/upload-release-asset@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + upload_url: ${{ github.event.release.upload_url }} + asset_path: .pio/build/${{ matrix.env }}/tinygs-${{ matrix.env }}-${{ steps.tag.outputs.TAG }}-ota.bin + asset_name: tinygs-${{ matrix.env }}-${{ steps.tag.outputs.TAG }}-ota.bin + asset_content_type: application/octet-stream + - name: Upload full firmware to release + if: github.event_name == 'release' + uses: actions/upload-release-asset@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + upload_url: ${{ github.event.release.upload_url }} + asset_path: .pio/build/${{ matrix.env }}/tinygs-${{ matrix.env }}-${{ steps.tag.outputs.TAG }}-full.bin + asset_name: tinygs-${{ matrix.env }}-${{ steps.tag.outputs.TAG }}-full.bin + asset_content_type: application/octet-stream