GitHub Actions 工作流说明
本目录包含所有 GitHub Actions 自动化工作流配置。
📋 工作流列表
1. 🐳 Build and Push Docker Image (build-docker.yml)
用途:构建多架构 Docker 镜像并推送到 GitHub Container Registry
触发条件:
- 推送以
v开头的版本标签(如v1.0.0) - 手动触发
功能:
- 构建支持
linux/amd64和linux/arm64的多架构镜像 - 推送到
ghcr.io/<username>/imagine-server - 自动生成多个标签:
v1.2.3- 完整版本号1.2- 主次版本号1- 主版本号latest- 最新版本(仅正式版本)
- 使用 GitHub Actions 缓存加速构建
- 生成构建证明(attestation)
所需权限:
contents: read- 读取仓库内容packages: write- 推送到 GHCR
使用的 Secrets:
GITHUB_TOKEN- 自动提供,无需配置
2. ☁️ Deploy to Cloudflare Workers (deploy-cloudflare.yml)
用途:自动部署到 Cloudflare Workers
触发条件:
- 推送以
v开头的版本标签(如v1.0.0) - 手动触发
功能:
- 安装依赖(pnpm)
- 构建 TypeScript 项目
- 部署到 Cloudflare Workers
- 自动设置环境变量和 Secrets
所需 Secrets:
CLOUDFLARE_API_TOKEN- Cloudflare API TokenCLOUDFLARE_ACCOUNT_ID- Cloudflare Account IDAPI_TOKEN- 应用 API 访问令牌HUGGINGFACE_TOKENS- Hugging Face API TokensGITEE_TOKENS- Gitee AI API TokensMODELSCOPE_TOKENS- ModelScope API Tokens
前置要求:
- 在
wrangler.toml中配置 KV Namespace IDs
3. ▲ Deploy to Vercel (deploy-vercel.yml)
用途:自动部署到 Vercel
触发条件:
- 推送以
v开头的版本标签(如v1.0.0) - 手动触发
功能:
- 安装依赖(pnpm)
- 构建 TypeScript 项目
- 部署到 Vercel 生产环境
所需 Secrets:
VERCEL_TOKEN- Vercel API TokenVERCEL_ORG_ID- Vercel Organization IDVERCEL_PROJECT_ID- Vercel Project ID
前置要求:
- 在 Vercel Dashboard 中配置环境变量
4. 📚 Deploy VitePress site to Pages (deploy-docs.yml)
用途:构建并部署文档站点到 GitHub Pages
触发条件:
- 推送到
main分支 - 手动触发
功能:
- 构建 VitePress 文档站点
- 部署到 GitHub Pages
所需权限:
contents: read- 读取仓库内容pages: write- 写入 GitHub Pagesid-token: write- 生成部署令牌
所需 Secrets:
- 无(使用
GITHUB_TOKEN)
前置要求:
- 在仓库设置中启用 GitHub Pages
- 设置 Source 为 "GitHub Actions"
5. 🔍 Check Deployment Secrets (check-secrets.yml)
用途:验证部署所需的 Secrets 是否正确配置
触发条件:
- 仅手动触发
功能:
- 检查 Cloudflare 相关 Secrets
- 检查 Vercel 相关 Secrets
- 检查应用配置 Secrets
- 提供清晰的检查结果
使用方法:
- 进入 Actions 标签页
- 选择 Check Deployment Secrets
- 点击 Run workflow
- 查看运行结果
🚀 使用指南
发布新版本
bash
# 方法 1: 使用发布脚本(推荐)
./scripts/release.sh 1.0.0
# 方法 2: 手动创建标签
git tag v1.0.0
git push origin v1.0.0推送标签后,以下工作流会自动运行:
- Build and Push Docker Image
- Deploy to Cloudflare Workers
- Deploy to Vercel
手动触发部署
- 进入 GitHub 仓库的 Actions 标签页
- 选择要运行的工作流
- 点击 Run workflow
- 选择分支(通常是
main) - 点击 Run workflow 按钮
查看部署状态
- 进入 Actions 标签页
- 查看最近的工作流运行
- 点击工作流查看详细日志
- 绿色勾号表示成功,红色叉号表示失败
验证 Secrets 配置
bash
# 在 Actions 标签页手动运行
Check Deployment Secrets查看输出,确认所有必需的 Secrets 都已设置。
🔧 配置指南
首次配置
配置 GitHub Secrets
- 进入 Settings → Secrets and variables → Actions
- 添加所需的 Secrets(参考各工作流说明)
配置 Cloudflare
- 创建 KV Namespaces
- 更新
wrangler.toml
配置 Vercel
- 创建项目
- 配置环境变量
- 获取 Organization ID 和 Project ID
启用 GitHub Pages
- 进入 Settings → Pages
- Source 选择 "GitHub Actions"
验证配置
- 运行 Check Deployment Secrets 工作流
- 手动触发一次部署测试
详细配置步骤请查看:
📊 工作流依赖关系
版本标签推送 (v1.0.0)
├── Build and Push Docker Image
│ └── 推送到 ghcr.io
├── Deploy to Cloudflare Workers
│ └── 部署到 Cloudflare
└── Deploy to Vercel
└── 部署到 Vercel
代码推送到 main 分支
└── Deploy VitePress site to Pages
└── 部署文档到 GitHub Pages🐛 故障排查
Docker 构建失败
可能原因:
- Dockerfile 语法错误
- 依赖安装失败
- 构建超时
解决方法:
- 检查
docker/Dockerfile语法 - 本地测试构建:
docker build -f docker/Dockerfile . - 查看 Actions 日志获取详细错误信息
Cloudflare 部署失败
可能原因:
- API Token 无效或权限不足
- Account ID 错误
- KV Namespace 未配置
解决方法:
- 验证
CLOUDFLARE_API_TOKEN和CLOUDFLARE_ACCOUNT_ID - 检查
wrangler.toml中的 KV Namespace IDs - 本地测试:
pnpm run wrangler:deploy
Vercel 部署失败
可能原因:
- Token 无效
- Organization ID 或 Project ID 错误
- 环境变量未配置
解决方法:
- 验证
VERCEL_TOKEN、VERCEL_ORG_ID、VERCEL_PROJECT_ID - 检查 Vercel Dashboard 中的环境变量
- 本地测试:
pnpm run vercel:deploy
Secrets 未设置
解决方法:
- 运行 Check Deployment Secrets 工作流
- 根据输出添加缺失的 Secrets
- 重新触发失败的工作流
📚 相关文档
🔐 安全注意事项
- 不要在工作流文件中硬编码敏感信息
- 使用 GitHub Secrets 管理所有敏感数据
- 定期轮换 API Tokens
- 使用最小权限原则配置 Tokens
- 审查工作流日志,确保没有泄露敏感信息
- 不要在公开仓库中暴露私有配置
💡 最佳实践
- 版本标签:使用语义化版本(v1.0.0)
- 测试后发布:确保本地测试通过后再推送标签
- 监控部署:推送标签后检查 Actions 运行状态
- 保持文档更新:更新 CHANGELOG 和相关文档
- 使用发布脚本:使用
scripts/release.sh自动化发布流程 - 验证部署:部署后测试关键功能
- 准备回滚:了解如何快速回滚到之前的版本
🆘 获取帮助
如果遇到问题:
- 查看 故障排查 部分
- 检查 Actions 日志获取详细错误信息
- 查阅相关文档
- 在 GitHub Issues 中提问
- 查看 GitHub Actions 官方文档
最后更新:2025-12-30
🆕 新增工作流
Create GitHub Release
文件:.github/workflows/create-release.yml
自动从 docs/CHANGELOG.md 提取发布说明并创建 GitHub Release。
触发条件:
- 推送以
v开头的版本标签 - 手动触发
功能:
- 自动读取 CHANGELOG.md 中对应版本的更新内容
- 创建 GitHub Release
- 设置 Release 标题和描述
使用方法:
确保 docs/CHANGELOG.md 遵循 Keep a Changelog 格式:
markdown
## [1.0.0] - 2025-12-30
### Added
- 新功能 A
- 新功能 B
### Changed
- 改进 C
### Fixed
- 修复 D推送标签后自动创建 Release:
bash
git tag v1.0.0
git push origin v1.0.0📦 本地打包
除了 GitHub Actions 自动构建,你也可以在本地创建发布包:
bash
# 构建发布包
pnpm run package
# 生成的文件
# - release/ 目录包含所有文件
# - imagine-server-v{version}-{platform}-{arch}.tar.gz 或 .zip本地打包脚本会:
- 构建 TypeScript 代码
- 安装生产依赖
- 复制必要文件
- 创建启动脚本
- 生成压缩包
测试发布包:
bash
cd release
cp .env.example .env
# 编辑 .env
./start.sh # 或 start.bat (Windows)🔄 完整的发布流程
推送版本标签后,以下工作流会自动运行:
推送版本标签 (v1.0.0)
│
├─→ Create GitHub Release
│ └─ 从 CHANGELOG.md 创建 Release
│
├─→ Build Release Assets
│ ├─ 构建 Linux x64 包
│ ├─ 构建 Linux arm64 包
│ ├─ 构建 macOS x64 包
│ ├─ 构建 macOS arm64 包
│ ├─ 构建 Windows x64 包
│ └─ 上传到 GitHub Release
│
├─→ Build and Push Docker Image
│ └─ 推送到 ghcr.io
│
├─→ Deploy to Cloudflare Workers
│ └─ 部署到 Cloudflare
│
└─→ Deploy to Vercel
└─ 部署到 Vercel所有工作流并行运行,互不影响。
最后更新:2025-12-30