当前位置:  开发笔记 > 运维 > 正文

在多分支管道上触发分支索引(Jenkins/Git)

如何解决《在多分支管道上触发分支索引(Jenkins/Git)》经验,为你挑选了1个好方法。

我正试图在Jenkins的Multibranch Pipelines作业中自动触发'Branch Indexing'.

目前,只有一种方法似乎实际工作,即轮询,但我无法做到这一点,无论如何轮询是一个糟糕的解决方案.

该插件不支持"远程触发器构建(例如,从脚本)"(选项未保存),因此我无法通过推送等Web挂钩触发它.

我尝试在repo上创建一个"触发器"自由式构建,但是"构建后操作 - 构建其他项目"声称Multibranch Pipeline项目不是可构建的项目.

如果轮询是我能做到这一点的唯一方法,那么我需要禁用自动SCM触发(否则我们在重新索引时会得到重复的构建)因为我需要在分支项目上启用web钩子触发.

但这不起作用,因为我通过分支项目中的管道脚本设置Web挂钩,并且您需要至少构建一次以使该属性已注册.

我已经在圈子里走了一段时间,所以希望我错过了一些明显的东西,但任何帮助都会受到赞赏.

我想象能够做到以下之一

以某种方式触发多分支项目作为下游项目

轮询multibranch项目,只构建以前没有构建的分支项目

干杯



1> jjc..:

ComputedFolder.scheduleBuild()可以从groovy脚本调用该方法.

我刚从一个不同的multibranch管道项目中的groovy代码触发了一个multibranch管道项目中的分支索引,然后触发该项目中的下游构建.

代码类似于:

@NonCPS
void scanRepo(String downStreamProjectName) {
    Jenkins.instance.getItemByFullName(downStreamProjectName).scheduleBuild()
}
...
String downStreamProject = 'my-folder/my-multibranch-project'
String downStreamJob = "${downStreamProject}/${env.BRANCH_NAME}"
if (Jenkins.instance.getItemByFullName(downStreamJob) == null) {
    scanRepo(downStreamProject)
    while (Jenkins.instance.getItemByFullName(downStreamJob) == null) {
        sleep(1)
    }
}
build([job: downStreamJob, wait: false, quietPeriod: 0])

请注意,Jenkins.instance.getItemByFullName(downStreamProjectName)WorkflowMultiBranchProject这不是Serializable,所以一些护理需要采取.

推荐阅读
jerry613
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有