Skip to content

Commit 4c6b552

Browse files
author
王澤承-平台發展部-永豐金證券
committed
ci: unify staging version format
因應需求: 1.統一 App 版本與檔案名稱格式,使用簡化的 0.5.9-123 格式 2.在 Release Notes 中記錄 commit SHA 資訊,保持可追溯性 調整項目: 1.github/workflows_sinotrade/desktop.yml。檔案命名邏輯區分 staging 和 release,staging 使用簡化版本號 2.github/workflows_sinotrade/desktop.yml。Release Notes 追加構建資訊區塊,包含版本、commit、時間等
1 parent 5c4c29d commit 4c6b552

File tree

1 file changed

+73
-6
lines changed

1 file changed

+73
-6
lines changed

.github/workflows/desktop.yml

Lines changed: 73 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)