Repository navigation
80 lines (70 loc) · 2.79 KB
/
Copy pathrelease.yml
File metadata and controls
80 lines (70 loc) · 2.79 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
# 手动触发的发布打包
#
# 用法:仓库 → Actions → 「发布打包」 → Run workflow → 填版本号 → 运行
# 产物:5 个平台自包含包(RID 命名:win-x64 / linux-x64 / linux-arm64 / osx-x64 / osx-arm64)
# + FlexBot-BuiltInPlugins-<版本>.zip(平台无关,条目带 plugins/ 前缀,WebUI 一次可装多个)
# + SHA256SUMS.txt(校验用)
# 勾选 create_release 时会创建/更新 v<版本> Release,正文取 RELEASE_NOTES.md(替换 <VERSION> 占位)。
name: 发布打包
on:
workflow_dispatch:
inputs:
version:
description: 版本号(用于产物文件名与输出目录)
required: true
default: "1.0.0"
type: string
create_release:
description: 同时创建 GitHub Release 并上传产物(已存在同名 Release 则覆盖附件并更新正文)
required: true
default: true
type: boolean
permissions:
contents: write
concurrency:
group: release-${{ inputs.version }}
cancel-in-progress: false
jobs:
package:
runs-on: ubuntu-latest
env:
VERSION: ${{ inputs.version }}
OUT_DIR: publish/release/${{ inputs.version }}
steps:
- name: 检出代码
uses: actions/checkout@v4
- name: 安装 .NET 10
uses: actions/setup-dotnet@v4
with:
dotnet-version: "10.0.x"
- name: 生成 Release 正文(替换版本占位)
run: sed "s/<VERSION>/$VERSION/g" RELEASE_NOTES.md > "$RUNNER_TEMP/notes.md"
- name: 打包(宿主 5 个平台 + 内置插件包 + 校验文件)
# 用 bash 显式调用:仓库在 Windows 上提交时可能没带上可执行位
run: bash release.sh "$VERSION" "$OUT_DIR"
- name: 列出产物
run: ls -lh "$OUT_DIR"
- name: 上传为 workflow 产物
uses: actions/upload-artifact@v4
with:
name: FlexBot-${{ inputs.version }}
path: |
${{ env.OUT_DIR }}/*.zip
${{ env.OUT_DIR }}/SHA256SUMS.txt
if-no-files-found: error
- name: 创建或更新 Release
if: ${{ inputs.create_release }}
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
set -euo pipefail
ASSETS=("$OUT_DIR"/*.zip "$OUT_DIR/SHA256SUMS.txt")
if gh release view "v$VERSION" >/dev/null 2>&1; then
echo "Release v$VERSION 已存在:覆盖附件 + 更新正文"
gh release upload "v$VERSION" "${ASSETS[@]}" --clobber
gh release edit "v$VERSION" --notes-file "$RUNNER_TEMP/notes.md"
else
gh release create "v$VERSION" --title "FlexBot $VERSION" \
--notes-file "$RUNNER_TEMP/notes.md" "${ASSETS[@]}"
fi
gh release view "v$VERSION" --json url,tagName,assets