gitlink-cli/skills/gitlink-workflow/examples/full-automation-workflow.md

14 KiB
Raw Blame History

AI Agent 自动化工作流完整示例

本文档展示如何组合使用多个 gitlink-cli 工作流,实现完整的 AI Agent 自动化项目管理。

🤖 AI Agent 完整工作流

场景:新项目从创建到发布的完整自动化

这个示例展示 AI Agent 如何自动化管理一个软件项目的完整生命周期,从仓库创建到版本发布。

工作流组合

1. 项目初始化阶段

# AI Agent 项目初始化
def initialize_new_project(project_name, description):
    """完整的项目初始化工作流"""
    
    # 1. 创建仓库
    repo = create_repository(project_name, description)
    
    # 2. 初始化项目结构
    setup_project_structure(repo)
    
    # 3. 配置 CI/CD
    configure_ci_cd(repo)
    
    # 4. 创建初始 Issue
    create_initial_issues(repo)
    
    return repo

# 执行
project = initialize_new_project(
    "my-awesome-project",
    "一个很棒的项目,用于演示自动化工作流"
)

2. 开发阶段自动化

# AI Agent 开发管理
def manage_development_workflow(repo):
    """开发阶段的自动化管理"""
    
    while development_in_progress:
        # 1. 自动分类新 Issue
        triage_new_issues(repo)
        
        # 2. 审查新的 PR
        review_pull_requests(repo)
        
        # 3. 更新项目进度
        update_project_status(repo)
        
        # 4. 检查是否需要发布
        if should_release(repo):
            generate_release_notes(repo)
            create_release(repo)
        
        sleep(cycle_interval)

3. Sprint 自动化

# AI Agent Sprint 管理
def automate_sprint_management(repo):
    """完整的 Sprint 自动化管理"""
    
    # Sprint 开始
    sprint_number = start_new_sprint(repo)
    
    # Sprint 监控
    monitor_sprint_progress(repo, sprint_number)
    
    # Sprint 结束
    end_sprint(repo, sprint_number)
    generate_sprint_report(repo, sprint_number)

# 执行 Sprint 工作流
sprint_result = automate_sprint_management(project)

完整的端到端示例

示例:自动化 Issue 到 Release 流程

#!/bin/bash

# 完整的自动化工作流脚本

OWNER="ai-agent"
REPO="demo-project"
PROJECT_NAME="AI Agent Demo"

echo "🤖 启动 AI Agent 自动化工作流..."

# 阶段 1: 项目创建
echo "📦 阶段 1: 创建项目"
gitlink-cli repo +create \
  --name "$REPO" \
  --description "$PROJECT_NAME" \
  --private false

# 初始化本地仓库
cd "$REPO"
git init
git remote add gitlink "https://www.gitlink.org.cn/$OWNER/$REPO.git"

# 创建基础文件
echo "# $PROJECT_NAME" > README.md
echo "MIT License" > LICENSE
git add .
git commit -m "Initial commit"
git push -u gitlink master:master

# 设置分支保护
gitlink-cli branch +protect --owner "$OWNER" --repo "$REPO" --name master

# 阶段 2: 创建开发 Issue
echo "🎯 阶段 2: 创建开发 Issue"
FEATURES=(
    "用户认证系统"
    "数据管理模块"
    "API 接口开发"
    "前端界面设计"
    "测试框架搭建"
)

for feature in "${FEATURES[@]}"; do
    gitlink-cli issue +create \
      --owner "$OWNER" \
      --repo "$REPO" \
      --title "开发 $feature" \
      --body "## 任务描述

实现 $feature 功能

## 技术要求
- 代码规范
- 单元测试
- 文档完整

## 验收标准
- 功能正常工作
- 测试通过
- 代码审查通过"
done

# 阶段 3: 模拟开发和 PR 创建
echo "🔧 阶段 3: 模拟开发工作"

# 创建功能分支
for feature in "${FEATURES[@]}"; do
    # 模拟分支名(将中文转为拼音)
    branch_name="feature-$(echo $feature | md5sum | cut -c1-8)"
    
    git checkout -b "$branch_name"
    
    # 模拟开发工作
    echo "// $feature 实现" > "${feature}.js"
    git add .
    git commit -m "Implement $feature"
    git push gitlink "$branch_name"
    
    # 创建 PR
    gitlink-cli pr +create \
      --owner "$OWNER" \
      --repo "$REPO" \
      --title "Feature: $feature" \
      --head "$branch_name" \
      --base master \
      --body "## 功能说明

实现 $feature 功能

## 变更内容
- 添加核心功能
- 实现相关测试
- 更新文档

## 测试情况
- 单元测试通过
- 集成测试通过
- 手工测试完成"
    
    git checkout master
done

# 阶段 4: 自动 Issue 分类
echo "🏷️  阶段 4: 自动分类 Issue"

# 获取所有开放 Issue
ISSUES=$(gitlink-cli issue +list --owner "$OWNER" --repo "$REPO" --state open --format json)

# 为 Issue 添加标签
echo "$ISSUES" | jq -r '.data.issues[].id' | while read issue_id; do
    echo "处理 Issue #$issue_id"
    
    # 获取 Issue 详情
    ISSUE_DETAIL=$(gitlink-cli issue +view --owner "$OWNER" --repo "$REPO" --id "$issue_id" --format json)
    TITLE=$(echo "$ISSUE_DETAIL" | jq -r '.data.subject')
    
    # 基于标题分类
    if echo "$TITLE" | grep -iq "认证"; then
        echo "  → 分类为: feature + security"
        # 实际执行时取消注释
        # gitlink-cli api POST "/$OWNER/$REPO/issues/$issue_id" --body '{"issue_tag_ids":[1,5]}'
    else
        echo "  → 分类为: feature"
        # gitlink-cli api POST "/$OWNER/$REPO/issues/$issue_id" --body '{"issue_tag_ids":[1]}'
    fi
done

# 阶段 5: PR 审查
echo "🔍 阶段 5: 自动 PR 审查"

# 获取开放 PR
PRS=$(gitlink-cli pr +list --owner "$OWNER" --repo "$REPO" --state open --format json)

echo "$PRS" | jq -r '.data.prs[].id' | while read pr_id; do
    echo "审查 PR #$pr_id"
    
    # 获取 PR 详情
    PR_DETAIL=$(gitlink-cli pr +view --owner "$OWNER" --repo "$REPO" --id "$pr_id" --format json)
    PR_AUTHOR=$(echo "$PR_DETAIL" | jq -r '.data.author.login')
    PR_TITLE=$(echo "$PR_DETAIL" | jq -r '.data.title')
    
    # 简单的代码检查(这里只是模拟)
    REVIEW_COMMENTS="# 🔍 自动审查结果

## PR 信息
- **标题**: $PR_TITLE  
- **作者**: $PR_AUTHOR
- **状态**: 待审查

## ✅ 自动检查
- 代码提交正常
- 变更描述清晰
- 符合项目规范

## 💡 建议
- 添加单元测试
- 更新相关文档
- 确认向后兼容性

## 📋 审查结论
代码质量良好,建议合并。"

    echo "  → 添加审查评论"
    # 实际执行时取消注释
    # gitlink-cli api POST "/$OWNER/$REPO/pulls/$pr_id/reviews" --body "{\"body\":\"$REVIEW_COMMENTS\",\"event\":\"APPROVE\"}"
done

# 阶段 6: 生成 Release Notes
echo "📝 阶段 6: 生成 Release Notes"

# 合并所有 PR模拟
echo "合并所有功能 PR..."
MERGED_PRS=$(gitlink-cli pr +list --owner "$OWNER" --repo "$REPO" --state merged --format json)

# 生成 Release Notes
RELEASE_NOTES="# 🎉 v1.0.0 首个版本发布

## 📊 版本概述
这是 $PROJECT_NAME 的首个稳定版本,包含了核心功能的完整实现。

## ✨ 新功能
- 用户认证系统:完整的登录注册功能
- 数据管理模块:高效的数据存储和检索
- API 接口RESTful API 设计
- 前端界面:现代化的用户界面
- 测试框架:完整的自动化测试

## 🐛 Bug 修复
- 修复认证过程中的边界问题
- 解决数据一致性问题
- 优化 API 响应性能

## 🔧 技术改进
- 代码结构优化
- 性能提升 30%
- 安全性增强

## 📚 文档更新
- 用户手册完善
- API 文档更新
- 开发指南补充

## 🙏 贡献者
感谢所有参与开发的贡献者!

## 📥 安装方法
\`\`\`bash
# 使用 npm 安装
npm install $OWNER/$REPO@v1.0.0

# 或使用 yarn
yarn add $OWNER/$REPO@v1.0.0
\`\`\`

## 🔄 升级指南
从之前的版本升级,请参考迁移指南。

## 📚 完整文档
- 用户指南: https://www.gitlink.org.cn/$OWNER/$REPO/wiki
- API 文档: https://www.gitlink.org.cn/$OWNER/$REPO/api-docs

---
**发布日期**: $(date +%Y-%m-%d)
**下一版本**: v1.1.0 (计划于 $(date -d "1 month" +%Y-%m-%d) 发布)"

# 创建 Release
echo "创建 Release v1.0.0..."
gitlink-cli release +create \
  --owner "$OWNER" \
  --repo "$REPO" \
  --tag "v1.0.0" \
  --name "v1.0.0" \
  --body "$RELEASE_NOTES"

# 阶段 7: Sprint 报告
echo "📊 阶段 7: 生成 Sprint 报告"

SPRINT_START=$(date -d "14 days ago" +%Y-%m-%d)
SPRINT_END=$(date +%Y-%m-%d)

SPRINT_REPORT="# 📊 Sprint 1 完成报告

## 📅 时间信息
- **Sprint 周期**: $SPRINT_START$SPRINT_END  
- **团队规模**: AI Agent x 1
- **工作模式**: 自动化开发

## 🎯 目标达成
### 计划完成度
- **计划 Issue**: 5 个
- **实际完成**: 5 个
- **完成率**: 100%

### 质量指标
- **代码质量**: 优秀
- **测试覆盖率**: 95%
- **文档完整度**: 100%

## 💻 工作统计
### 代码提交
- **总提交数**: 42 次
- **日均提交**: 3 次/天
- **代码行数**: +2,450 -180 行

### Issue 处理
- **关闭 Issue**: 5 个
- **新建 Issue**: 0 个
- **平均处理时间**: 2.5 天

### PR 合并  
- **合并 PR**: 5 个
- **平均审查时间**: 1 小时
- **平均合并时间**: 2 小时

## 🎉 主要成就
1. ✅ 完成用户认证系统开发
2. ✅ 实现数据管理模块
3. ✅ 构建 RESTful API
4. ✅ 设计现代化前端界面
5. ✅ 建立完整测试体系

## 📈 性能指标
- **开发效率**: 高
- **代码质量**: 优秀
- **自动化程度**: 95%
- **文档完整度**: 100%

## 🔮 下期规划
- 性能优化和改进
- 新功能模块开发
- 国际化支持
- 移动端适配

---
**AI Agent 自动化工作流演示**  
**报告生成**: $(date +%Y-%m-%d %H:%M:%S)"

# 保存 Sprint 报告
REPORT_FILE="sprint_reports/sprint_1_$(date +%Y%m%d).md"
mkdir -p sprint_reports
echo "$SPRINT_REPORT" > "$REPORT_FILE"

echo "🎉 AI Agent 自动化工作流完成!"
echo ""
echo "📊 项目统计:"
echo "  仓库: https://www.gitlink.org.cn/$OWNER/$REPO"
echo "  Issue: 5 个全部完成"
echo "  PR: 5 个全部合并"
echo "  Release: v1.0.0 已发布"
echo ""
echo "📄 生成的文档:"
echo "  - Release Notes: https://www.gitlink.org.cn/$OWNER/$REPO/releases/v1.0.0"
echo "  - Sprint 报告: $REPORT_FILE"

Claude Code 集成示例

在 Claude Code 中使用工作流

# 用户指令

帮助我创建一个新的项目并完成首个版本的发布。

# Claude Code 执行

我会使用 gitlink-cli 的自动化工作流来完成这个任务:

1. **创建仓库** - 使用 workflow-repo-setup
2. **管理 Issue** - 使用 workflow-issue-triage  
3. **审查 PR** - 使用 workflow-pr-review
4. **生成 Release** - 使用 workflow-release-notes
5. **总结报告** - 使用 workflow-sprint-report

让我开始执行...

技能组合使用

# AI Agent 多技能组合
class GitLinkAgent:
    def __init__(self, owner, repo):
        self.owner = owner
        self.repo = repo
        self.cli = "gitlink-cli"
    
    def complete_project_workflow(self):
        """完整的项目工作流"""
        
        # 阶段 1: 初始化
        self.setup_repository()
        
        # 阶段 2: 开发管理
        self.manage_development()
        
        # 阶段 3: 质量控制
        self.automated_review()
        
        # 阶段 4: 发布管理
        self.create_release()
        
        # 阶段 5: 报告总结
        self.generate_reports()
    
    def setup_repository(self):
        """仓库初始化"""
        # 使用 workflow-repo-setup
        create_repo_cmd = f"{self.cli} repo +create --name {self.repo}"
        subprocess.run(create_repo_cmd.split())
        
        protect_branch_cmd = f"{self.cli} branch +protect --name master"
        subprocess.run(protect_branch_cmd.split())
    
    def manage_development(self):
        """开发管理"""
        # 监控新 Issue 并自动分类
        issues = self.get_new_issues()
        for issue in issues:
            self.classify_issue(issue)
        
        # 监控新 PR 并审查
        prs = self.get_new_prs()
        for pr in prs:
            self.review_pr(pr)
    
    def automated_review(self):
        """自动化审查"""
        # 获取待审查的 PR
        pending_prs = self.get_pending_prs()
        
        for pr in pending_prs:
            review_result = self.analyze_pr(pr)
            self.submit_review(pr, review_result)

最佳实践

1. 工作流选择

  • 项目创建: 使用 workflow-repo-setup
  • 日常维护: 使用 workflow-issue-triage 和 workflow-pr-review
  • 版本发布: 使用 workflow-release-notes
  • 团队管理: 使用 workflow-sprint-report

2. 执行顺序

典型的执行顺序:

  1. 项目初始化 → 2. Issue 管理 → 3. PR 审查 → 4. Release 发布 → 5. Sprint 报告

3. 错误处理

def safe_workflow_execution(workflow_func, *args, **kwargs):
    """安全执行工作流"""
    try:
        return workflow_func(*args, **kwargs)
    except Exception as e:
        # 记录错误
        log_error(e)
        # 尝试恢复
        return handle_workflow_error(e, workflow_func, *args, **kwargs)

4. 进度跟踪

class WorkflowProgress:
    def __init__(self):
        self.current_step = 0
        self.total_steps = 5
        self.completed_steps = []
        self.failed_steps = []
    
    def update_progress(self, step_name, success=True):
        if success:
            self.completed_steps.append(step_name)
        else:
            self.failed_steps.append(step_name)
        self.current_step += 1
    
    def get_progress_report(self):
        progress = self.current_step / self.total_steps * 100
        return {
            'progress': f'{progress:.1f}%',
            'completed': self.completed_steps,
            'failed': self.failed_steps
        }

扩展工作流

自定义工作流

# 创建自定义工作流
def custom_workflow(owner, repo, custom_config):
    """自定义工作流模板"""
    
    # 1. 预检查
    if not validate_environment():
        return False
    
    # 2. 执行自定义步骤
    for step in custom_config['steps']:
        execute_step(step)
    
    # 3. 后处理
    cleanup_environment()
    
    return True

故障排除

常见问题

问题 解决方案
权限不足 检查 Token 权限
API 限制 添加重试机制
数据格式错误 验证输入数据
执行超时 增加超时时间

References