3030 outputs :
3131 version : ${{ steps.release_meta.outputs.version }}
3232 build_env : ${{ steps.release_meta.outputs.build_env }}
33+ electrobun_env : ${{ steps.release_meta.outputs.electrobun_env }}
3334 commit : ${{ steps.release_meta.outputs.commit }}
3435 steps :
3536 - name : Validate version format
@@ -52,14 +53,18 @@ jobs:
5253 run : |
5354 if echo "$VERSION" | grep -q -- '-beta\.'; then
5455 BUILD_ENV="beta"
56+ ELECTROBUN_ENV="canary"
5557 elif echo "$VERSION" | grep -q -- '-rc\.'; then
5658 BUILD_ENV="candidate"
59+ ELECTROBUN_ENV="canary"
5760 else
5861 BUILD_ENV="stable"
62+ ELECTROBUN_ENV="stable"
5963 fi
6064
6165 echo "version=$VERSION" >> "$GITHUB_OUTPUT"
6266 echo "build_env=$BUILD_ENV" >> "$GITHUB_OUTPUT"
67+ echo "electrobun_env=$ELECTROBUN_ENV" >> "$GITHUB_OUTPUT"
6368 echo "commit=$(git rev-parse --short HEAD)" >> "$GITHUB_OUTPUT"
6469
6570 verify :
@@ -120,8 +125,8 @@ jobs:
120125
121126 - name : Build Electrobun app
122127 env :
123- BUILD_ENV : ${{ needs.release-meta.outputs.build_env }}
124- run : bun run build -- --env="$BUILD_ENV "
128+ ELECTROBUN_ENV : ${{ needs.release-meta.outputs.electrobun_env }}
129+ run : bun run build -- --env="$ELECTROBUN_ENV "
125130
126131 - name : Import code signing certificate
127132 env :
@@ -148,12 +153,12 @@ jobs:
148153
149154 - name : Sign and notarize macOS app
150155 env :
151- BUILD_ENV : ${{ needs.release-meta.outputs.build_env }}
156+ ELECTROBUN_ENV : ${{ needs.release-meta.outputs.electrobun_env }}
152157 APPLE_ID : ${{ secrets.APPLE_ID }}
153158 APPLE_TEAM_ID : ${{ secrets.APPLE_TEAM_ID }}
154159 APPLE_APP_PASSWORD : ${{ secrets.APPLE_APP_PASSWORD }}
155160 run : |
156- BUILD_DIR="apps/desktop/build/${BUILD_ENV }-macos-arm64"
161+ BUILD_DIR="apps/desktop/build/${ELECTROBUN_ENV }-macos-arm64"
157162 if [ ! -d "$BUILD_DIR" ]; then
158163 echo "::error::Expected build output in $BUILD_DIR"
159164 find apps/desktop/build -maxdepth 2 -type d || true
@@ -204,8 +209,10 @@ jobs:
204209 env :
205210 VERSION : ${{ needs.release-meta.outputs.version }}
206211 BUILD_ENV : ${{ needs.release-meta.outputs.build_env }}
212+ ELECTROBUN_ENV : ${{ needs.release-meta.outputs.electrobun_env }}
207213 run : |
208214 PREFIX="${BUILD_ENV}-macos-arm64"
215+ SOURCE_PREFIX="${ELECTROBUN_ENV}-macos-arm64"
209216 USER_DMG="Klovi-${VERSION}-macos-arm64.dmg"
210217 STAGING_DIR=$(mktemp -d /tmp/klovi-dmg.XXXXXX)
211218 cp -R "$APP_DIR" "$STAGING_DIR/"
@@ -224,6 +231,27 @@ jobs:
224231 "$ZSTD_PATH" compress -i "$TARBALL_PATH" -o "apps/desktop/artifacts/${PREFIX}-Klovi.app.tar.zst" --threads max --no-timing
225232 rm -f "$TARBALL_PATH"
226233
234+ SOURCE_UPDATE_JSON="apps/desktop/artifacts/${SOURCE_PREFIX}-update.json"
235+ TARGET_UPDATE_JSON="apps/desktop/artifacts/${PREFIX}-update.json"
236+ if [ ! -f "$SOURCE_UPDATE_JSON" ]; then
237+ echo "::error::Expected updater metadata at $SOURCE_UPDATE_JSON"
238+ find apps/desktop/artifacts -maxdepth 1 -type f -print || true
239+ exit 1
240+ fi
241+ if [ "$SOURCE_UPDATE_JSON" != "$TARGET_UPDATE_JSON" ]; then
242+ cp "$SOURCE_UPDATE_JSON" "$TARGET_UPDATE_JSON"
243+ fi
244+
245+ for source_patch in apps/desktop/artifacts/${SOURCE_PREFIX}-*.patch; do
246+ [ -e "$source_patch" ] || continue
247+ source_name=$(basename "$source_patch")
248+ suffix="${source_name#${SOURCE_PREFIX}-}"
249+ target_patch="apps/desktop/artifacts/${PREFIX}-${suffix}"
250+ if [ "$source_patch" != "$target_patch" ]; then
251+ cp "$source_patch" "$target_patch"
252+ fi
253+ done
254+
227255 echo "USER_DMG=$USER_DMG" >> "$GITHUB_ENV"
228256
229257 - name : Upload macOS user-facing asset
@@ -302,21 +330,25 @@ jobs:
302330
303331 - name : Build Electrobun app
304332 env :
305- BUILD_ENV : ${{ needs.release-meta.outputs.build_env }}
306- run : bun run build -- --env="$BUILD_ENV "
333+ ELECTROBUN_ENV : ${{ needs.release-meta.outputs.electrobun_env }}
334+ run : bun run build -- --env="$ELECTROBUN_ENV "
307335
308336 - name : Upload Linux user-facing and updater assets
309337 env :
310338 GH_TOKEN : ${{ github.token }}
311339 VERSION : ${{ needs.release-meta.outputs.version }}
312340 BUILD_ENV : ${{ needs.release-meta.outputs.build_env }}
341+ ELECTROBUN_ENV : ${{ needs.release-meta.outputs.electrobun_env }}
313342 ELECTROBUN_ARCH : ${{ matrix.electrobun_arch }}
314343 ARTIFACT_ARCH : ${{ matrix.artifact_arch }}
315344 run : |
316- PREFIX="${BUILD_ENV}-linux-${ELECTROBUN_ARCH}"
317- INSTALLER=$(find "apps/desktop/build/${PREFIX}" -maxdepth 1 -type f -name '*Setup*.tar.gz' | head -1)
345+ SOURCE_PREFIX="${ELECTROBUN_ENV}-linux-${ELECTROBUN_ARCH}"
346+ TARGET_PREFIX="${BUILD_ENV}-linux-${ELECTROBUN_ARCH}"
347+ SOURCE_BUILD_DIR="apps/desktop/build/${SOURCE_PREFIX}"
348+
349+ INSTALLER=$(find "$SOURCE_BUILD_DIR" -maxdepth 1 -type f -name '*Setup*.tar.gz' | head -1)
318350 if [ -z "$INSTALLER" ]; then
319- echo "::error::Expected installer in apps/desktop/build/${PREFIX} "
351+ echo "::error::Expected installer in $SOURCE_BUILD_DIR "
320352 find apps/desktop/build -maxdepth 2 -type f -name '*.tar.gz' 2>/dev/null || true
321353 exit 1
322354 fi
@@ -325,22 +357,40 @@ jobs:
325357 cp "$INSTALLER" "$USER_ASSET"
326358 gh release upload "$VERSION" "$USER_ASSET" --clobber
327359
328- FULL_BUNDLE=$(find apps/desktop/artifacts -maxdepth 1 -type f -name "${PREFIX }-*.tar.zst" ! -name "${PREFIX }-*Setup*.tar.zst" | head -1)
360+ FULL_BUNDLE=$(find apps/desktop/artifacts -maxdepth 1 -type f -name "${SOURCE_PREFIX }-*.tar.zst" ! -name "${SOURCE_PREFIX }-*Setup*.tar.zst" | head -1)
329361 if [ -z "$FULL_BUNDLE" ]; then
330- echo "::error::Expected updater bundle for ${PREFIX }"
331- find apps/desktop/artifacts -maxdepth 1 -type f -name "${PREFIX }-*" 2>/dev/null || true
362+ echo "::error::Expected updater bundle for ${SOURCE_PREFIX }"
363+ find apps/desktop/artifacts -maxdepth 1 -type f -name "${SOURCE_PREFIX }-*" 2>/dev/null || true
332364 exit 1
333365 fi
334366
335- NORMALIZED_BUNDLE="apps/desktop/artifacts/${PREFIX }-Klovi.tar.zst"
367+ NORMALIZED_BUNDLE="apps/desktop/artifacts/${TARGET_PREFIX }-Klovi.tar.zst"
336368 if [ "$FULL_BUNDLE" != "$NORMALIZED_BUNDLE" ]; then
337369 cp "$FULL_BUNDLE" "$NORMALIZED_BUNDLE"
338370 fi
339371 gh release upload "$VERSION" "$NORMALIZED_BUNDLE" --clobber
340372
341- for file in apps/desktop/artifacts/${PREFIX}-*.patch "apps/desktop/artifacts/${PREFIX}-update.json"; do
342- [ -e "$file" ] || continue
343- gh release upload "$VERSION" "$file" --clobber
373+ SOURCE_UPDATE_JSON="apps/desktop/artifacts/${SOURCE_PREFIX}-update.json"
374+ TARGET_UPDATE_JSON="apps/desktop/artifacts/${TARGET_PREFIX}-update.json"
375+ if [ ! -f "$SOURCE_UPDATE_JSON" ]; then
376+ echo "::error::Expected updater metadata at $SOURCE_UPDATE_JSON"
377+ find apps/desktop/artifacts -maxdepth 1 -type f -print || true
378+ exit 1
379+ fi
380+ if [ "$SOURCE_UPDATE_JSON" != "$TARGET_UPDATE_JSON" ]; then
381+ cp "$SOURCE_UPDATE_JSON" "$TARGET_UPDATE_JSON"
382+ fi
383+ gh release upload "$VERSION" "$TARGET_UPDATE_JSON" --clobber
384+
385+ for source_patch in apps/desktop/artifacts/${SOURCE_PREFIX}-*.patch; do
386+ [ -e "$source_patch" ] || continue
387+ source_name=$(basename "$source_patch")
388+ suffix="${source_name#${SOURCE_PREFIX}-}"
389+ target_patch="apps/desktop/artifacts/${TARGET_PREFIX}-${suffix}"
390+ if [ "$source_patch" != "$target_patch" ]; then
391+ cp "$source_patch" "$target_patch"
392+ fi
393+ gh release upload "$VERSION" "$target_patch" --clobber
344394 done
345395
346396 - name : Install nfpm
@@ -357,7 +407,7 @@ jobs:
357407 BUILD_ENV : ${{ needs.release-meta.outputs.build_env }}
358408 ELECTROBUN_ARCH : ${{ matrix.electrobun_arch }}
359409 ARTIFACT_ARCH : ${{ matrix.artifact_arch }}
360- BUILD_DIR : build/${{ needs.release-meta.outputs.build_env }}-linux-${{ matrix.electrobun_arch }}
410+ BUILD_DIR : build/${{ needs.release-meta.outputs.electrobun_env }}-linux-${{ matrix.electrobun_arch }}
361411 NFPM_ARCH : ${{ matrix.artifact_arch }}
362412 run : |
363413 if [ ! -d "$BUILD_DIR" ]; then
@@ -417,18 +467,20 @@ jobs:
417467
418468 - name : Build Electrobun app
419469 env :
420- BUILD_ENV : ${{ needs.release-meta.outputs.build_env }}
421- run : bun run build -- --env="$BUILD_ENV "
470+ ELECTROBUN_ENV : ${{ needs.release-meta.outputs.electrobun_env }}
471+ run : bun run build -- --env="$ELECTROBUN_ENV "
422472
423473 - name : Upload Windows user-facing and updater assets
424474 shell : bash
425475 env :
426476 GH_TOKEN : ${{ github.token }}
427477 VERSION : ${{ needs.release-meta.outputs.version }}
428478 BUILD_ENV : ${{ needs.release-meta.outputs.build_env }}
479+ ELECTROBUN_ENV : ${{ needs.release-meta.outputs.electrobun_env }}
429480 run : |
430- PREFIX="${BUILD_ENV}-win-x64"
431- BUILD_DIR="apps/desktop/build/${PREFIX}"
481+ SOURCE_PREFIX="${ELECTROBUN_ENV}-win-x64"
482+ TARGET_PREFIX="${BUILD_ENV}-win-x64"
483+ BUILD_DIR="apps/desktop/build/${SOURCE_PREFIX}"
432484
433485 INSTALLER=$(find "$BUILD_DIR" -maxdepth 1 -type f -name '*Setup*.exe' | head -1)
434486 if [ -z "$INSTALLER" ]; then
@@ -441,22 +493,40 @@ jobs:
441493 cp "$INSTALLER" "$USER_ASSET"
442494 gh release upload "$VERSION" "$USER_ASSET" --clobber
443495
444- FULL_BUNDLE=$(find apps/desktop/artifacts -maxdepth 1 -type f -name "${PREFIX }-*.tar.zst" ! -name "${PREFIX }-*Setup*.tar.zst" | head -1)
496+ FULL_BUNDLE=$(find apps/desktop/artifacts -maxdepth 1 -type f -name "${SOURCE_PREFIX }-*.tar.zst" ! -name "${SOURCE_PREFIX }-*Setup*.tar.zst" | head -1)
445497 if [ -z "$FULL_BUNDLE" ]; then
446- echo "::error::Expected updater bundle for ${PREFIX }"
447- find apps/desktop/artifacts -maxdepth 1 -type f -name "${PREFIX }-*" 2>/dev/null || true
498+ echo "::error::Expected updater bundle for ${SOURCE_PREFIX }"
499+ find apps/desktop/artifacts -maxdepth 1 -type f -name "${SOURCE_PREFIX }-*" 2>/dev/null || true
448500 exit 1
449501 fi
450502
451- NORMALIZED_BUNDLE="apps/desktop/artifacts/${PREFIX }-Klovi.tar.zst"
503+ NORMALIZED_BUNDLE="apps/desktop/artifacts/${TARGET_PREFIX }-Klovi.tar.zst"
452504 if [ "$FULL_BUNDLE" != "$NORMALIZED_BUNDLE" ]; then
453505 cp "$FULL_BUNDLE" "$NORMALIZED_BUNDLE"
454506 fi
455507 gh release upload "$VERSION" "$NORMALIZED_BUNDLE" --clobber
456508
457- for file in apps/desktop/artifacts/${PREFIX}-*.patch "apps/desktop/artifacts/${PREFIX}-update.json"; do
458- [ -e "$file" ] || continue
459- gh release upload "$VERSION" "$file" --clobber
509+ SOURCE_UPDATE_JSON="apps/desktop/artifacts/${SOURCE_PREFIX}-update.json"
510+ TARGET_UPDATE_JSON="apps/desktop/artifacts/${TARGET_PREFIX}-update.json"
511+ if [ ! -f "$SOURCE_UPDATE_JSON" ]; then
512+ echo "::error::Expected updater metadata at $SOURCE_UPDATE_JSON"
513+ find apps/desktop/artifacts -maxdepth 1 -type f -print || true
514+ exit 1
515+ fi
516+ if [ "$SOURCE_UPDATE_JSON" != "$TARGET_UPDATE_JSON" ]; then
517+ cp "$SOURCE_UPDATE_JSON" "$TARGET_UPDATE_JSON"
518+ fi
519+ gh release upload "$VERSION" "$TARGET_UPDATE_JSON" --clobber
520+
521+ for source_patch in apps/desktop/artifacts/${SOURCE_PREFIX}-*.patch; do
522+ [ -e "$source_patch" ] || continue
523+ source_name=$(basename "$source_patch")
524+ suffix="${source_name#${SOURCE_PREFIX}-}"
525+ target_patch="apps/desktop/artifacts/${TARGET_PREFIX}-${suffix}"
526+ if [ "$source_patch" != "$target_patch" ]; then
527+ cp "$source_patch" "$target_patch"
528+ fi
529+ gh release upload "$VERSION" "$target_patch" --clobber
460530 done
461531
462532 update-cask :
0 commit comments