Skip to content
返回部署

使用 GoCD 部署

持续交付服务器,支持价值流图和流水线即代码。

CI/CD进阶

为什么

GoCD 将整个交付流水线可视化为价值流图,使瓶颈和依赖一目了然。DORA 2024 DevOps 状态报告显示精英团队部署频率比低绩效团队高 973 倍。

带自动化测试的 CI/CD 管道将变更失败率降至 5-15%,而手动部署为 40-60%。

何时使用

需要可视化流程跟踪和扇入/扇出的复杂交付流水线。贡献者少于 5 人的仓库避免复杂管道编排 — pre-commit 钩子 + GitHub Actions 足够。

除非需要 GPU 或 VPN 访问,否则跳过自托管 runner。

如何做

# GoCD 管道 配置 (XML) <pipeline name="build-and-deploy"> <materials> <git url="https://github.com/myorg/app.git" branch="main" /> </materials> <stage name="build"> <jobs> <job name="compile"> <tasks> <exec command="npm" args="ci" /> <exec command="npm" args="run build" /> </tasks> <artifacts> <artifact src="dist/**" /> </artifacts> </job> </jobs> </stage> <stage name="deploy"> <jobs> <job name="deploy-prod"> <tasks> <exec command="kubectl" args="apply -f k8s/" /> </tasks> </job> </jobs> </stage> </pipeline> 4. 验证部署 — curl -I https://your-app.example.com 5. 监控日志 — 前 5 分钟检查错误 6. 需要时回滚 — 回退到上一版本

示例

# GoCD 服务器 via Docker docker run -d --name gocd-server \ -p 8153:8153 -p 8154:8154 \ -v gocd-data:/godata \ gocd/gocd-server:v24.1

常见问题

  • ⚠配置仓库未更新 — 检查 material 轮询
  • ⚠Agent 空闲 — 确保弹性 agent 插件已配置
  • ⚠环境间配置漂移 — 使用基础设施即代码(Terraform/Pulumi)保持 dev/staging/prod 一致

最佳实践

  • ✓用 config repo — 流水线定义放 Git
  • ✓用弹性 agent — 按构建需求扩缩
  • ✓设置健康检查和优雅关闭 — 处理 SIGTERM 以在退出前排空进行中的请求

常见问题解答