From df1c8a64e5c9be6d34a635c227d00914440a7ad8 Mon Sep 17 00:00:00 2001 From: Woody Date: Sun, 21 Jan 2024 14:56:21 +0100 Subject: [PATCH 1/3] Update GitHub Actions workflow This also adds a WLED_RELEASE_NAME for esp32s3dev_8MB_PSRAM_opi --- .github/workflows/wled-ci.yml | 57 ++++++++++++----------------------- platformio.ini | 2 +- requirements.txt | 8 +++-- 3 files changed, 25 insertions(+), 42 deletions(-) diff --git a/.github/workflows/wled-ci.yml b/.github/workflows/wled-ci.yml index 7d27717dd..a846e71eb 100644 --- a/.github/workflows/wled-ci.yml +++ b/.github/workflows/wled-ci.yml @@ -8,17 +8,11 @@ jobs: name: Gather Environments runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 - - name: Cache pip - uses: actions/cache@v3 + - uses: actions/checkout@v4 + - uses: actions/setup-python@v5 with: - path: ~/.cache/pip - key: ${{ runner.os }}-pip-${{ hashFiles('**/requirements.txt') }} - restore-keys: | - ${{ runner.os }}-pip- - - uses: actions/setup-python@v4 - with: - python-version: '3.9' + python-version: '3.12' + cache: 'pip' - name: Install PlatformIO run: pip install -r requirements.txt - name: Get default environments @@ -38,59 +32,46 @@ jobs: matrix: environment: ${{ fromJSON(needs.get_default_envs.outputs.environments) }} steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Set up Node.js uses: actions/setup-node@v4 with: cache: 'npm' - run: npm install - - 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 + uses: actions/cache@v4 with: - path: ~/.platformio - key: ${{ runner.os }}-${{ hashFiles('**/lockfiles') }} + path: | + ~/.platformio/.cache + ~/.buildcache + build_output + key: pio-${{ runner.os }}-${{ matrix.environment }}-${{ hashFiles('platformio.ini', 'pio-scripts\output_bins.py') }}-${{ hashFiles('wled00/**') }} + restore-keys: pio-${{ runner.os }}-${{ matrix.environment }}-${{ hashFiles('platformio.ini', 'pio-scripts\output_bins.py') }}- - name: Set up Python - uses: actions/setup-python@v4 + uses: actions/setup-python@v5 with: - python-version: '3.9' + python-version: '3.12' + cache: 'pip' - name: Install PlatformIO run: pip install -r requirements.txt - name: Build firmware - env: - WLED_RELEASE: True run: pio run -e ${{ matrix.environment }} - - uses: actions/upload-artifact@v2 + - uses: actions/upload-artifact@v4 with: name: firmware-${{ matrix.environment }} - path: | - build_output/firmware/*.bin - build_output/firmware/*.gz - - uses: actions/upload-artifact@v2 - if: startsWith(github.ref, 'refs/tags/') - with: - name: firmware-release path: build_output/release/*.bin release: name: Create Release runs-on: ubuntu-latest - needs: [get_default_envs, build] + needs: build if: startsWith(github.ref, 'refs/tags/') steps: - - uses: actions/download-artifact@v2 + - uses: actions/download-artifact@v4 with: - name: firmware-release + merge-multiple: true - name: Create draft release uses: softprops/action-gh-release@v1 with: draft: True files: | *.bin - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/platformio.ini b/platformio.ini index 9279f2727..1170e3f69 100644 --- a/platformio.ini +++ b/platformio.ini @@ -523,7 +523,7 @@ platform = ${esp32s3.platform} platform_packages = ${esp32s3.platform_packages} upload_speed = 921600 build_unflags = ${common.build_unflags} -build_flags = ${common.build_flags} ${esp32s3.build_flags} +build_flags = ${common.build_flags} ${esp32s3.build_flags} -D WLED_RELEASE_NAME=ESP32-S3_8MB_PSRAM_opi -D CONFIG_LITTLEFS_FOR_IDF_3_2 -D WLED_WATCHDOG_TIMEOUT=0 ;-D ARDUINO_USB_CDC_ON_BOOT=0 ;; -D ARDUINO_USB_MODE=1 ;; for boards with serial-to-USB chip -D ARDUINO_USB_CDC_ON_BOOT=1 -D ARDUINO_USB_MODE=1 ;; for boards with USB-OTG connector only (USBCDC or "TinyUSB") diff --git a/requirements.txt b/requirements.txt index 17eca159a..3ff702f40 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,6 +1,6 @@ # -# This file is autogenerated by pip-compile with python 3.8 -# To update, run: +# This file is autogenerated by pip-compile with Python 3.12 +# by the following command: # # pip-compile # @@ -21,7 +21,9 @@ click==8.1.3 # platformio # uvicorn colorama==0.4.6 - # via platformio + # via + # click + # platformio h11==0.14.0 # via # uvicorn From b66a038a2fba12c1d2ed676270fbaf75f72aa562 Mon Sep 17 00:00:00 2001 From: Woody Date: Wed, 24 Jan 2024 17:15:06 +0100 Subject: [PATCH 2/3] Change path separator --- .github/workflows/wled-ci.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/wled-ci.yml b/.github/workflows/wled-ci.yml index a846e71eb..9673751e4 100644 --- a/.github/workflows/wled-ci.yml +++ b/.github/workflows/wled-ci.yml @@ -45,8 +45,8 @@ jobs: ~/.platformio/.cache ~/.buildcache build_output - key: pio-${{ runner.os }}-${{ matrix.environment }}-${{ hashFiles('platformio.ini', 'pio-scripts\output_bins.py') }}-${{ hashFiles('wled00/**') }} - restore-keys: pio-${{ runner.os }}-${{ matrix.environment }}-${{ hashFiles('platformio.ini', 'pio-scripts\output_bins.py') }}- + key: pio-${{ runner.os }}-${{ matrix.environment }}-${{ hashFiles('platformio.ini', 'pio-scripts/output_bins.py') }}-${{ hashFiles('wled00/**') }} + restore-keys: pio-${{ runner.os }}-${{ matrix.environment }}-${{ hashFiles('platformio.ini', 'pio-scripts/output_bins.py') }}- - name: Set up Python uses: actions/setup-python@v5 with: From c41c71c8c1a095526d9f78dc42cc6a337c3f8e08 Mon Sep 17 00:00:00 2001 From: Woody Date: Wed, 24 Jan 2024 21:22:54 +0100 Subject: [PATCH 3/3] add bin.gz firmware for ESP02 to artifacs (#4) --- .github/workflows/wled-ci.yml | 5 ++++- pio-scripts/output_bins.py | 22 ++++++++++++++-------- 2 files changed, 18 insertions(+), 9 deletions(-) diff --git a/.github/workflows/wled-ci.yml b/.github/workflows/wled-ci.yml index 9673751e4..c906dc58a 100644 --- a/.github/workflows/wled-ci.yml +++ b/.github/workflows/wled-ci.yml @@ -59,7 +59,9 @@ jobs: - uses: actions/upload-artifact@v4 with: name: firmware-${{ matrix.environment }} - path: build_output/release/*.bin + path: | + build_output/release/*.bin + build_output/release/*_ESP02.bin.gz release: name: Create Release runs-on: ubuntu-latest @@ -75,3 +77,4 @@ jobs: draft: True files: | *.bin + *.bin.gz diff --git a/pio-scripts/output_bins.py b/pio-scripts/output_bins.py index 01223e93d..e12b11c2c 100644 --- a/pio-scripts/output_bins.py +++ b/pio-scripts/output_bins.py @@ -22,6 +22,16 @@ def _create_dirs(dirs=["firmware", "map"]): if not os.path.isdir("{}{}".format(OUTPUT_DIR, d)): os.mkdir("{}{}".format(OUTPUT_DIR, d)) +def create_release(source): + release_name = _get_cpp_define_value(env, "WLED_RELEASE_NAME") + if release_name: + _create_dirs(["release"]) + version = _get_cpp_define_value(env, "WLED_VERSION") + # get file extension of source file (.bin or .bin.gz) + ext = source.split(".", 1)[1] + release_file = "{}release{}WLED_{}_{}.{}".format(OUTPUT_DIR, os.path.sep, version, release_name, ext) + shutil.copy(source, release_file) + def bin_rename_copy(source, target, env): _create_dirs() variant = env["PIOENV"] @@ -30,14 +40,6 @@ def bin_rename_copy(source, target, env): map_file = "{}map{}{}.map".format(OUTPUT_DIR, os.path.sep, variant) bin_file = "{}firmware{}{}.bin".format(OUTPUT_DIR, os.path.sep, variant) - release_name = _get_cpp_define_value(env, "WLED_RELEASE_NAME") - - if release_name: - _create_dirs(["release"]) - version = _get_cpp_define_value(env, "WLED_VERSION") - release_file = "{}release{}WLED_{}_{}.bin".format(OUTPUT_DIR, os.path.sep, version, release_name) - shutil.copy(str(target[0]), release_file) - # check if new target files exist and remove if necessary for f in [map_file, bin_file]: if os.path.isfile(f): @@ -46,6 +48,8 @@ def bin_rename_copy(source, target, env): # copy firmware.bin to firmware/.bin shutil.copy(str(target[0]), bin_file) + create_release(bin_file) + # copy firmware.map to map/.map if os.path.isfile("firmware.map"): shutil.move("firmware.map", map_file) @@ -66,4 +70,6 @@ def bin_gzip(source, target, env): with gzip.open(gzip_file, "wb", compresslevel = 9) as f: shutil.copyfileobj(fp, f) + create_release(gzip_file) + env.AddPostAction("$BUILD_DIR/${PROGNAME}.bin", [bin_rename_copy, bin_gzip])