我正在将Jenkins的工作从手动配置转换为DSL,这意味着我正在尝试创建一个DSL脚本来创建今天的工作。
作业当前已参数化,其中一个参数的类型为“用于复制工件的构建选择器”。我可以在作业XML中看到它是copyartifact插件,特别是我需要使用BuildSelectorParameter。
然而,Jenkins DSL API没有使用此插件设置参数的指导 - 它只是帮助使用它来创建构建步骤,这不是我需要的。
我也无法在API中的参数选项下找到任何与此相关的内容。
我想在DSL种子脚本中包含一些内容,它将在生成的作业中创建一个与图像中的参数匹配的参数。
如果我需要使用配置块,那么欢迎使用任何提示,因为对于初学者来说,这方面的文档是没用的。
答案 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
节点。job
运算符将返回具有给定节点的节点的子节点,如果它不存在则创建。/
运算符会将左侧操作数作为右侧操作数附加给节点。<<
答案 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') }
}