【发布时间】:2016-11-04 12:00:02
【问题描述】:
我正在使用我非常喜欢的新的 Jenkins 管道 DSL。我的Jenkinsfile 可能是相当典型的,它使用 maven 在 GIT 的master 分支中编译/单元测试代码,进行 docker 构建,部署到暂存等。在管道结束时,有一个手动步骤,用户有确认构建是否投入生产,例如
stage name: 'Production Deploy', concurrency:1
input 'Do you want to deploy to production?'
node {
sh "./bin/production-deploy.sh"
}
但是,在有人接受/拒绝之前,构建会阻塞。如果其他人启动构建(通过将代码合并到master 分支),有没有办法自动拒绝input?
【问题讨论】:
-
分离CD流水线的CI流水线。在您构建、测试、部署从开发阶段到暂存阶段的 CI 管道中,有人验证暂存部署,而在第二步中,您在部署到生产阶段时执行 DC 管道。这样您就有了独立的生命周期开发流程和独立的交付流程。
-
您是否建议每个项目有 2 个管道?这是这样做的最佳实践方式吗?我认为(通过阅读“持续交付”一书martinfowler.com/books/continuousDelivery.html)您希望所有阶段(编译 -> 登台 -> QA -> 等 -> 生产)都在一个构建管道中
-
在你的情况下,是的。在本书建议的情况下,当您将整个过程自动化并且没有暂停或人工交互时,进展顺利。你已经在你的基础设施中实现了一些蓝/绿部署,允许在一个VM节点中验证你的部署,而其他VM节点提供生产服务。
-
其他人都同意这一点吗?也许@johnnynemonic 你创建了一个答案,看看有多少人投票?
标签: maven jenkins jenkins-pipeline