有时候我们需要使用一台虚拟机上的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%"的形式,使用{paramName}都是无法调用成功的。
命令中的token需要加在Jenkins2 的job2中,如下图: