1

有什么方法可以使用 Jenkins 选择参数来控制项目中构建后作业的执行?

我有我的项目正在构建一个战争文件,有时(不是所有时候)我希望将此战争文件发送到 Amazon S3 存储桶,以便我可以将其部署到 EC2 Tomcat 容器。我不希望 Jenkins 每次构建项目时都将战争文件发送到 S3(每天发生很多次),我想要一种方法来控制何时将战争文件发送到 S3。

我能看到的唯一选择是复制我当前的 Jenkins 项目并让新项目将 war 文件发送到 S3,但这意味着我最终将有多个 Jenkins 项目做“几乎”完全相同的事情,这是我试图避免的。

4

1 回答 1

0

不,不要为此制定新的构建计划。甚至声明性管道也支持这种用例,就像没人管一样。一旦你有了一个参数(来自参数步骤。这些将允许你“使用参数构建”并在你想要战争时让一个真实的人选中一个复选框),你可以简单地通过 params.MY_PARAM_NAME 引用它。只需将echo下面的 s 替换为实际代码:

pipeline {
  agent { label 'docker' }

  parameters { booleanParam(name: 'SEND_WAR_TO_S3', defaultValue: false, description: 'Send resulting war file to s3?') }

  stages {
    stage('hot_stage') {
      steps {
        echo 'generating war...'
      }
    }
  }
  post {
    always {
      script {
        if (params.SEND_WAR_TO_S3) {
          echo 'sending war to s3'
        } else {
          echo 'not sending war to s3'
        }
      }
    }
  }
}
于 2017-04-24T00:30:43.960 回答