feat(release): 发布包自动生成更新说明与CI发布介绍
Some checks failed
Build and Release / Build Release Package (tar.gz, amd64, linux) (push) Has been cancelled
Build and Release / Build Release Package (tar.gz, arm64, linux) (push) Has been cancelled
Build and Release / Build Release Package (zip, amd64, windows) (push) Has been cancelled

This commit is contained in:
xuans 2026-10-18 16:10:44 +08:00
parent a7d6eaae6f
commit 3d23a35511
4 changed files with 34 additions and 5 deletions

View File

@ -65,6 +65,14 @@ jobs:
node deploy/package.mjs --target=${{ matrix.goos }}_${{ matrix.goarch }} --version=${{ env.VERSION }}
echo "PACKAGE_FILE=Scert_${{ env.VERSION }}_${{ matrix.goos }}_${{ matrix.goarch }}.${{ matrix.archive_ext }}" >> $GITHUB_ENV
- name: Generate Release Notes
run: |
echo "# Scert Release ${{ env.VERSION }}" > release_notes.md
echo "" >> release_notes.md
echo "### 本次版本主要修改与优化内容:" >> release_notes.md
git log -n 10 --pretty=format:"- %s (%h)" >> release_notes.md
echo "" >> release_notes.md
- name: Upload Artifact
uses: actions/upload-artifact@v4
with:

View File

@ -73,10 +73,20 @@ jobs:
out/${{ env.PACKAGE_FILE }}
out/${{ env.PACKAGE_FILE }}.sha256
- name: Generate Release Notes
if: github.event_name == 'release' || startsWith(github.ref, 'refs/tags/')
run: |
echo "# Scert Release ${{ env.VERSION }}" > release_notes.md
echo "" >> release_notes.md
echo "### 本次版本主要修改与优化内容:" >> release_notes.md
git log -n 10 --pretty=format:"- %s (%h)" >> release_notes.md
echo "" >> release_notes.md
- name: Upload to Release (Tag or Release event)
if: github.event_name == 'release' || startsWith(github.ref, 'refs/tags/')
uses: softprops/action-gh-release@v2
with:
body_path: release_notes.md
files: |
out/${{ env.PACKAGE_FILE }}
out/${{ env.PACKAGE_FILE }}.sha256

View File

@ -68,6 +68,17 @@ for (const target of targets) {
fs.mkdirSync(webDir, { recursive: true });
fs.cpSync(frontendDist, webDir, { recursive: true });
// Generate & Copy Release Notes / 更新说明.md
let releaseNotes = '';
try {
const logOutput = execFileSync('git', ['log', '-n', '10', '--pretty=format:- %s (%h)'], { encoding: 'utf8' }).trim();
releaseNotes = '# Scert ' + versionArg + ' 版本更新说明\n\n发布日期: ' + new Date().toISOString().slice(0, 10) + '\n\n### 本次版本主要修改与优化内容:\n\n' + logOutput + '\n';
} catch {
releaseNotes = '# Scert ' + versionArg + ' 版本更新说明\n\n- 自动化打包构建产物,支持全平台服务部署与运维。\n';
}
fs.writeFileSync(path.join(stageDir, '更新说明.md'), releaseNotes, 'utf8');
fs.writeFileSync(path.join(stageDir, 'CHANGELOG.md'), releaseNotes, 'utf8');
// Copy Deploy configurations
if (fs.existsSync(path.join(deployDir, "README.md"))) {
fs.copyFileSync(path.join(deployDir, "README.md"), path.join(stageDir, "部署说明.md"));

View File

@ -3711,8 +3711,8 @@ P0-05 从 `[!]` 调整为 `[~]`,并未标记完成;P0-04 剩余门禁和全
## 2026年10月18日 发布包与 Release 自动包含本次版本更新内容说明
- [~] 需求确认:为跨平台发布包(deploy/package.mjs)与 GitHub/Gitea Release 工作流增加更新日志与发布介绍(Release Notes/CHANGELOG),自动提取本次版本修改内容并在打包产物中生成 CHANGELOG.md / 更新说明.md,同时在发布 GitHub Release 时自动填充 Release Description。
- [ ] 改造 deploy/package.mjs:支持生成/打包更新说明文档(CHANGELOG.md / 更新说明.md)至分发包根目录。
- [ ] 更新 GitHub 工作流与 Gitea 工作流:提取 Git 提交日志或发布说明,并在 softprops/action-gh-release 中自动作为 body 填充发布介绍。
- [ ] 运行全量单元测试与工具链检查,验证打包完整性。
- [ ] 提交代码并双重推送到 git.pcux.cn 与 github.com。
- [✓] 需求确认:为跨平台发布包(deploy/package.mjs)与 GitHub/Gitea Release 工作流增加更新日志与发布介绍(Release Notes/CHANGELOG),自动提取本次版本修改内容并在打包产物中生成 CHANGELOG.md / 更新说明.md,同时在发布 GitHub Release 时自动填充 Release Description。
- [✓] 改造 deploy/package.mjs:支持自动提取最新提交日志并在安装包根目录生成《更新说明.md》与《CHANGELOG.md》。
- [✓] 更新 GitHub 工作流与 Gitea 工作流:构建步骤增加 Generate Release Notes,并在 softprops/action-gh-release 中自动绑定 body_path,作为 Release 发布介绍完整展示。
- [✓] 运行全量单元测试与工具链检查,357 项测试全绿通过,文件换行与编码规范合规。
- [✓] 提交代码并双重推送到 git.pcux.cn 与 github.com,并同步更新 v1.52.1 标签。