@@ -173,7 +173,7 @@ jobs:
173173 echo "DEBUG: BASE_VERSION: $BASE_VERSION, COMMIT_HASH: $COMMIT_HASH"
174174
175175 # 生成簡化的 semver 版本號,符合 MSI 限制
176- # 格式: 0.5.9-123 (只用 run_number,確保能被正式版 0.5.9 更新)
176+ # 格式: 0.5.9-123
177177 RUN_NUMBER=${{ github.run_number }}
178178 STAGING_VERSION="${BASE_VERSION}-${RUN_NUMBER}"
179179
@@ -182,6 +182,14 @@ jobs:
182182 # 更新 Cargo.toml 版本號
183183 sed -i '' "s/^version = .*/version = \"$STAGING_VERSION\"/" src-tauri/Cargo.toml
184184 echo "Updated Cargo.toml version to: $STAGING_VERSION"
185+
186+ # 為 staging 設定檔案命名用的版本號
187+ FILE_VERSION="staging-${BASE_VERSION}-${{ github.run_number }}"
188+ echo "D_FILE_VERSION_ENV=${FILE_VERSION}" >> $GITHUB_ENV
189+ # 保存原始 commit SHA 供 Release Notes 使用
190+ if [ -n "$COMMIT_HASH" ]; then
191+ echo "D_COMMIT_SHA_ENV=${COMMIT_HASH}" >> $GITHUB_ENV
192+ fi
185193
186194 - name : Build macOS Universal App
187195 run : |
@@ -252,9 +260,17 @@ jobs:
252260 fi
253261
254262 # Define final file names
255- FINAL_DMG_BASENAME="${SANITIZED_APP_NAME}_${{ env.D_DISPLAY_VERSION_ENV }}_universal.dmg"
256- FINAL_UPDATER_BASENAME="${SANITIZED_APP_NAME}_${{ env.D_DISPLAY_VERSION_ENV }}_universal.app.tar.gz"
257- FINAL_UPDATER_SIG_BASENAME="${SANITIZED_APP_NAME}_${{ env.D_DISPLAY_VERSION_ENV }}_universal.app.tar.gz.sig"
263+ if [[ -n "${{ env.D_FILE_VERSION_ENV }}" ]]; then
264+ # Staging: 使用簡化版本號
265+ FINAL_DMG_BASENAME="${SANITIZED_APP_NAME}_${{ env.D_FILE_VERSION_ENV }}_universal.dmg"
266+ FINAL_UPDATER_BASENAME="${SANITIZED_APP_NAME}_${{ env.D_FILE_VERSION_ENV }}_universal.app.tar.gz"
267+ FINAL_UPDATER_SIG_BASENAME="${SANITIZED_APP_NAME}_${{ env.D_FILE_VERSION_ENV }}_universal.app.tar.gz.sig"
268+ else
269+ # Release: 保持原邏輯
270+ FINAL_DMG_BASENAME="${SANITIZED_APP_NAME}_${{ env.D_DISPLAY_VERSION_ENV }}_universal.dmg"
271+ FINAL_UPDATER_BASENAME="${SANITIZED_APP_NAME}_${{ env.D_DISPLAY_VERSION_ENV }}_universal.app.tar.gz"
272+ FINAL_UPDATER_SIG_BASENAME="${SANITIZED_APP_NAME}_${{ env.D_DISPLAY_VERSION_ENV }}_universal.app.tar.gz.sig"
273+ fi
258274
259275 # Move files to workspace
260276 echo "Moving $DMG_FILE_FOUND to $FINAL_DMG_BASENAME"
@@ -273,6 +289,7 @@ jobs:
273289 echo "dmg_name_output=${FINAL_DMG_BASENAME}" >> $GITHUB_OUTPUT
274290 echo "updater_archive_output=${FINAL_UPDATER_BASENAME}" >> $GITHUB_OUTPUT
275291 echo "updater_sig_output=${FINAL_UPDATER_SIG_BASENAME}" >> $GITHUB_OUTPUT
292+ echo "commit_sha_output=${{ env.D_COMMIT_SHA_ENV }}" >> $GITHUB_OUTPUT
276293
277294 - name : Upload macOS Artifacts
278295 uses : actions/upload-artifact@v4
@@ -404,7 +421,7 @@ jobs:
404421 Write-Host "DEBUG: BASE_VERSION: $BASE_VERSION, COMMIT_PART: $COMMIT_PART"
405422
406423 # 生成簡化的 semver 版本號,符合 MSI 限制
407- # 格式: 0.5.9-123 (只用 run_number,確保能被正式版 0.5.9 更新)
424+ # 格式: 0.5.9-123
408425 $RUN_NUMBER = "${{ github.run_number }}"
409426 $STAGING_VERSION = "$BASE_VERSION-$RUN_NUMBER"
410427
@@ -416,6 +433,14 @@ jobs:
416433 $cargoContent = $cargoContent -replace '(?m)^version = "[^"]*"', "version = `"$STAGING_VERSION`""
417434 Set-Content "src-tauri\Cargo.toml" -Value $cargoContent -NoNewline
418435 Write-Host "Updated Cargo.toml version to: $STAGING_VERSION"
436+
437+ # 為 staging 設定檔案命名用的版本號
438+ $FILE_VERSION = "staging-$BASE_VERSION-${{ github.run_number }}"
439+ "D_FILE_VERSION_ENV=$FILE_VERSION" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append
440+ # 保存原始 commit SHA 供 Release Notes 使用
441+ if ($COMMIT_PART) {
442+ "D_COMMIT_SHA_ENV=$COMMIT_PART" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append
443+ }
419444
420445 - name : Build Windows App
421446 shell : bash
@@ -454,7 +479,13 @@ jobs:
454479 $msiPath = Get-ChildItem -Path $msiSearchPattern | Select-Object -First 1 -ExpandProperty FullName
455480 if (-not $msiPath) { Write-Error "MSI file not found with pattern: $msiSearchPattern."; exit 1 }
456481
457- $msiName = "${sanitizedAppName}_${{ env.D_DISPLAY_VERSION_ENV }}_x64.msi"
482+ if ($null -ne $env:D_FILE_VERSION_ENV -and $env:D_FILE_VERSION_ENV -ne "") {
483+ # Staging: 使用簡化版本號
484+ $msiName = "${sanitizedAppName}_${{ env.D_FILE_VERSION_ENV }}_x64.msi"
485+ } else {
486+ # Release: 保持原邏輯
487+ $msiName = "${sanitizedAppName}_${{ env.D_DISPLAY_VERSION_ENV }}_x64.msi"
488+ }
458489 $originalSigPath = "$msiPath.sig"
459490 $targetSigName = "$msiName.sig"
460491
@@ -481,6 +512,7 @@ jobs:
481512 Get-ChildItem . | Select-Object Name, Length
482513
483514 "msi_name=$msiName" | Out-File -FilePath $env:GITHUB_OUTPUT -Encoding utf8 -Append
515+ "commit_sha_output=${{ env.D_COMMIT_SHA_ENV }}" | Out-File -FilePath $env:GITHUB_OUTPUT -Encoding utf8 -Append
484516
485517 - name : Upload Windows Artifact
486518 uses : actions/upload-artifact@v4
@@ -605,6 +637,41 @@ jobs:
605637 echo "-----------------------------------------------------------------------------------"
606638 shell : bash
607639
640+ - name : Prepare Build Info for Release Notes
641+ if : env.CR_IS_STAGING == 'true'
642+ run : |
643+ # 從 build outputs 或 display version 獲取 commit SHA
644+ COMMIT_SHA="${{ needs.Build-macos.outputs.commit_sha_output }}"
645+ if [[ -z "$COMMIT_SHA" ]] || [[ "$COMMIT_SHA" == "null" ]]; then
646+ # 從 Windows build 嘗試
647+ COMMIT_SHA="${{ needs.Build-windows.outputs.commit_sha_output }}"
648+ fi
649+ if [[ -z "$COMMIT_SHA" ]] || [[ "$COMMIT_SHA" == "null" ]]; then
650+ # 從 CR_DISPLAY_VERSION 提取 (fallback)
651+ COMMIT_SHA=$(echo "${{ env.CR_DISPLAY_VERSION }}" | sed 's/^staging-[0-9.]*-//')
652+ fi
653+
654+ # 準備構建資訊
655+ BUILD_TIME=$(date -u +"%Y-%m-%d %H:%M:%S UTC")
656+ BASE_VERSION=$(echo "${{ env.CR_DISPLAY_VERSION }}" | sed 's/^staging-//' | cut -d'-' -f1)
657+ BUILD_VERSION="staging-${BASE_VERSION}-${{ github.run_number }}"
658+
659+ # 追加到 Release Notes
660+ {
661+ cat RELEASE_NOTES_DESKTOP.md
662+ echo ""
663+ echo "---"
664+ echo "### 📦 Build Information"
665+ echo "- **Version**: ${BUILD_VERSION}"
666+ echo "- **Commit**: \`${COMMIT_SHA}\`"
667+ echo "- **Build Time**: ${BUILD_TIME}"
668+ echo "- **Build Number**: #${{ github.run_number }}"
669+ } > RELEASE_NOTES_TEMP.md
670+ mv RELEASE_NOTES_TEMP.md RELEASE_NOTES_DESKTOP.md
671+
672+ echo "Updated Release Notes with build information"
673+ cat RELEASE_NOTES_DESKTOP.md
674+
608675 - name : Download all build artifacts
609676 uses : actions/download-artifact@v4
610677 with :
0 commit comments