2016-11-04 125 views
0

我正在使用我非常喜欢的新Jenkins管道DSL。我的Jenkinsfile可能是相当典型的,使用maven在GIT的master分支中编译/单元测试代码,是一个码头构建,部署到舞台等。对管道的末端有一个手动步骤,用户必须确认建立生产,例如Jenkins管道DSL自动中止输入

stage name: 'Production Deploy', concurrency:1 
input 'Do you want to deploy to production?' 
node { 
    sh "./bin/production-deploy.sh" 
} 

但是,构建块直到有人接受/拒绝。有没有办法自动拒绝input,如果有人踢掉了构建(通过合并代码到master分支)?

+2

分离CD管道的CI管道。在您构建,测试和部署从开发阶段到登台阶段的CI管道中,有人验证登台部署,并在第二步中在部署到生产阶段时执行DC管道。这样你就有了独立的生命周期开发过程和独立的交付过程。 – johnnynemonic

+0

你是否建议每个项目有2个管道?这是做这件事的最佳做法吗?我认为(通过阅读“持续交付”一书http://martinfowler.com/books/continuousDelivery.html),您希望在单个构建流水线中的所有阶段(编译 - >分段 - > QA - >等 - >生产) – bobmarksie

+1

你的情况,是的。在本书提出的案例中,如果整个过程是自动化的,并且没有暂停或人为交互,那么顺利进行。并且您已在您的基础架构中实施了一些蓝/绿部署的功能,这些功能允许在VM节点中验证您的部署,同时为其他VM节点提供生产服务。 – johnnynemonic

回答

0

我向您分离了Continuos Delivery管道的Continuos Integration管道。在您构建,测试和部署从开发阶段到登台阶段的CI管道中,然后有人验证登台部署,以及在下一步执行DC管道时所有登台测试都正常的情况;是当你部署到生产阶段。那样你就有了独立的生命周期开发过程和独立的交付过程。