next-windfonts/.forgejo/workflows/README.md
bo.yu 039cc84335
Some checks failed
CI / 代码检查和类型检查 (push) Has been cancelled
CI / 安全扫描 (push) Has been cancelled
Build and Package / 构建并推送 Docker 镜像 (push) Has been cancelled
CI / 构建应用 (push) Has been cancelled
refactor(ci): 重构工作流配置以专注于容器构建
删除不再使用的数据库工作流文件
更新部署工作流以使用 Forgejo Container Registry
简化 README 文档,移除不相关的内容
2025-09-17 17:49:12 +08:00

3.8 KiB

Forgejo Actions 工作流配置

本项目使用 Forgejo Actions 进行 CI/CD 自动化,专注于代码质量检查和 Docker 镜像构建。

工作流文件

1. CI 工作流 (ci.yml)

  • 触发条件: 推送到 maindevelop 分支或创建 Pull Request
  • 功能:
    • 代码风格检查 (yarn lint)
    • TypeScript 类型检查 (yarn typecheck)
    • 应用构建 (yarn build)
    • 安全漏洞扫描 (yarn audit)

2. 构建和打包工作流 (deploy.yml)

  • 触发条件: 推送到 maindevelop 分支、创建标签或 Pull Request
  • 功能:
    • 构建并推送 Docker 镜像到 Forgejo Container Registry
    • 自动生成多种标签格式
    • 支持多架构构建 (linux/amd64, linux/arm64)
    • 生成构建信息摘要

Docker 镜像标签策略

工作流会根据不同的触发条件自动生成相应的标签:

  • 分支推送: main, develop 等分支名
  • 版本标签:
    • v1.2.31.2.3, 1.2, 1
    • latest (仅限 main 分支)
  • Pull Request: pr-123
  • 提交哈希: main-abc1234, develop-def5678

必需的环境变量和密钥

Repository Secrets

在 Forgejo 仓库设置中配置以下密钥:

GITEA_TOKEN=your_forgejo_access_token

获取 Forgejo Access Token:

  1. 登录 Forgejo
  2. 进入 Settings → Applications → Generate New Token
  3. 选择权限:write:packages (用于推送镜像)
  4. 将生成的 Token 添加到仓库 Secrets

Environment Variables

工作流会自动使用以下内置变量:

env:
  REGISTRY: ${{ gitea.server_url }}  # Forgejo 服务器地址
  IMAGE_NAME: ${{ gitea.repository }} # 仓库名称

使用指南

1. 首次设置

  1. 在 Forgejo 仓库设置中添加 GITEA_TOKEN
  2. 确保 Token 有 write:packages 权限
  3. Forgejo Container Registry 会自动启用

2. 日常开发

  • 推送代码到任何分支会触发 CI 检查
  • 推送到 maindevelop 分支会额外触发 Docker 镜像构建
  • 创建 Pull Request 会运行完整的 CI 流程和镜像构建

3. 版本发布

  • 创建版本标签 (如 v1.0.0) 会自动构建并推送对应版本的镜像
  • 支持语义化版本标签,自动生成主版本和次版本标签

镜像使用

构建完成后,可以通过以下方式使用镜像:

# 使用最新版本 (假设 Forgejo 地址为 git.example.com)
docker pull git.example.com/username/next-windfonts:latest

# 使用特定版本
docker pull git.example.com/username/next-windfonts:1.2.3

# 使用分支版本
docker pull git.example.com/username/next-windfonts:main

Forgejo Container Registry 优势

  1. 集成性: 与代码仓库完全集成,无需外部服务
  2. 权限管理: 使用 Forgejo 的用户权限系统
  3. 私有镜像: 支持私有镜像,权限控制更精细
  4. 无额外成本: 不需要 Docker Hub 等外部服务
  5. 网络优化: 在同一服务器上,推送和拉取更快

注意事项

  1. 权限: 确保 GITEA_TOKEN 有足够的权限访问 Container Registry
  2. 存储: Docker 镜像会占用 Forgejo 服务器存储空间
  3. 清理: 建议定期清理旧版本镜像以节省空间
  4. 网络: 构建过程需要访问外网下载依赖

故障排除

常见问题

  1. 镜像推送失败: 检查 GITEA_TOKEN 权限是否包含 write:packages
  2. 构建失败: 检查 Dockerfile 和依赖配置
  3. 标签格式错误: 确保版本标签符合语义化版本规范
  4. Registry 访问失败: 确认 Forgejo Container Registry 功能已启用

调试方法

  1. 查看 Actions 执行日志
  2. 检查 Forgejo Container Registry 状态
  3. 验证 Token 权限配置
  4. 在本地环境测试 Docker 构建

Container Registry 管理

在 Forgejo 中查看和管理镜像:

  1. 进入仓库页面
  2. 点击 "Packages" 标签
  3. 查看所有构建的镜像版本
  4. 可以删除不需要的镜像版本