有时候我们需要使用一台虚拟机上的Jenkins的job去 触发另一台虚拟机上的Jenkins的job。

网上已有的教程很多都是使用Parameterrized Remote Trigger Plugin插件进行触发。今天我们讲一个更简单的方式,就是使用curl。

假设我们用Jenkins1的Job1去触发Jenkins2 的job2

1 命令说明

curl X GET --url "https://jenkins.url.com/foldername/job/foldername/job/yourJobName/buildWithParameters?token=your_token_in_remote_jenkins¶m1=value¶m2=value" --user username:credentialID -x http://webproxy.url:port

上面代码为:

curl X GET --url “https://jenkins.url.com/foldername/job/foldername/job/yourJobName/buildWithParameters?token=your_token_in_remote_jenkins¶m1=value¶m2=value” --user username:credentialID -x http://webproxy.url:port

如果连接Jenkins2不需要加代理,只需要把-x http://webproxy.url:port去掉即可。

我们只需要在Jenkins1的Job1中将上述代码放到pipeline里,如果Jenkins的虚拟机是Windows系统,只需要使用bat命令启动即可:

pipeline {
    agent {label 'labelname'}
    stages {
        stage('Trigger Job') {
            steps {
               bat 'curl X GET --url "https://jenkins.url.com/foldername/job/foldername/job/yourJobName/buildWithParameters?token=your_token_in_remote_jenkins¶m1=value¶m2=value" --user username:credentialID -x http://webproxy.url:port'
            }
        }   
    } 
}

以上就可以触发了。但是此时我们传参是固定的value。我们将其设置成参数化形式:

pipeline {
    agent {label 'labelname'}
    parameters {
      string 'param1'
      string 'param2'
    }
    stages {
        stage('Trigger Job') {
            steps {
               bat 'curl X GET --url "https://jenkins.url.com/foldername/job/foldername/job/yourJobName/buildWithParameters?token=your_token_in_remote_jenkins¶m1="%param1"%¶m2="%param2%"" --user username:credentialID -x http://webproxy.url:port'
            }
        }   
    } 
}

解释:

因为Jenkins1是Windows系统,需要用bat命令

在bat中变量调用使用"%paramName%"的形式,使用jenkins freestyle jenkins freestyle 调用另一个job_单元测试{paramName}都是无法调用成功的。

命令中的token需要加在Jenkins2 的job2中,如下图:

jenkins freestyle jenkins freestyle 调用另一个job_jenkins_02