forked from Gitlink/gitlink-cli
5.7 KiB
5.7 KiB
Workflow: Multi-Repo Collaboration(多仓库协同)
前置条件: 先阅读
../../gitlink-shared/SKILL.md了解认证、全局参数和安全规则。 AI Agent 工作流:此工作流专为 AI Agent 设计,用于跨仓库协同管理。
AI Agent 自动汇总组织下所有仓库的 Issue、PR、Release 状态,生成可视化 Dashboard,支持协同发版。
工作流概述
Multi-Repo Collaboration 工作流通过遍历组织下的所有仓库,收集各仓库的 Issue、PR、Release 数据,生成统一的状态 Dashboard,并支持跨仓库协同发版。
适用场景
- 状态总览:查看组织下所有仓库的健康状态
- 跨仓库追踪:追踪跨仓库的 Issue 和 PR
- 协同发版:多个仓库同时发布同一版本
- 团队协调:协调团队在多个项目间的工作
触发词
- "多仓库" / "multi repo"
- "协同" / "collaboration"
- "dashboard" / "看板"
- "组织仓库" / "org repos"
参数
| 参数 | 必填 | 说明 |
|---|---|---|
--org |
是 | 组织名称 |
--repos |
否 | 指定仓库列表(逗号分隔),默认遍历所有仓库 |
--release |
否 | 协同发版的版本号 |
--output |
否 | Dashboard 输出文件(默认 dashboard.html) |
工作流步骤
步骤 1:列出组织仓库
# 获取组织下所有仓库
gitlink-cli repo +list --user {ORG} --limit 100 --format json
提取仓库列表:.data.projects[] 或 .data[],字段:.name 或 .identifier
步骤 2:收集各仓库数据
遍历每个仓库,收集 Issue、PR、Release 数据:
# Open Issues
gitlink-cli issue +list --owner {ORG} --repo {REPO} --state open --limit 50 --format json
# Closed Issues
gitlink-cli issue +list --owner {ORG} --repo {REPO} --state closed --limit 50 --format json
# Open PRs
gitlink-cli pr +list --owner {ORG} --repo {REPO} --state open --limit 50 --format json
# Merged PRs
gitlink-cli pr +list --owner {ORG} --repo {REPO} --state merged --limit 50 --format json
# Latest Release
gitlink-cli release +list --owner {ORG} --repo {REPO} --limit 1 --format json
步骤 3:生成 Dashboard
Dashboard 包含:
- 汇总卡片:总仓库数、Open Issues、Open PRs、总活动量
- 仓库状态表:每个仓库的 Issue/PR/Release 状态和健康度
健康度判断:
- Open Issues <= 10 → Healthy(绿色)
- Open Issues 11-20 → Moderate(橙色)
- Open Issues > 20 → Needs Attention(红色)
步骤 4:协同发版(可选)
如果指定了 --release 参数,为所有仓库创建 Release:
gitlink-cli release +create \
--owner {ORG} \
--repo {REPO} \
--tag {VERSION} \
--name "Release {VERSION}" \
--body "Coordinated release {VERSION} for {REPO}"
数据提取
Issue 数量
# Open Issues 数量
OPEN_COUNT=$(gitlink-cli issue +list --owner {ORG} --repo {REPO} --state open --limit 50 --format json | jq '.data.issues | length')
# Closed Issues 数量
CLOSED_COUNT=$(gitlink-cli issue +list --owner {ORG} --repo {REPO} --state closed --limit 50 --format json | jq '.data.issues | length')
PR 数量
# Open PRs 数量
OPEN_PRS=$(gitlink-cli pr +list --owner {ORG} --repo {REPO} --state open --limit 50 --format json | jq '.data.issues | length')
# Merged PRs 数量
MERGED_PRS=$(gitlink-cli pr +list --owner {ORG} --repo {REPO} --state merged --limit 50 --format json | jq '.data.issues | length')
Release 状态
# 最新 Release
LATEST_RELEASE=$(gitlink-cli release +list --owner {ORG} --repo {REPO} --limit 1 --format json | jq -r '.data.releases[0].tag_name // "none"')
输出示例
Dashboard HTML
<!DOCTYPE html>
<html>
<head>
<title>Multi-Repo Collaboration Dashboard</title>
<style>
/* 样式定义 */
</style>
</head>
<body>
<h1>Multi-Repo Collaboration Dashboard</h1>
<div class="summary">
<div class="card">Total Repos: 10</div>
<div class="card">Open Issues: 45</div>
<div class="card">Open PRs: 12</div>
<div class="card">Total Activity: 156</div>
</div>
<table>
<thead>
<tr>
<th>Repository</th>
<th>Open Issues</th>
<th>Closed Issues</th>
<th>Open PRs</th>
<th>Merged PRs</th>
<th>Latest Release</th>
<th>Health</th>
</tr>
</thead>
<tbody>
<!-- 仓库状态行 -->
</tbody>
</table>
</body>
</html>
控制台输出
====== Multi-Repo Collaboration Dashboard ======
[STEP] Fetching repositories for org: myorg...
[ OK] Found 10 repositories
[STEP] Processing repo1...
[ OK] repo1 : Issues(open:5 closed:12) PRs(open:2 merged:8) Release:v1.2.0
[STEP] Processing repo2...
[ OK] repo2 : Issues(open:15 closed:20) PRs(open:5 merged:15) Release:v2.0.0
====== Generating Dashboard ======
[ OK] Dashboard saved to: dashboard.html
====== Multi-Repo Dashboard Complete ======
Repos processed: 10
Total issues: 156 (open: 45)
Total PRs: 89 (open: 12)
Dashboard: dashboard.html
注意事项
- 大量仓库时注意 API 限流,建议添加延时
- Release 状态可能需要二次验证(GitLink API bug)
- Dashboard HTML 文件可以用浏览器打开查看
- 协同发版前建议先预览各仓库状态
References
- gitlink-repo — 仓库操作
- gitlink-issue — Issue 操作
- gitlink-pr — PR 操作
- gitlink-release — Release 操作
- gitlink-org — 组织管理