【问题标题】: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。

        【讨论】:

          最近更新 更多