groovy - 使用 Jenkins DSL 添加参数 "Build Selector for Copy Artifact"

标签 groovy jenkins-plugins jenkins-job-dsl

我正在将 Jenkins 作业从手动配置转换为 DSL,这意味着我正在尝试创建一个 DSL 脚本来创建当前的作业。

该作业当前已参数化,其中一个参数属于“复制工件的构建选择器”类型。我可以在作业 XML 中看到它是 copyartifact 插件,特别是我需要使用 BuildSelectorParameter。

然而,Jenkins DSL API 没有关于使用这个插件来设置参数的指导——它只是帮助使用它来创建一个构建步骤,这不是我需要的。

在 API 中的参数选项下,我也找不到与此相关的任何内容。

我想在 DSL 种子脚本中包含一些内容,它将在生成的作业中创建一个与图像中的参数匹配的参数。

parameter

如果我需要使用 configure 块,那么欢迎使用任何提示,因为对于初学者来说,关于此的文档非常无用。

最佳答案

我没有找到其他方法来设置构建选择器参数,而是使用配置块。这是我用来设置它的:

freeStyleJob {
    ...
    configure { project ->
        def paramDefs = project / 'properties' / 'hudson.model.ParametersDefinitionProperty' / 'parameterDefinitions'
        paramDefs << 'hudson.plugins.copyartifact.BuildSelectorParameter'(plugin: "copyartifact@1.38.1") {
            name('BUILD_SELECTOR')
            description('The build number to deploy')
            defaultSelector(class: 'hudson.plugins.copyartifact.SpecificBuildSelector') {
                buildNumber()
            }
        }
    }
}

为了达到这个目的,我使用构建选择器参数手动创建了一个作业。然后在 jenkins 下查找作业的 XML 配置以查看相关部分,在我的情况下:
<project>
    ...
    <properties>
        <hudson.model.ParametersDefinitionProperty>
            <parameterDefinitions>
                ...
                <hudson.plugins.copyartifact.BuildSelectorParameter plugin="copyartifact@1.38.1"
                    <name>BUILD_SELECTOR</name>
                    <description></description>
                    <defaultSelector class="hudson.plugins.copyartifact.SpecificBuildSelector">
                        <buildNumber></buildNumber>
                    </defaultSelector>
                </hudson.plugins.copyartifact.BuildSelectorParameter>
            </parameterDefinitions>
        </hudson.model.ParametersDefinitionProperty>
    </properties>
    ...
</project>

使用 configure 复制它条款你需要了解以下几点:
  • configure 子句的第一个参数是 job节点。
  • 使用 /运算符将返回具有给定节点的节点的子节点,如果它不存在则创建。
  • 使用 <<运算符会将作为右侧操作数给出的节点附加到左侧操作数。
  • 创建节点时,您可以在构造函数中为其赋予属性,例如:myNodeName(attrributeName: 'attributeValue')
  • 您可以将 lambda 传递给新节点并使用它来填充其内部结构。
  • 关于groovy - 使用 Jenkins DSL 添加参数 "Build Selector for Copy Artifact",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40789477/

    相关文章:

    jenkins - 在 Jenkins office-365-connector-plugin 中使用宏

    groovy - Jenkinsfile 是纯 Groovy 中的吗?在 Jenkinsfile 的 `steps` 中使用了什么 Groovy 语言构造?

    git describe --tags 不适用于 Jenkins 管道构建

    groovy - 如何测试 bean 属性是否可写?

    java - 我如何检查字符串是否是 Groovy 中的 IP?

    Jenkins (Hudson) - 管理并行构建之间的依赖关系

    Jenkins 从 docker 容器发布 HTML

    groovy - 在 Groovy 中,为什么 '==' 的行为对于扩展 Comparable 的接口(interface)会发生变化?

    exception - Grails 错误处理程序总是接收空指针

    Jenkins - 无需身份验证即可从命令行下载存档的工件