使用 Jenkins Parametrised Build 来控制 Post-Build Actions 的执行

Use Jenkins Parametrised Build to control execution of Post-Build Actions

有什么方法可以使用 Jenkins Choice Parameters 来控制项目中 Post-Build 作业的执行?

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

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

不,不要为此制定新的构建计划。甚至声明性管道也像无人管的那样支持这个用例。一旦你有一个参数(从参数步骤。这些将允许你 "Build with parameters" 并让一个实际的人在你想要 war 发货时选中一个复选框),你可以简单地通过 params.MY_PARAM_NAME。只需将下面的 echos 替换为实际代码:

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'
        }
      }
    }
  }
}