0

我想添加 mercurial 安装选项,因为 Jenkins 中的 multibranchPipelineJob 不支持它。我想过使用配置块,但它创建了一个新节点“jenkins.branch.BranchSource”,而不是更新现有节点。

configure {            
        (it / 'sources' / 'data' / 'jenkins.branch.BranchSource' (plugin: 'branch-api@2.0.20') / 'source' / 'traits') <<  'hudson.plugins.mercurial.traits.MercurialInstallationSCMSourceTrait' {
            installation  'TortoiseHg-4.5.2-x64'
        }
    }

生成的 config.xml 文件如下所示:

<sources class="jenkins.branch.MultiBranchProject$BranchSourceList">
    <data>
        <jenkins.branch.BranchSource plugin="branch-api@2.0.20">
            <source>
                <traits>
                    <hudson.plugins.mercurial.traits.MercurialInstallationSCMSourceTrait>
                        <installation>TortoiseHg-4.5.2-x64</installation>
                    </hudson.plugins.mercurial.traits.MercurialInstallationSCMSourceTrait>
                </traits>
            </source>
        </jenkins.branch.BranchSource>
        <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/>
            </source>
        </jenkins.branch.BranchSource>
    </data>
    <owner class="org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject" reference="../.."/>
</sources>

我错过了什么?

耆那教。

4

1 回答 1

1

为了以 dsl 格式定义 mercurial SCM 源,用户可以使用 DSL 插件提供的 mercurialSCMSource 方法来定义凭据、源和 id。目前在这种 mercurialSCMSource 方法下,您无法定义 Hg“安装”。因此,指定“安装”选项的一种方法是使用配置块。

当我只使用配置块来定义“安装”时,它正在创建 2 个不同的“BranchSource”节点,如上面的 xml 快照中所述。因此解决此问题的另一种方法是使用配置块来定义整个 mercurialSCMSource,其中包括凭据、源和安装(我需要)。这样它就生成了正确的作业(或 config.xml)

注意:此修复还负责处理本文中提到的“附加 (<<) 不使用属性”:https://github.com/jenkinsci/job-dsl-plugin/wiki/The-Configure-Block

希望能帮助到你!!!

configure { project ->
    def node_base = (project / sources / data / 'jenkins.branch.BranchSource' (plugin: 'branch-api@2.0.20') / 'source' (plugin: 'mercurial@2.3' , class: 'hudson.plugins.mercurial.MercurialSCMSource'))
    node_base << {
        source 'https://somerepolink'
        credentialsId 'username'
    }
    node_base << 'traits' {
        'hudson.plugins.mercurial.traits.MercurialInstallationSCMSourceTrait'{
            installation 'TortoiseHg-4.5.2-x64'
        }
    }
}
于 2018-05-25T10:08:29.873 回答