feat(ci): 基于 v* 标签的多架构自动发版
Release / release (push) Failing after 8s

- 新增 .gitea/workflows/release.yml:推送 v* 标签触发,构建前端嵌入后
  交叉编译 linux/darwin(amd64+arm64),生成变更日志并创建 Gitea Release
- 新增 scripts/build-release.sh:make dist 与 CI 共用的产物构建脚本,
  tar.gz 打包 + SHA256SUMS;不含 windows(internal/store 依赖 Unix Umask)
- Makefile 增加 dist 目标;版本注入沿用 git describe + ldflags(pn version)
This commit is contained in:
2026-09-09 22:46:12 +08:00
parent 92d89717c5
commit ad4a87fc9f
5 changed files with 147 additions and 1 deletions
+66
View File
@@ -0,0 +1,66 @@
# 发版工作流:推送 v* 标签 → 构建前端并嵌入 → 交叉编译多平台二进制
# → 生成发布说明 → 创建 Gitea Release 并上传全部产物。
#
# 发版操作:
# git tag -a v0.0.1 -m "v0.0.1"
# git push origin v0.0.1
name: Release
on:
push:
tags:
- 'v*'
permissions:
contents: write
jobs:
release:
runs-on: ubuntu-latest
steps:
# 完整历史:供 git log 生成上一个 tag 以来的变更日志
- name: 检出代码
uses: https://gitea.com/actions/checkout@v4
with:
fetch-depth: 0
- name: 安装 Go(版本取自 go.mod)
uses: https://gitea.com/actions/setup-go@v5
with:
go-version-file: go.mod
- name: 安装 Node
uses: https://gitea.com/actions/setup-node@v4
with:
node-version: 24
- name: 构建前端并嵌入(web/dist → internal/webui/dist)
run: make web sync-assets
- name: 交叉编译发布产物
run: scripts/build-release.sh "${GITEA_REF_NAME}"
# 首个 tag 无上一版本,变更日志段自动省略
- name: 生成发布说明
run: |
prev=$(git describe --tags --abbrev=0 "${GITEA_SHA}^" 2>/dev/null || true)
{
echo "## pn ${GITEA_REF_NAME}"
echo
echo "- commit: \`${GITEA_SHA}\`"
echo "- 构建时间: $(date -u '+%Y-%m-%dT%H:%M:%SZ')"
if [ -n "$prev" ]; then
echo
echo "### 自 ${prev} 以来的变更"
echo
git log --oneline --no-decorate "${prev}..${GITEA_SHA}" | sed 's/^/- /'
fi
} > release-notes.md
cat release-notes.md
- name: 创建 Release 并上传产物
uses: https://gitea.com/actions/release-action@main
with:
files: |-
dist/*
body_path: release-notes.md