我想创建一个将配置块添加到自由式作业的类
我尝试了以下代码
class BuildFramework {
static myConfiguration(dslFactory, product, version, owner) {
dslFactory.configure { project ->
project / 'properties' / 'com.xxx.hudson.plugins.standard.AdditionalJobProperties'{
productField(product)
versionField(version)
ownersField(owner)
}
}
}
}
freeStyleJob("my_job")
{
BuildFramework.myConfiguration(this, 'XXX', '10.4.6', 'root' )
}
我收到以下错误:
处理提供的DSL脚本 错误:(脚本,第3行)没有方法签名:script.configure()适用于参数类型:(BuildFramework $ _myConfiguration_closure1)值:[BuildFramework $ _myConfiguration_closure1 @ 6bf9cbc5]
答案 0 :(得分:0)
configure
方法在DSL工厂的顶层不可用,它只能在作业环境中使用,例如:在freeStyleJob
内。
class BuildFramework {
static Closure myConfiguration(product, version, owner) {
return { project ->
project / 'properties' / 'com.xxx.hudson.plugins.standard.AdditionalJobProperties'{
productField(product)
versionField(version)
ownersField(owner)
}
}
}
}
freeStyleJob('example') {
configure BuildFramework.myConfiguration('XXX', '10.4.6', 'root')
}
有关详细信息,请参阅Job DSL wiki:https://github.com/jenkinsci/job-dsl-plugin/wiki/The-Configure-Block#reusable-configure-blocks
答案 1 :(得分:0)
我发现了问题 第一个是“所有者”参数名称有问题 第二个是我需要将“it”而不是“this”传递给函数。
class BuildFramework {
static myConfiguration(dslFactory, product, version, a_owner) {
dslFactory.configure { project ->
project / 'properties' / 'com.xxx.hudson.plugins.standard.AdditionalJobProperties'{
productField(product)
versionField(version)
ownersField(a_owner)
}
}
}
}
freeStyleJob("my_job")
{
BuildFramework.myConfiguration(it, 'XXX', '10.4.6', 'root' )
}