触发器在Jenkinsfile中远程构建(例如从脚本)语法

时间:2019-11-25 05:12:35

标签: jenkins jenkins-pipeline jenkins-groovy

我在自由泳工作中使用了此选项,但是现在我的团队正朝着制定标准格式的方向发展,所以我不得不用Pipeline脚本编写所有的自由泳工作,而且我在Google上搜索了很多,但是却不知道如何写这个管道脚本中的选项。

1 个答案:

答案 0 :(得分:1)

您可以使用triggerRemoteJob管道步骤来触发远程Jenkins作业。

  

文档:https://jenkins.io/doc/pipeline/steps/Parameterized-Remote-Trigger/

这是一个简短的示例,说明了如何将此步骤与身份验证一起使用。我使用Jenkins用户令牌进行身份验证-令牌和用户名存储在ID为xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx(混淆的ID ofc)的Jenkins凭证中。下例中的远程作业是通过单个参数foo == qwe123触发的,它配置为等待远程作业完成,如果失败,则触发远程作业的作业工作也会失败。

pipeline {
  agent any

  stages {
    stage("Execute remote job") {
      steps {
        script {
          def jobUrl = "https://remote-jenkins-host/job/remote-job-to-trigger/"

          withCredentials([[$class: 'UsernamePasswordMultiBinding', credentialsId: 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx', usernameVariable: 'USERNAME', passwordVariable: 'TOKEN']]) {

            def handle = triggerRemoteJob job: jobUrl,
                  blockBuildUntilComplete: true,
                  shouldNotFailBuild: true,
                  parameters: "foo=qwe123",
                  auth: TokenAuth(apiToken: env.TOKEN, userName: env.USERNAME)

            echo "Remote tests status: ${handle.buildStatus.toString()}"
          }
        }
      }
    }
  }
}

希望有帮助。