From 0b4967488e107b31b4f48559b7e7d34930710b9f Mon Sep 17 00:00:00 2001 From: Yaojia Wang Date: Tue, 17 Mar 2026 23:45:30 +0100 Subject: [PATCH] vault: rewrite Billo workflow - merge PR review + merge into single flow --- .../Billo Release & PR Review Workflow.md | 126 ++++++++++-------- 1 file changed, 67 insertions(+), 59 deletions(-) diff --git a/4 - Resources/Engineering/Billo Release & PR Review Workflow.md b/4 - Resources/Engineering/Billo Release & PR Review Workflow.md index 64c48a0..0a6db7d 100644 --- a/4 - Resources/Engineering/Billo Release & PR Review Workflow.md +++ b/4 - Resources/Engineering/Billo Release & PR Review Workflow.md @@ -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 - ↓ (PR 提交 review) + ↓ (PR 给 Claude review) code review - ↓ (review 有 comment) + ↓ (review 有 comment → REQUEST CHANGES) Code review comment - ↓ (review 通过,PR merge to develop) + ↓ (review 通过 → 用户确认 merge) Ready for stage (2) ↓ (release PR merge to main) 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 格式**: -```json -{ - "version": "v1.0.0", - "repo": "Billo.Platform.Document", - "started_at": "2026-03-17", - "tickets": [ - { - "id": "ALLPOST-4219", - "summary": "Test release bot", - "pr_id": "10460", - "pr_url": "https://dev.azure.com/...", - "pr_title": "chore: trigger release bot test", - "branch": "feature/ALLPOST-4219_test_release_bot", - "merged_at": "2026-03-17" - } - ] -} +## 工作流一+四(合并):PR Review + Merge + +**触发**:给 Claude Azure DevOps PR 链接 + +### 阶段一:Review(自动执行) + +``` +1. 解析 PR URL → repo、branch、ticket ID +2. 移动 Jira ticket → "code review"(无 ticket ID 则跳过) +3. git fetch branch + 创建 worktree(C:/Users/yaoji/git/_reviews/pr-{PR_ID}) +4. code-reviewer agent 分析所有变更 .cs 文件 +5. 输出结构化报告(CRITICAL / HIGH / MEDIUM / LOW) +``` + +**结果分支:** + +``` + 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 2. 所有 ticket 状态移动 → `Done` 3. 发送 Slack 通知 -4. 归档 `release-staging.json` → `releases/v1.0.0.json` +4. 归档 `release-staging.json` → `releases/vX.X.X.json` 5. 重置 `release-staging.json` 准备下个版本 **Slack 消息格式**(rich_text Block Kit): + ``` Release - Billo.Platform.Document (2026-03-17) ← 加粗标题 • ALLPOST-4219 Test release bot ← bullet + 可点击 Jira 链接 @@ -128,25 +142,30 @@ Release - Billo.Platform.Document (2026-03-17) ← 加粗标题 ``` > [!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) - -**执行步骤**: -1. 解析 PR URL → 提取 repo、branch、ticket ID -2. 移动 Jira ticket → `code review`(无 ticket ID 则跳过) -3. `git fetch` branch + 创建 git worktree(路径:`C:/Users/yaoji/git/_reviews/pr-{PR_ID}`) -4. 启动 code-reviewer agent,分析所有变更的 `.cs` 文件 -5. 输出结构化 review 报告(CRITICAL / HIGH / MEDIUM / LOW) -6. **有 comment** → 列出 issues,移动 Jira → `Code review comment`,等待用户决定 -7. **无 comment** → APPROVE,等待用户决定是否 merge -8. 清理 worktree - ---- +```json +{ + "version": "v1.0.0", + "repo": "Billo.Platform.Document", + "started_at": "2026-03-17", + "tickets": [ + { + "id": "ALLPOST-4219", + "summary": "Test release bot", + "pr_id": "10460", + "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) ```bash