actions-template/WORKFLOW.md

4.7 KiB
Raw Blame History

Workflow

本目录包含 Gitea Actions 的自动化工作流示例,展示如何使用 Gitea Actions 实现 CI/CD 自动化。


📂 文件结构

.gitea/workflows/
├── changelog_and_release.yml    # CHANGELOG 生成 + Release 创建
├── update_stats_badge.yaml      # 代码行数的统计
└── ...                          # 更多 workflow 待添加

🧱 运行模型

本模板中的 workflow 采用“Git bare 镜像 + 工作副本”的方案:

  • Git bare 镜像作为共享仓库缓存,负责复用仓库对象,避免大仓库在每次运行时都重新完整拉取
  • 每个 job 都在自己的独立工作副本中执行,避免并发任务之间互相污染工作目录
  • 任务结束后会清理独立工作副本,只保留共享缓存用于后续加速

这个设计的目标是同时兼顾大仓库场景下的同步效率和多 job 并发执行时的隔离性。


🎯 功能列表

已实现

1. 📦 自动发布工作流 (changelog_and_release.yml)

功能:在推送 tag 时自动生成 CHANGELOG 并创建 Release

特性

  • 🏷️ 自动识别语义版本号SemVer
  • 📝 智能生成 CHANGELOG 条目
  • 🔄 支持多个开发版本内容叠加
  • 👥 自动提取贡献者列表
  • 🚀 创建 GitHub/Gitea Release
  • 📎 上传附件到 Release
  • 🏷️ 自动识别 Pre-release 标记

触发方式

git tag 1.0.0
git push origin 1.0.0

文件changelog_and_release.yml

💡 详细配置:查看 changelog_and_release.yml 文件顶部的 env 区域,所有配置项都有详细注释说明


2. 📊 代码统计徽章工作流 (update_stats_badge.yaml)

功能:自动统计代码行数并生成 SVG 徽章与统计报告

特性

  • 📈 统计总代码行数和文件数
  • 🌐 按语言分组统计
  • 🎨 自动生成仓库内自托管的 SVG 徽章
  • 📊stats 分支根目录生成统计报告 README
  • 🚫 灵活的目录排除配置

触发方式

# 推送到主分支时自动触发
git push origin main

# 手动触发
# 仓库 → Actions → Update Code Statistics Badge → Run workflow

配置文件update_stats_badge.yaml

markdown引用格式: ![C++](https://你的gitea/用户名/仓库/raw/branch/stats/badges/cpp-lines.svg)

产物结构

stats
├── README.md
└── badges/
    ├── total-lines.svg
    ├── total-files.svg
    ├── language-count.svg
    └── <language>-lines.svg

💡 详细配置:查看 update_stats_badge.yaml 文件顶部的 env 区域,包含语言分组、颜色、排除目录等配置


🔜 待扩展

更多自动化场景:

  • 🧪 自动测试 - 推送代码时运行单元测试
  • 🏗️ 自动构建 - 构建并发布 Docker 镜像
  • 📊 代码质量 - 运行代码检查和静态分析
  • 🌐 自动部署 - 部署到生产环境
  • 📧 通知集成 - 发送构建结果到 Slack/邮件
  • 🔐 安全扫描 - 依赖漏洞扫描

常见问题

Q1: 如何配置 Token

步骤

  1. Gitea → 设置 → 应用 → 生成新令牌
  2. 权限:勾选 repo
  3. 仓库 → Settings → Actions → Secrets → 添加 Secret
  4. 名称:WORKFLOW,值:你的 Token

💡 提示:一个 Token 即可完成所有操作Git + API


Q2: changelog_and_release 没有触发?

检查清单

  • Workflow 文件在 .gitea/workflows/ 目录
  • 文件名正确(如 changelog_and_release.yml
  • Token 已正确配置Secret 名称为 WORKFLOW
  • Tag 格式正确(数字开头,如 1.0.0
  • Gitea Actions 已启用
  • Runner 正常运行

Q3: changelog_and_release 版本号格式有要求吗?

推荐使用语义化版本号SemVer

✅ 推荐格式:
1.0.0           # 正式版本
1.0.0-beta1     # 预发布版本

❌ 不推荐:
v1.0.0          # 不要使用 v 前缀
1.0.0-b1        # 后缀要完整

详细规范请参考 workflow 文件中的注释说明。


Q4: 如何查看执行日志?

仓库 → Actions → 点击对应的 workflow 运行记录 → 查看详细日志


Q5: Token 权限不足怎么办?

确保 Token 具有以下权限:

  • repo - 完整仓库访问权限
    • 用于读取代码
    • 用于推送提交
    • 用于创建 Release

如果还是失败,尝试重新生成 Token。


🤝 贡献

欢迎提交更多实用的 Workflow 示例!


📄 许可 MIT