本次调整: - 将 Release 顶部文案改为“本次版本主要更新”风格,增强可读性。 - 增加部署与更新分节,保留 Docker 拉取命令并明确一键更新入口。 - 更新一键更新路径为“左上角版本号 -> 版本信息弹窗 -> 一键更新并重启”。 - 保留自动 changelog 与更新包资产列表,兼顾摘要与完整变更明细。
117 lines
3.3 KiB
YAML
117 lines
3.3 KiB
YAML
name: Release (Auto Changelog)
|
||
|
||
on:
|
||
push:
|
||
tags:
|
||
- "v*"
|
||
workflow_dispatch:
|
||
inputs:
|
||
tag:
|
||
description: "要发布的 tag(例如 v1.2.3)"
|
||
required: true
|
||
type: string
|
||
|
||
permissions:
|
||
contents: write
|
||
|
||
concurrency:
|
||
group: release-${{ github.ref }}
|
||
cancel-in-progress: false
|
||
|
||
jobs:
|
||
release:
|
||
runs-on: ubuntu-latest
|
||
steps:
|
||
- name: Resolve tag name
|
||
id: vars
|
||
shell: bash
|
||
run: |
|
||
if [[ "${GITHUB_EVENT_NAME}" == "workflow_dispatch" ]]; then
|
||
TAG="${{ inputs.tag }}"
|
||
else
|
||
TAG="${GITHUB_REF_NAME}"
|
||
fi
|
||
echo "tag=${TAG}" >> "$GITHUB_OUTPUT"
|
||
|
||
- name: Checkout source at tag
|
||
uses: actions/checkout@v4
|
||
with:
|
||
ref: ${{ steps.vars.outputs.tag }}
|
||
|
||
- name: Set up .NET
|
||
uses: actions/setup-dotnet@v4
|
||
with:
|
||
dotnet-version: 8.0.x
|
||
|
||
- name: Restore
|
||
run: dotnet restore TelegramPanel.sln
|
||
|
||
- name: Publish Linux update packages
|
||
shell: bash
|
||
run: |
|
||
set -euo pipefail
|
||
dotnet publish src/TelegramPanel.Web/TelegramPanel.Web.csproj \
|
||
-c Release \
|
||
-r linux-x64 \
|
||
--self-contained false \
|
||
-p:UseAppHost=false \
|
||
-o artifacts/linux-x64
|
||
|
||
dotnet publish src/TelegramPanel.Web/TelegramPanel.Web.csproj \
|
||
-c Release \
|
||
-r linux-arm64 \
|
||
--self-contained false \
|
||
-p:UseAppHost=false \
|
||
-o artifacts/linux-arm64
|
||
|
||
- name: Pack release assets
|
||
id: pack
|
||
shell: bash
|
||
run: |
|
||
set -euo pipefail
|
||
TAG="${{ steps.vars.outputs.tag }}"
|
||
mkdir -p dist
|
||
|
||
X64_ZIP="telegram-panel-${TAG}-linux-x64.zip"
|
||
ARM64_ZIP="telegram-panel-${TAG}-linux-arm64.zip"
|
||
|
||
(cd artifacts/linux-x64 && zip -rq "../../dist/${X64_ZIP}" .)
|
||
(cd artifacts/linux-arm64 && zip -rq "../../dist/${ARM64_ZIP}" .)
|
||
|
||
echo "x64=dist/${X64_ZIP}" >> "$GITHUB_OUTPUT"
|
||
echo "arm64=dist/${ARM64_ZIP}" >> "$GITHUB_OUTPUT"
|
||
|
||
- name: Create GitHub Release with auto changelog
|
||
uses: softprops/action-gh-release@v2
|
||
with:
|
||
tag_name: ${{ steps.vars.outputs.tag }}
|
||
generate_release_notes: true
|
||
append_body: true
|
||
prerelease: ${{ contains(steps.vars.outputs.tag, '-') }}
|
||
files: |
|
||
${{ steps.pack.outputs.x64 }}
|
||
${{ steps.pack.outputs.arm64 }}
|
||
body: |
|
||
## 本次版本主要更新
|
||
|
||
> 下方会自动附加完整变更记录(Changelog),这里保留部署与更新入口说明。
|
||
|
||
## 部署与更新
|
||
|
||
### 1. Docker 镜像
|
||
拉取对应 tag 的镜像:
|
||
|
||
```bash
|
||
docker pull ghcr.io/${{ github.repository }}:${{ steps.vars.outputs.tag }}
|
||
```
|
||
|
||
### 2. 面板内一键更新(Docker)
|
||
路径:`左上角版本号 -> 版本信息弹窗 -> 一键更新并重启`
|
||
|
||
## 应用内更新资产
|
||
|
||
- `${{ steps.pack.outputs.x64 }}`
|
||
- `${{ steps.pack.outputs.arm64 }}`
|
||
|
||
> 程序会自动匹配容器架构下载更新包,并部署到 `/data/app-current`。
|