gitlink-cli/skills/gitlink-workflow/examples/issue-to-pr-workflow.md

293 lines
5.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Issue 到 PR 端到端工作流
**场景**:从创建 Issue 开始到代码合并、Issue 关闭的完整自动化流程。适用于比赛子赛题三:端到端工作流。
> **比赛要求**:链式调用 ≥3 个 CLI 命令/Skills实现端到端自动化。
## 前置条件
- 已配置 `gitlink-cli` 并登录 GitLink 平台
- 有目标仓库的写入权限
- 本地 Git 环境已配置
## 工作流步骤
### Step 1创建 Issue
创建一个新 Issue描述需要解决的问题。
```bash
gitlink-cli issue +create \
--owner <owner> \
--repo <repo> \
--title "修复登录页面样式问题" \
--body "## 问题描述\n登录按钮在移动端显示不完整\n\n## 期望结果\n按钮应完整显示并居中" \
--format json
```
**预期输出:**
```json
{
"id": 123,
"subject": "修复登录页面样式问题",
"project": {...},
"status": "open"
}
```
**记录 Issue ID**`123`(后续步骤使用)
---
### Step 2创建开发分支
基于主分支创建新的开发分支。
```bash
gitlink-cli branch +create \
--owner <owner> \
--repo <repo> \
--name fix-login-style \
--from main \
--format json
```
**预期输出:**
```json
{
"name": "fix-login-style",
"sha": "abc123...",
"protected": false
}
```
---
### Step 3本地开发与提交
在本地进行代码修改并推送到远程分支。
```bash
# 切换到新分支
git checkout fix-login-style
# 进行代码修改(示例:修改 CSS 文件)
echo ".login-btn { width: 100%; text-align: center; }" >> styles/login.css
# 提交更改
git add styles/login.css
git commit -m "fix: 修复登录按钮移动端显示问题 #123"
# 推送到远程
git push origin fix-login-style
```
**注意**:提交信息中包含 `#123` 可关联 Issue。
---
### Step 4创建 Pull Request
创建 PR 将修改合并到主分支。
```bash
gitlink-cli pr +create \
--owner <owner> \
--repo <repo> \
--title "fix: 修复登录按钮移动端显示问题" \
--body "## 变更说明\n- 修复登录按钮在移动端显示不完整的问题\n- 添加响应式样式\n\n## 关联 Issue\nCloses #123" \
--head fix-login-style \
--base main \
--format json
```
**预期输出:**
```json
{
"id": 456,
"title": "fix: 修复登录按钮移动端显示问题",
"state": "open",
"head": "fix-login-style",
"base": "main"
}
```
**记录 PR ID**`456`
---
### Step 5获取 PR 变更摘要
使用工作流命令获取 PR 的结构化摘要。
```bash
gitlink-cli workflow +pr-summary \
--owner <owner> \
--repo <repo> \
--number 456 \
--format markdown
```
**预期输出:**
```markdown
# PR #456 摘要
## 变更文件
- `styles/login.css` (+5/-2)
## 变更类型
- Style: 样式修复
## 建议
- 建议在不同设备上测试
- 考虑添加单元测试
```
---
### Step 6代码审查可选
添加 Review 评论或批准 PR。
```bash
# 添加 Review 评论
gitlink-cli api POST /:owner/:repo/pulls/456/reviews \
--body '{"body":"LGTM! 代码变更清晰,已验证移动端显示正常。","event":"APPROVE"}'
```
---
### Step 7合并 PR
将 PR 合并到主分支。
```bash
gitlink-cli pr +merge \
--owner <owner> \
--repo <repo> \
--id 456 \
--method merge \
--format json
```
**预期输出:**
```json
{
"id": 456,
"state": "merged",
"merged_at": "2026-06-29T10:00:00Z"
}
```
---
### Step 8关闭 Issue
PR 合并后,关闭关联的 Issue。
```bash
gitlink-cli issue +close \
--owner <owner> \
--repo <repo> \
--id 123 \
--format json
```
**预期输出:**
```json
{
"id": 123,
"status": "closed",
"closed_at": "2026-06-29T10:05:00Z"
}
```
---
### Step 9清理分支可选
删除已合并的开发分支。
```bash
gitlink-cli branch +delete \
--owner <owner> \
--repo <repo> \
--name fix-login-style \
--format json
```
---
## 工作流总结
| 步骤 | 命令 | 操作类型 |
|------|------|----------|
| 1 | `issue +create` | 创建 Issue |
| 2 | `branch +create` | 创建分支 |
| 3 | Git 本地操作 | 代码修改 |
| 4 | `pr +create` | 创建 PR |
| 5 | `workflow +pr-summary` | 获取摘要 |
| 6 | `api POST .../reviews` | 代码审查 |
| 7 | `pr +merge` | 合并 PR |
| 8 | `issue +close` | 关闭 Issue |
| 9 | `branch +delete` | 清理分支 |
**CLI 命令数量**8 个(满足 ≥3 个的比赛要求)
---
## 自动化脚本示例
将上述步骤封装为 Shell 脚本:
```bash
#!/bin/bash
# issue-to-pr.sh - Issue 到 PR 端到端工作流脚本
OWNER=$1
REPO=$2
ISSUE_TITLE=$3
BRANCH_NAME=$4
# Step 1: 创建 Issue
ISSUE=$(gitlink-cli issue +create --owner $OWNER --repo $REPO \
--title "$ISSUE_TITLE" --body "待补充详细描述" --format json)
ISSUE_ID=$(echo $ISSUE | jq -r '.id')
echo "Created Issue #$ISSUE_ID"
# Step 2: 创建分支
gitlink-cli branch +create --owner $OWNER --repo $REPO \
--name $BRANCH_NAME --from main --format json
echo "Created branch: $BRANCH_NAME"
# Step 3-4: 本地开发后创建 PR
# ... (需要用户手动完成代码修改)
# Step 7: 合并 PR
# PR_ID=...
# gitlink-cli pr +merge --owner $OWNER --repo $REPO --id $PR_ID
# Step 8: 关闭 Issue
gitlink-cli issue +close --owner $OWNER --repo $REPO --id $ISSUE_ID
echo "Closed Issue #$ISSUE_ID"
```
---
## 比赛提交材料
本工作流适用于 **GitLink × CCF开源创新大赛 - 子赛题三:端到端工作流**
提交内容:
1. 本文档:`skills/gitlink-workflow/examples/issue-to-pr-workflow.md`
2. 可选:自动化脚本 `scripts/issue-to-pr.sh`
3. 演示视频/截图:展示完整工作流执行过程
---
## 相关链接
- [比赛主页](https://www.gitlink.org.cn/competitions/track1_2026GitLinkCli)
- [gitlink-cli 仓库](https://www.gitlink.org.cn/Gitlink/gitlink-cli)
- [Issue #6: 只要创建Issue就让Agent开始干活](https://www.gitlink.org.cn/Gitlink/gitlink-cli/issues/6)