使用模型上下文协议(MCP)进行AI驱动的CI/CD管道自动化
将管道创建时间从数小时缩短到几秒钟,并内置了安全合规性和DevSecOps最佳实践。
Pipeline Assistant MCP是一个智能系统,它利用AI自动完成整个CI/CD管道生命周期。该系统利用模型上下文协议(MCP)提供上下文感知的管道生成、分析和改进建议。
它不仅仅是一个验证工具——它是一个完整的DevSecOps助手,能够:
开发者:"我需要为我的.NET微服务创建一个管道"
2-4小时后...
- 忘记了安全扫描阶段
- 硬编码数据库凭证
- 没有配置依赖缓存
- 测试没有生成覆盖率报告
- 直接部署到生产环境而没有审批
结果:不安全、缓慢且不符合规定的管道
开发者:"生成一个.NET生产管道"
5秒后...
- 完整的六阶段管道生成
- 应用了所有10项安全策略(SEC-001至SEC-010)
- 配置了优化缓存
- 带有覆盖率报告的测试
- 带有审批门的生产部署
- 包含SBOM生成
- 合规评分:98%
结果:生产就绪、安全且符合规定的管道
| 指标 | 之前 | 之后 | 改进 |
|---|---|---|---|
| 管道创建时间 | 2-4小时 | 5秒 | 快99.9% |
| 安全合规性 | 约40% | 95%以上 | +55% |
| 漏洞检测 | 手动审查 | 自动化 | 实时 |
| 标准采纳 | 不一致 | 强制执行 | 100%覆盖 |
graph TB
subgraph "开发者接口"
CLI[CLI工具]
VSC[VS Code扩展]
CD[Claude桌面]
GHA[GitHub Actions]
ADO[Azure DevOps]
end
subgraph "核心服务"
MCP[MCP服务器]
PG[管道生成器]
PA[管道分析器]
PE[策略执行器]
WM[维基管理器]
end
subgraph "数据源"
WIKI[企业维基v2.0]
POL[安全策略]
TPL[平台模板]
MET[采纳度量]
end
CLI --> MCP
VSC --> MCP
CD --> MCP
GHA --> MCP
ADO --> MCP
MCP --> PG
MCP --> PA
MCP --> PE
MCP --> WM
PG --> WIKI
PA --> POL
PE --> POL
WM --> MET
PG --> TPL
style MCP fill:#e1f5fe
style WIKI fill:#f3e5f5
style POL fill:#ffebee
sequenceDiagram
participant D as 开发者
participant M as MCP服务器
participant G as 生成器
participant E as 执行器
participant W as 维基
D->>M: 生成管道(.NET,生产)
M->>W: 加载标准v2.0
W-->>M: 阶段,策略,SLA
M->>G: 创建管道
G->>E: 应用安全策略
E-->>G: SEC-001至SEC-010
G-->>M: 完整管道
M-->>D: 管道+合规评分
graph LR
subgraph "运行时"
NODE[Node.js 20+]
TS[TypeScript 5.3]
end
subgraph "协议"
MCP[模型上下文协议]
STDIO[STDIO传输]
end
subgraph "测试"
VIT[Vitest]
ZOD[Zod验证]
end
subgraph "集成"
AZDO[Azure DevOps API]
GH[GitHub API]
VSCE[VS Code API]
end
NODE --> TS
TS --> MCP
MCP --> STDIO
TS --> VIT
TS --> ZOD
TS --> AZDO
TS --> GH
TS --> VSCE
git clone https://github.com/soydachi/pipeline-assistant-mcp.git
cd pipeline-assistant-mcp
npm install
npm run build
npm test
# 为Azure DevOps生成一个管道
node dist/cli/pipeline-assistant.js generate \
--platform azure-devops \
--type dotnet \
--env production
# 为GitHub Actions生成一个管道
node dist/cli/pipeline-assistant.js generate \
--platform github-actions \
--type node \
--env staging
# 分析一个管道
node dist/cli/pipeline-assistant.js analyze \
examples/pipelines/pipeline-con-problemas.yml
# 列出可用平台
node dist/cli/pipeline-assistant.js platforms
# 列出可用模板
node dist/cli/pipeline-assistant.js templates --platform azure-devops
pipeline-assistant-mcp/
├── src/ # 核心MCP服务器
│ ├── server.ts # MCP服务器入口点
│ ├── pipeline-generator.ts # 管道生成
│ ├── pipeline-analyzer.ts # 安全分析
│ ├── policy-enforcer.ts # 策略执行
│ ├── wiki-parser.ts # 标准解析
│ ├── wiki-manager.ts # 维基管理
│ ├── container.ts # 依赖注入
│ ├── platforms/ # 多平台支持
│ │ ├── azure-devops.ts
│ │ └── github-actions.ts
│ ├── azure-devops/ # Azure DevOps集成
│ │ ├── client.ts
│ │ ├── pr-bot.ts
│ │ └── webhook-handler.ts
│ └── utils/ # 共享工具
│ ├── logger.ts
│ ├── validation.ts
│ └── rate-limiter.ts
├── cli/ # 命令行工具
│ ├── pipeline-assistant.ts
│ ├── wiki-cli.ts
│ └── pr-bot-cli.ts
├── vscode-extension/ # VS Code扩展
├── wiki/standards/ # 企业标准v2.0
│ ├── core/ # 阶段定义
│ ├── security/ # 安全策略
│ ├── quality/ # 质量门
│ ├── platforms/ # 平台模板
│ │ ├── azure/templates/
│ │ └── github/templates/
│ ├── migration/ # 迁移指南
│ └── governance/ # 治理文档
├── tests/ # 测试套件(341+测试)
└── examples/ # 示例管道
| 文档 | 描述 |
|---|---|
| 工作坊指南 | 包含架构深入的完整教程 |
| 使用指南 | 所有平台和配置的参考 |
| 贡献指南 | 如何为项目做贡献 |
| 变更日志 | 版本历史和发布说明 |
{
"mcpServers": {
"pipeline-assistant": {
"command": "node",
"args": ["dist/src/server.js"],
"cwd": "/path/to/pipeline-assistant-mcp"
}
}
}
cd vscode-extension
npm install && npm run compile
# 按F5在开发模式下启动
export AZDO_ORG_URL="https://dev.azure.com/your-org"
export AZDO_PAT="your-personal-access-token"
export AZDO_PROJECT="your-project"
添加.github/workflows/pipeline-review.yml以自动分析PR。
详见使用指南获取详细配置。
Pipeline Assistant使用结构化的标准系统:
| 策略 | 名称 | 级别 |
|---|---|---|
| SEC-001 | 秘密扫描 | 必须 |
| SEC-002 | SAST分析 | 必须 |
| SEC-003 | 依赖扫描 | 必须 |
| SEC-004 | 容器扫描 | 条件 |
| SEC-007 | DAST | 条件 |
| SEC-008 | 许可证合规性 | 必须 |
| SEC-010 | SBOM生成 | 必须 |
npm run dev # 监视模式
npm test # 运行测试(341+测试)
npm run lint # 检查代码风格
npm run build # 构建项目
# 运行所有测试
npm test
# 运行特定测试
npx vitest run tests/policy-enforcer.test.ts
# 带覆盖率运行
npx vitest run --coverage
我们欢迎贡献!请参阅CONTRIBUTING.md获取指南。
Dachi Gogotchuri (@soydachi)