forked from Gitlink/gitlink-cli
4.5 KiB
4.5 KiB
社区运营自动化工作流 — 端到端示例
场景:项目维护者希望自动处理社区的日常运营工作:新 Issue 自动分类、每周生成社区报告、版本发布时自动生成 Release Notes。
前置条件
gitlink-cli已安装并登录(gitlink-cli auth status)- 目标仓库已确认(示例使用
z2_cc/gitlink-cli) jq已安装(用于 JSON 解析)
工作流步骤
Step 1:Issue 自动分拣
# 1.1 获取所有打开的 Issue
gitlink-cli issue +list --owner z2_cc --repo gitlink-cli --state open --format json
输出示例:
{
"ok": true,
"data": [
{"number": 42, "subject": "登录页面报错:500 Internal Server Error", "state": 1},
{"number": 43, "subject": "建议增加导出功能", "state": 1},
{"number": 44, "subject": "README 中缺少安装说明", "state": 1}
]
}
# 1.2 分析 Issue 内容并进行关键词权重评分(AI 驱动)
# Issue #42: "报错"(5) + "500"(0) = 5分 → Bug → 标签: bug
# Issue #43: "建议"(8) + "增加"(5) = 13分 → 功能需求 → 标签: enhancement
# Issue #44: "文档"(10) + "缺少"(4) = 14分 → 文档 → 标签: documentation
# 1.3 获取可用标签列表
gitlink-cli label +list --owner z2_cc --repo gitlink-cli
# 1.4 为 Issue #42 添加标签和分类评论(dry-run 模式)
DRY_RUN=true
if [ "$DRY_RUN" = "true" ]; then
echo "[DRY-RUN] 将为 Issue #42 添加标签: bug"
echo "[DRY-RUN] 将为 Issue #42 添加评论:自动分类结果"
fi
Expected: 所有未分类的 Issue 被分析并建议标签。dry-run 模式下不实际修改。
Step 2:社区周报生成
# 2.1 采集周报数据
gitlink-cli issue +list --owner z2_cc --repo gitlink-cli --state all --format json
gitlink-cli issue +list --owner z2_cc --repo gitlink-cli --state closed --limit 50 --format json
gitlink-cli pr +list --owner z2_cc --repo gitlink-cli --state all --format json
gitlink-cli pr +list --owner z2_cc --repo gitlink-cli --state merged --limit 50 --format json
gitlink-cli commit +list --owner z2_cc --repo gitlink-cli --limit 50
gitlink-cli milestone +list --owner z2_cc --repo gitlink-cli --format json
输出示例(Issue 数据):
{
"ok": true,
"data": {
"total_count": 16,
"issues": [
{"number": 1, "subject": "...", "state": 2, "created_at": "2026-05-20", "closed_at": "2026-05-21"},
{"number": 2, "subject": "...", "state": 1, "created_at": "2026-06-01"}
]
}
}
AI 分析逻辑:
总 Issue = 16(打开 2 + 关闭 14)
关闭率 = 14/16 = 87.5% → 🟢 优秀
平均响应时间 = 计算 closed_at - created_at 的平均天数
近 30 天净变化 = 新增 - 关闭
Step 3:自动 Release Notes
# 3.1 获取最新 Release 确定基线版本
gitlink-cli release +list --owner z2_cc --repo gitlink-cli --format json
输出示例:
{
"ok": true,
"data": [
{"tag_name": "v0.2.0", "name": "v0.2.0", "created_at": "2026-06-17"}
]
}
# 3.2 获取提交历史
git log v0.2.0..HEAD --format="%H|%s|%an|%ad" --date=short
输出示例:
abc1234|feat: 新增 Webhook 投递监控|z2_cc|2026-06-20
abc1235|fix: 修复 Wiki 侧边栏残留|z2_cc|2026-06-22
abc1236|docs: 更新 CLI 帮助文档|z2_cc|2026-06-24
AI 分析结果:
共 3 次提交:feat 1、fix 1、docs 1
涉及 5 个文件,+120/-30 行
推荐版本:v0.3.0(有 feat,无 breaking)
# 3.3 创建 Release(dry-run 模式)
echo "[DRY-RUN] 将创建 Release: v0.3.0"
echo "[DRY-RUN] Release Notes 已生成到 _output/release-notes-v0.3.0.md"
完整命令速览
# Phase 1: Issue Triage
gitlink-cli issue +list --owner z2_cc --repo gitlink-cli --state open --format json
gitlink-cli label +list --owner z2_cc --repo gitlink-cli
# Phase 2: Weekly Report
gitlink-cli issue +list --owner z2_cc --repo gitlink-cli --state all --format json
gitlink-cli pr +list --owner z2_cc --repo gitlink-cli --state all --format json
gitlink-cli commit +list --owner z2_cc --repo gitlink-cli --limit 50
# Phase 3: Release Notes
gitlink-cli release +list --owner z2_cc --repo gitlink-cli --format json
git log <last_tag>..HEAD --format="%H|%s|%an|%ad" --date=short
注意事项
- 所有写操作默认 dry-run,确认后通过
DRY_RUN=false实际执行 - 确保在仓库目录下运行(或显式指定
--owner和--repo) - 周报的数据范围建议明确(如"最近 7 天")