【问题标题】:Jenkins continuous delivery pipeline skip stage based on inputJenkins基于输入的持续交付管道跳过阶段
【发布时间】:2017-04-15 06:28:46
【问题描述】:
简化的流水线如下所示:
1. build
2. unit test
3. deploy to dev
4. integration tests
5. deploy to prod
对于第 5 步,我设置了一个 Jenkins 管道输入命令。我们不会在每次提交时都部署到 prod,所以如果我们中止所有这些工作,它将有一个灰色构建的大列表。是否可以有一个跳过选项,以便构建仍然可以显示为 green blue?
【问题讨论】:
标签:
jenkins
jenkins-pipeline
continuous-deployment
【解决方案1】:
我刚刚找到了一个更好的解决方案。您可以通过使用返回值来访问输入的结果。用户必须选中复选框才能运行可选阶段。否则跳过该阶段的步骤。如果您跳过整个阶段,该阶段将消失并且“清除”阶段视图历史记录。
stage('do optional stuff?') {
userInput = input(
id: 'userInput', message: "Some important question?", parameters: [
booleanParam(defaultValue: false, description: 'really?', name: 'myValue')
])
}
stage('optional: do magic') {
if (userInput) {
echo "do magic"
} else {
// do what ever you want when skipping this build
currentBuild.result = "UNSTABLE"
}
}
【解决方案2】:
你不能做这样的事情吗,无论你从输入中选择什么,它都会是蓝色/绿色,然后你也可以根据它运行部署吗?
def deployToProduction = true
try{
input 'Deploy to Production'
}catch(e){
deployToProduction = false
}
if(deployToProduction){
println "Deploying to production"
}
【解决方案3】:
怎么样:
stage('Deploy') {
when { branch 'master' }
steps {
sh '...'
}
}
}
其他分支上的提交将跳过该阶段,并将为绿色。
【解决方案4】:
您可以使用下游/上游配置来设置作业,而不是使用管道作为代码 Jenkins2 功能。
构建 -> 单元测试 -> 部署到开发 -> 集成测试 -> 升级到产品 -> 部署到产品
目前,它提供了更多控制来选择您希望生产的管道版本。
为了获得更高的可见性,您可以使用 Delivery-Pipeline-Plugin 配置 Delivery Pipeline。