使用Jenkins DSL添加参数“用于复制工件的构建选择器”

时间:2016-11-24 14:57:43

标签: groovy jenkins-plugins jenkins-job-dsl

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

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

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

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

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

parameter

如果我需要使用配置块,那么欢迎使用任何提示,因为对于初学者来说,这方面的文档是没用的。

2 个答案:

答案 0 :(得分:3)

我找不到其他方法来设置构建选择器参数但使用配置块。这就是我以前设置的内容:

{% for profile in site.profiles %}
    {% for user in profile %}
        {{ user.username }}
    {% endfor %}
{% endfor %}

为了实现这一点,我使用构建选择器参数手动创建了一个作业。然后在jenkins下查找作业的XML配置,以查看相关部分,在我的情况下:

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()
            }
        }
    }
}

要使用<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运算符将返回具有给定节点的节点的子节点,如果它不存在则创建。
  • 使用/运算符会将左侧操作数作为右侧操作数附加给节点。
  • 创建节点时,您可以在构造函数中为其指定属性,如:<<
  • 您可以将lambda传递给新节点并使用它来填充其内部结构。

答案 1 :(得分:0)

我有Jenkins版本1.6(带有复制工件插件),你可以在DSL中这样做:

job('my-job'){
  steps{
        copyArtifacts('job-id') {
            includePatterns('artifact-name')
            buildSelector { latestSuccessful(true) }
        }
    }
}

完整示例:

job('03-create-hive-table'){
    steps{
        copyArtifacts('seed-job-stash') {
            includePatterns('jenkins-jobs/scripts/landing/hive/landing-table.sql')
            buildSelector { latestSuccessful(true) }
        }
        copyArtifacts('02-prepare-landing-dir') {
            includePatterns('jenkins-jobs/scripts/landing/shell/02-prepare-landing-dir.properties')
            buildSelector { latestSuccessful(true) }
        }
        shell(readFileFromWorkspace('jenkins-jobs/scripts/landing/03-ps-create-hive-table.sh'))
    }
    wrappers {
        environmentVariables {
            env('QUEUE', 'default')
            env('DB_NAME', 'table_name')
            env('VERSION', '20161215')
        }
        credentialsBinding { file('KEYTAB', 'mycred') }
    }
    publishers{ archiveArtifacts('03-create-landing-hive-table.properties') }
}