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])