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

5.8 KiB
Raw Blame History

Issue 到 PR 端到端工作流

场景:从创建 Issue 开始到代码合并、Issue 关闭的完整自动化流程。适用于比赛子赛题三:端到端工作流。

比赛要求:链式调用 ≥3 个 CLI 命令/Skills实现端到端自动化。

前置条件

  • 已配置 gitlink-cli 并登录 GitLink 平台
  • 有目标仓库的写入权限
  • 本地 Git 环境已配置

工作流步骤

Step 1创建 Issue

创建一个新 Issue描述需要解决的问题。

gitlink-cli issue +create \
  --owner <owner> \
  --repo <repo> \
  --title "修复登录页面样式问题" \
  --body "## 问题描述\n登录按钮在移动端显示不完整\n\n## 期望结果\n按钮应完整显示并居中" \
  --format json

预期输出:

{
  "id": 123,
  "subject": "修复登录页面样式问题",
  "project": {...},
  "status": "open"
}

记录 Issue ID123(后续步骤使用)


Step 2创建开发分支

基于主分支创建新的开发分支。

gitlink-cli branch +create \
  --owner <owner> \
  --repo <repo> \
  --name fix-login-style \
  --from main \
  --format json

预期输出:

{
  "name": "fix-login-style",
  "sha": "abc123...",
  "protected": false
}

Step 3本地开发与提交

在本地进行代码修改并推送到远程分支。

# 切换到新分支
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 将修改合并到主分支。

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

预期输出:

{
  "id": 456,
  "title": "fix: 修复登录按钮移动端显示问题",
  "state": "open",
  "head": "fix-login-style",
  "base": "main"
}

记录 PR ID456


Step 5获取 PR 变更摘要

使用工作流命令获取 PR 的结构化摘要。

gitlink-cli workflow +pr-summary \
  --owner <owner> \
  --repo <repo> \
  --number 456 \
  --format markdown

预期输出:

# PR #456 摘要

## 变更文件
- `styles/login.css` (+5/-2)

## 变更类型
- Style: 样式修复

## 建议
- 建议在不同设备上测试
- 考虑添加单元测试

Step 6代码审查可选

添加 Review 评论或批准 PR。

# 添加 Review 评论
gitlink-cli api POST /:owner/:repo/pulls/456/reviews \
  --body '{"body":"LGTM! 代码变更清晰,已验证移动端显示正常。","event":"APPROVE"}'

Step 7合并 PR

将 PR 合并到主分支。

gitlink-cli pr +merge \
  --owner <owner> \
  --repo <repo> \
  --id 456 \
  --method merge \
  --format json

预期输出:

{
  "id": 456,
  "state": "merged",
  "merged_at": "2026-06-29T10:00:00Z"
}

Step 8关闭 Issue

PR 合并后,关闭关联的 Issue。

gitlink-cli issue +close \
  --owner <owner> \
  --repo <repo> \
  --id 123 \
  --format json

预期输出:

{
  "id": 123,
  "status": "closed",
  "closed_at": "2026-06-29T10:05:00Z"
}

Step 9清理分支可选

删除已合并的开发分支。

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 脚本:

#!/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. 演示视频/截图:展示完整工作流执行过程

相关链接