Files
Telegram-Panel/.github/workflows/docker.yml
meoacgx 7e0c1fecb8 feat(update): 支持 Docker 场景一键更新并接入 Release 更新包
本次版本主要更新:
- 新增应用内一键更新:在系统设置页增加“应用更新(Docker)”,支持检查新版本、匹配当前架构更新包、点击后自动下载并部署。
- 新增自更新服务 AppSelfUpdateService:基于 GitHub Release 读取版本与资产,执行下载、解压、目录切换(app-current/app-previous)并触发程序重启。
- 新增 SelfUpdateOptions 配置:支持开关、工作目录、Docker-only 限制、下载超时与重启延迟等参数化控制。
- Docker 启动链路改造:新增 entrypoint 脚本,容器重启后优先从 /data/app-current 启动更新版本,并统一挂载 /data/logs 与 /data/appsettings.local.json。
- Release 工作流增强:自动发布时同时构建并上传 linux-x64/linux-arm64 zip 资产,为面板内一键更新提供标准下载源。
- CI 触发范围补齐:Docker workflow 监听 docker 目录变更,确保 entrypoint 变更可触发镜像构建验证。
- 更新检查兼容性修复:为 UpdateCheckService 的 GitHub 字段增加 JsonPropertyName 映射,确保 tag/release 信息解析稳定。
- README 补充自动更新文档:新增面板一键更新流程、资产依赖与使用限制说明。
2026-03-03 02:33:19 +08:00

82 lines
2.0 KiB
YAML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
name: Docker Build & Publish
on:
push:
branches:
- main
- dev
tags:
- "v*"
pull_request:
branches:
- main
- dev
paths:
- "Dockerfile"
- "Dockerfile.local"
- "docker/**"
- "docker-compose.yml"
- "src/**"
- ".github/workflows/docker.yml"
workflow_dispatch: {}
permissions:
contents: read
packages: write
concurrency:
group: docker-${{ github.ref }}
cancel-in-progress: true
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Set up QEMU
uses: docker/setup-qemu-action@v3
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
# 仅在非 PR 事件时登录 GHCRPR 不推送镜像)
- name: Log in to GHCR
if: github.event_name != 'pull_request'
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
# 生成镜像标签:
# - main 分支latest + main
# - dev 分支dev + dev-latest
# - tag如 v1.2.3v1.2.3
# - 额外附带短 SHA 标签便于定位
- name: Extract Docker metadata
id: meta
uses: docker/metadata-action@v5
with:
images: ghcr.io/${{ github.repository }}
tags: |
type=ref,event=branch
type=ref,event=tag
type=raw,value=latest,enable={{is_default_branch}}
type=raw,value=dev-latest,enable=${{ github.ref == 'refs/heads/dev' }}
type=sha,prefix=sha-
- name: Build and (optionally) push
uses: docker/build-push-action@v6
with:
context: .
file: ./Dockerfile
platforms: linux/amd64,linux/arm64
push: ${{ github.event_name != 'pull_request' }}
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
cache-from: type=gha
cache-to: type=gha,mode=max