mirror of
https://github.com/dream-pep/koring-launcher.git
synced 2026-09-12 05:45:18 +08:00
ci(release): 重构发布流水线,新增中文发布说明脚本,更新文档
重构GitHub Actions发布流水线: - 改为手动触发,支持beta测试和正式发布两种模式 - 自动基于UTC时刻生成BUILD ID作为版本后缀 - 拆分打包签名与发布步骤,新增中文发布说明生成逻辑 新增scripts/release-notes.ps1脚本,用于生成带提交记录的中文发布说明 更新docs/auto-update-plan.md文档,适配新的发布流程并新增对应章节
This commit is contained in:
@@ -0,0 +1,75 @@
|
||||
# Koring Launcher 中文 Release 发布说明生成器
|
||||
#
|
||||
# 用法(GitHub Actions 中调用):
|
||||
# ./scripts/release-notes.ps1 -BaseVersion "1.2.0" -FullVersion "1.2.0-2608280224" -Mode "beta" -OutputPath release-notes.md
|
||||
#
|
||||
# 输出(Markdown,UTF-8):
|
||||
# # Koring Launcher Releases {BaseVersion}
|
||||
# ## 版本信息
|
||||
# 当前版本 {FullVersion}
|
||||
# 编译状态:BETA / RUN
|
||||
# ## 更新了什么内容
|
||||
# <details><summary>·Commit 1cf906d</summary>提交说明…</details>(默认折叠)
|
||||
|
||||
param(
|
||||
[Parameter(Mandatory = $true)][string] $BaseVersion,
|
||||
[Parameter(Mandatory = $true)][string] $FullVersion,
|
||||
[Parameter(Mandatory = $true)][string] $Mode,
|
||||
[string] $OutputPath = "release-notes.md"
|
||||
)
|
||||
|
||||
$status = if ($Mode -eq 'beta') { 'BETA' } else { 'RUN' }
|
||||
|
||||
$rec = [char]0x1e # 记录分隔符(每个 commit 一条)
|
||||
$sep = [char]0x1f # 字段分隔符(hash / subject / body)
|
||||
$format = "%x1f%H%x1f%s%x1f%b%x1e"
|
||||
|
||||
# 自上个 release tag(v*)以来的提交;无 tag 则取全部提交
|
||||
$lastTag = git tag --sort=-version:refname 2>$null | Where-Object { $_ -match '^v' } | Select-Object -First 1
|
||||
if ($lastTag) {
|
||||
Write-Host "Commits since tag: $lastTag"
|
||||
$raw = git log --format=$format "$lastTag..HEAD"
|
||||
} else {
|
||||
Write-Host "No release tags found, listing all commits"
|
||||
$raw = git log --format=$format "HEAD"
|
||||
}
|
||||
|
||||
$blocks = @()
|
||||
foreach ($record in ($raw -split [regex]::Escape($rec))) {
|
||||
if (-not $record) { continue }
|
||||
$parts = $record -split [regex]::Escape($sep)
|
||||
if ($parts.Length -lt 4) { continue }
|
||||
$hash = $parts[1].Trim()
|
||||
$subject = $parts[2].Trim()
|
||||
$body = $parts[3].Trim()
|
||||
if (-not $hash) { continue }
|
||||
|
||||
$short = $hash.Substring(0, [Math]::Min(7, $hash.Length))
|
||||
$inner = $subject
|
||||
if ($body) { $inner += "`n`n$body" }
|
||||
|
||||
$blocks += @"
|
||||
<details>
|
||||
<summary>·Commit $short</summary>
|
||||
|
||||
$inner
|
||||
|
||||
</details>
|
||||
"@
|
||||
}
|
||||
|
||||
$commitsSection = if ($blocks.Count -gt 0) { $blocks -join "`n`n" } else { '· 无提交记录' }
|
||||
|
||||
$content = @"
|
||||
# Koring Launcher Releases $BaseVersion
|
||||
|
||||
## 版本信息
|
||||
当前版本 $FullVersion
|
||||
编译状态:$status
|
||||
|
||||
## 更新了什么内容
|
||||
$commitsSection
|
||||
"@
|
||||
|
||||
[System.IO.File]::WriteAllText($OutputPath, $content, [System.Text.UTF8Encoding]::new($false))
|
||||
Write-Host "Release notes written to $OutputPath ($($blocks.Count) commits)"
|
||||
Reference in New Issue
Block a user