Jenkins 多分支管道和指定上游项目
Jenkins multi-branch pipeline and specifying upstream projects
我们目前使用 Jenkins 作业 DSL 在每个 Git 分支基础上生成大量 Jenkins 作业;多分支管道插件看起来是一种有趣的方式,可以使用 Jenkinsfiles 获得 first-class 作业生成支持并减少我们维护的作业 DSL 的数量。
比如我们有libwidget-server和widget-server开发分支项目。当 libwidget-server 构建完成时,将触发 widget-server 作业(对于 develop 分支)。这也适用于其他分支。
这利用 Build after other projects are built
在上游构建完成时触发(例如 libwidget-server 导致构建 widget-server)。
多分支管道插件似乎缺少 Build after other projects are built
设置 - 我们如何在多分支管道构建中完成上述操作?
我目前正试图让它为我们的部署工作。
我得到的最接近的是将以下内容添加到下游 Jenkinsfile;
properties([
pipelineTriggers([
triggers: [
[
$class: 'jenkins.triggers.ReverseBuildTrigger',
upstreamProjects: "some_project", result: hudson.model.Result.SUCCESS
]
]
]),
])
至少让詹金斯承认它应该在什么时候触发
'some_project' 已构建,即它出现在 "View Configuration" 页面中。
但是到目前为止 'some_project' 的构建仍然没有触发下游
项目符合预期。
话虽这么说,也许你会有更多的运气。
让我知道它是否适合你。
(这里有人问过类似问题 -> )
您应该将分支名称添加到您的上游作业(假设您也在为上游作业使用多分支管道)。
假设您有一个包含两个作业的文件夹,都是多分支管道作业:jobA
和 jobB
; jobB
应该在 jobA
的 master
之后触发。
您可以将此代码片段添加到 jobB
的 Jenkinsfile:
properties([
pipelineTriggers([
upstream(
threshold: 'SUCCESS',
upstreamProjects: '../jobA/master'
)
])
])
(注意这里jobB
的任何分支都会在jobA
的主人之后触发!)
我们目前使用 Jenkins 作业 DSL 在每个 Git 分支基础上生成大量 Jenkins 作业;多分支管道插件看起来是一种有趣的方式,可以使用 Jenkinsfiles 获得 first-class 作业生成支持并减少我们维护的作业 DSL 的数量。
比如我们有libwidget-server和widget-server开发分支项目。当 libwidget-server 构建完成时,将触发 widget-server 作业(对于 develop 分支)。这也适用于其他分支。
这利用 Build after other projects are built
在上游构建完成时触发(例如 libwidget-server 导致构建 widget-server)。
多分支管道插件似乎缺少 Build after other projects are built
设置 - 我们如何在多分支管道构建中完成上述操作?
我目前正试图让它为我们的部署工作。 我得到的最接近的是将以下内容添加到下游 Jenkinsfile;
properties([
pipelineTriggers([
triggers: [
[
$class: 'jenkins.triggers.ReverseBuildTrigger',
upstreamProjects: "some_project", result: hudson.model.Result.SUCCESS
]
]
]),
])
至少让詹金斯承认它应该在什么时候触发 'some_project' 已构建,即它出现在 "View Configuration" 页面中。
但是到目前为止 'some_project' 的构建仍然没有触发下游 项目符合预期。
话虽这么说,也许你会有更多的运气。 让我知道它是否适合你。
(这里有人问过类似问题 ->
您应该将分支名称添加到您的上游作业(假设您也在为上游作业使用多分支管道)。
假设您有一个包含两个作业的文件夹,都是多分支管道作业:jobA
和 jobB
; jobB
应该在 jobA
的 master
之后触发。
您可以将此代码片段添加到 jobB
的 Jenkinsfile:
properties([
pipelineTriggers([
upstream(
threshold: 'SUCCESS',
upstreamProjects: '../jobA/master'
)
])
])
(注意这里jobB
的任何分支都会在jobA
的主人之后触发!)