如何在Jenkins multibranchPipelineJob中添加Hg安装选项并解决节点新增问题
解决Jenkins Multibranch Pipeline Job中Mercurial安装选项添加问题
你的问题出在configure块的路径定位逻辑错误:你直接在sources/data下新建了一个jenkins.branch.BranchSource节点,而没有找到已有的、关联MercurialSCMSource的分支源节点去修改它的traits配置。
正确的Configure代码实现
我们需要先定位到已存在的Mercurial分支源节点,再给它的traits添加安装特性,而不是创建新节点。修改后的configure块如下:
configure { node -> // 筛选出包含MercurialSCMSource的目标BranchSource节点 def targetBranchSource = node / 'sources' / 'data' / 'jenkins.branch.BranchSource'.find { (it / 'source').@class == 'hudson.plugins.mercurial.MercurialSCMSource' } // 给目标节点的trails添加Mercurial安装配置 targetBranchSource / 'source' / 'traits' << 'hudson.plugins.mercurial.traits.MercurialInstallationSCMSourceTrait' { installation 'TortoiseHg-4.5.2-x64' } }
代码逻辑说明
- 精准定位目标节点:通过
find方法遍历所有BranchSource节点,筛选出source的class属性为hudson.plugins.mercurial.MercurialSCMSource的节点——这就是你原本配置的Mercurial代码源节点。 - 修改原有配置:在找到的目标节点的
source/traits下添加安装特性,这样会直接更新现有分支源的配置,而不会额外新增节点。
修改后预期的config.xml效果
修改后,sources/data下只会保留一个jenkins.branch.BranchSource节点,且它的traits会被正确填充:
<sources class="jenkins.branch.MultiBranchProject$BranchSourceList"> <data> <jenkins.branch.BranchSource plugin="branch-api@2.0.20"> <source plugin="mercurial@2.3" class="hudson.plugins.mercurial.MercurialSCMSource"> <source>https://somerepopath</source> <credentialsId>username</credentialsId> <traits> <hudson.plugins.mercurial.traits.MercurialInstallationSCMSourceTrait> <installation>TortoiseHg-4.5.2-x64</installation> </hudson.plugins.mercurial.traits.MercurialInstallationSCMSourceTrait> </traits> </source> </jenkins.branch.BranchSource> </data> <owner class="org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject" reference="../.."/> </sources>
内容的提问来源于stack exchange,提问作者Jain
相关产品推荐
相关产品推荐

