vault: rewrite Billo workflow - merge PR review + merge into single flow
This commit is contained in:
@@ -9,7 +9,7 @@ source: "C:/Users/yaoji/git/Billo/release-workflow/SKILL.md"
|
|||||||
|
|
||||||
## 概述
|
## 概述
|
||||||
|
|
||||||
基于 Azure DevOps + Jira + Slack 的半自动化发布和 PR review 工作流。通过告知 Claude PR 链接或指令触发,自动执行 Jira 状态变更、PR merge、release notes 生成、Slack 通知等操作。
|
基于 Azure DevOps + Jira + Slack 的半自动化发布和 PR review 工作流。通过告知 Claude PR 链接或指令触发,自动执行 code review、Jira 状态变更、PR merge、release notes 生成、Slack 通知等操作。
|
||||||
|
|
||||||
## 工具栈
|
## 工具栈
|
||||||
|
|
||||||
@@ -51,11 +51,11 @@ TICKET_ID=$(echo "$BRANCH" | sed -E 's#[^/]+/([A-Z]+-[0-9]+)_.*#\1#')
|
|||||||
|
|
||||||
```
|
```
|
||||||
Dev in Progress
|
Dev in Progress
|
||||||
↓ (PR 提交 review)
|
↓ (PR 给 Claude review)
|
||||||
code review
|
code review
|
||||||
↓ (review 有 comment)
|
↓ (review 有 comment → REQUEST CHANGES)
|
||||||
Code review comment
|
Code review comment
|
||||||
↓ (review 通过,PR merge to develop)
|
↓ (review 通过 → 用户确认 merge)
|
||||||
Ready for stage (2)
|
Ready for stage (2)
|
||||||
↓ (release PR merge to main)
|
↓ (release PR merge to main)
|
||||||
Done
|
Done
|
||||||
@@ -63,37 +63,50 @@ Done
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 工作流一:PR Merge 到 develop
|
## 触发关键词速查
|
||||||
|
|
||||||
**触发**:给 Claude PR 链接(approve + merge 场景)
|
| 你说的 | Claude 执行 |
|
||||||
|
|--------|------------|
|
||||||
|
| PR 链接 | 工作流一+四(review → 你确认 → merge + Jira + staging)|
|
||||||
|
| `"准备 release"` | 工作流二:创建 release PR |
|
||||||
|
| `"release PR merged"` | 工作流三:Jira Done + Slack + 归档 |
|
||||||
|
|
||||||
**执行步骤**:
|
---
|
||||||
1. 解析 PR URL → 提取 repo 名、PR ID
|
|
||||||
2. 获取 branch 名 → 提取 ticket ID
|
|
||||||
3. Merge PR(`az repos pr update --status completed`)
|
|
||||||
4. 移动 Jira ticket → `Ready for stage (2)`
|
|
||||||
5. 在 Jira ticket 上记录 PR remote link
|
|
||||||
6. 计算版本号(从 `releases/` 目录最新版本 patch +1,首次为 `v1.0.0`)
|
|
||||||
7. 追加 ticket 信息到 `release-staging.json`
|
|
||||||
|
|
||||||
**release-staging.json 格式**:
|
## 工作流一+四(合并):PR Review + Merge
|
||||||
```json
|
|
||||||
{
|
**触发**:给 Claude Azure DevOps PR 链接
|
||||||
"version": "v1.0.0",
|
|
||||||
"repo": "Billo.Platform.Document",
|
### 阶段一:Review(自动执行)
|
||||||
"started_at": "2026-03-17",
|
|
||||||
"tickets": [
|
```
|
||||||
{
|
1. 解析 PR URL → repo、branch、ticket ID
|
||||||
"id": "ALLPOST-4219",
|
2. 移动 Jira ticket → "code review"(无 ticket ID 则跳过)
|
||||||
"summary": "Test release bot",
|
3. git fetch branch + 创建 worktree(C:/Users/yaoji/git/_reviews/pr-{PR_ID})
|
||||||
"pr_id": "10460",
|
4. code-reviewer agent 分析所有变更 .cs 文件
|
||||||
"pr_url": "https://dev.azure.com/...",
|
5. 输出结构化报告(CRITICAL / HIGH / MEDIUM / LOW)
|
||||||
"pr_title": "chore: trigger release bot test",
|
```
|
||||||
"branch": "feature/ALLPOST-4219_test_release_bot",
|
|
||||||
"merged_at": "2026-03-17"
|
**结果分支:**
|
||||||
}
|
|
||||||
]
|
```
|
||||||
}
|
REQUEST CHANGES APPROVE
|
||||||
|
↓ ↓
|
||||||
|
移动 Jira → "Code review comment" 告知用户,等待确认
|
||||||
|
列出所有 issues
|
||||||
|
等待开发者修复后重新提交
|
||||||
|
```
|
||||||
|
|
||||||
|
### 阶段二:Merge(用户确认后执行)
|
||||||
|
|
||||||
|
```
|
||||||
|
6. Merge PR(az repos pr update --status completed)
|
||||||
|
7. 移动 Jira ticket → "Ready for stage (2)"
|
||||||
|
8. 在 Jira ticket 上记录 PR remote link
|
||||||
|
9. 获取 ticket summary
|
||||||
|
10. 计算版本号(releases/ 最新版本 patch +1)
|
||||||
|
11. 追加 ticket 信息到 release-staging.json
|
||||||
|
12. 清理 worktree
|
||||||
```
|
```
|
||||||
|
|
||||||
---
|
---
|
||||||
@@ -117,10 +130,11 @@ Done
|
|||||||
1. Merge release PR
|
1. Merge release PR
|
||||||
2. 所有 ticket 状态移动 → `Done`
|
2. 所有 ticket 状态移动 → `Done`
|
||||||
3. 发送 Slack 通知
|
3. 发送 Slack 通知
|
||||||
4. 归档 `release-staging.json` → `releases/v1.0.0.json`
|
4. 归档 `release-staging.json` → `releases/vX.X.X.json`
|
||||||
5. 重置 `release-staging.json` 准备下个版本
|
5. 重置 `release-staging.json` 准备下个版本
|
||||||
|
|
||||||
**Slack 消息格式**(rich_text Block Kit):
|
**Slack 消息格式**(rich_text Block Kit):
|
||||||
|
|
||||||
```
|
```
|
||||||
Release - Billo.Platform.Document (2026-03-17) ← 加粗标题
|
Release - Billo.Platform.Document (2026-03-17) ← 加粗标题
|
||||||
• ALLPOST-4219 Test release bot ← bullet + 可点击 Jira 链接
|
• ALLPOST-4219 Test release bot ← bullet + 可点击 Jira 链接
|
||||||
@@ -128,25 +142,30 @@ Release - Billo.Platform.Document (2026-03-17) ← 加粗标题
|
|||||||
```
|
```
|
||||||
|
|
||||||
> [!important]
|
> [!important]
|
||||||
> 使用 Slack `rich_text` Block Kit(非 `mrkdwn`),避免 Windows 环境下 emoji 和中文乱码,bullet 正常渲染。
|
> 使用 Slack `rich_text` Block Kit(非 `mrkdwn`),避免 Windows 环境下 emoji 和中文乱码,bullet 和换行正常渲染。
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 工作流四:PR Code Review
|
## release-staging.json 格式
|
||||||
|
|
||||||
**触发**:给 Claude PR 链接(说明要 review)
|
```json
|
||||||
|
{
|
||||||
**执行步骤**:
|
"version": "v1.0.0",
|
||||||
1. 解析 PR URL → 提取 repo、branch、ticket ID
|
"repo": "Billo.Platform.Document",
|
||||||
2. 移动 Jira ticket → `code review`(无 ticket ID 则跳过)
|
"started_at": "2026-03-17",
|
||||||
3. `git fetch` branch + 创建 git worktree(路径:`C:/Users/yaoji/git/_reviews/pr-{PR_ID}`)
|
"tickets": [
|
||||||
4. 启动 code-reviewer agent,分析所有变更的 `.cs` 文件
|
{
|
||||||
5. 输出结构化 review 报告(CRITICAL / HIGH / MEDIUM / LOW)
|
"id": "ALLPOST-4219",
|
||||||
6. **有 comment** → 列出 issues,移动 Jira → `Code review comment`,等待用户决定
|
"summary": "Test release bot",
|
||||||
7. **无 comment** → APPROVE,等待用户决定是否 merge
|
"pr_id": "10460",
|
||||||
8. 清理 worktree
|
"pr_url": "https://dev.azure.com/billodev/...",
|
||||||
|
"pr_title": "chore: trigger release bot test",
|
||||||
---
|
"branch": "feature/ALLPOST-4219_test_release_bot",
|
||||||
|
"merged_at": "2026-03-17"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
## 版本号规则
|
## 版本号规则
|
||||||
|
|
||||||
@@ -156,17 +175,6 @@ Release - Billo.Platform.Document (2026-03-17) ← 加粗标题
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 触发关键词速查
|
|
||||||
|
|
||||||
| 你说的 | Claude 执行 |
|
|
||||||
|--------|------------|
|
|
||||||
| PR 链接 | 工作流一+四(review → 你确认 → merge + Jira + staging)|
|
|
||||||
| `"准备 release"` | 工作流二:创建 release PR |
|
|
||||||
| `"release PR merged"` | 工作流三:Jira Done + Slack + 归档 |
|
|
||||||
| PR 链接 + `"review"` | 工作流四:code review |
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 环境变量(~/.bashrc)
|
## 环境变量(~/.bashrc)
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
|
|||||||
Reference in New Issue
Block a user