【发布时间】:2021-05-27 11:12:26
【问题描述】:
在一个实例中有一个 Jenkins 管道,比如说 A。我想在 Jenkins 实例 A 的一个阶段从 Jenkins 实例 B 调用另一个管道。我该如何为此编写一个 groovy? 我查看了this 的答案,但它对我没有用。
【问题讨论】:
标签: jenkins groovy jenkins-pipeline
在一个实例中有一个 Jenkins 管道,比如说 A。我想在 Jenkins 实例 A 的一个阶段从 Jenkins 实例 B 调用另一个管道。我该如何为此编写一个 groovy? 我查看了this 的答案,但它对我没有用。
【问题讨论】:
标签: jenkins groovy jenkins-pipeline
你可以使用jenkins插件Parameterized Remote Trigger
使用方便。
你只需要在manage jenkins中配置jenkins instance B。它在后端使用 jenkins api。
对于 groovy 帮助,您可以查看 http://${JENKINS_URL}/pipeline-syntax
【讨论】:
选项 1: 您可以使用 HttpBuilder 来触发远程构建。你仍然需要Parameterized Build 插件。
import groovyx.net.http.HTTPBuilder
import static groovyx.net.http.ContentType.URLENC
def http = new HTTPBuilder( 'http://server/job/myjob/buildWithParameters' )
def postBody = [parameter: value] // will be url-encoded
http.post( path: '/', body: postBody,
requestContentType: URLENC ) { resp ->
println "POST Success: ${resp.statusLine}"
assert resp.statusLine.statusCode == 201
}
选项 2: 或使用此处描述的 cURL:https://*.com/a/42947382/519852
无论如何,在这两种情况下,它只会触发构建,而不是等待它完成也不会得到它的结果。
【讨论】: