我正在编写一些用于生成 Jenkins 作业的代码,并且我正在使用 Kotlin 作为生成 Jenkins 作业的逻辑。 我使用的 Jenkins 插件是 Jenkins Job DSL 插件,它是用 Groovy 编写的,用于生成作业。 由于不知道如何创建适当的 groovy.lang.Closure 对象,因此从 Kotlin 代码调用 Groovy 代码时,我无法设置
definition
参数。
这是我的 Kotlin 代码:
val pipelineJob = dslFactory.pipelineJob("my-job")
// pipelineJob.definition(JOB_DEFINITION_GOES_HERE) <-- this is the part I can't figure out
这是 Groovy 中的代码,我正在尝试将其移植到 Kotlin 中:
dslFactory.pipelineJob("my-job").with {
definition {
cps {
script("deleteDir()")
sandbox()
}
}
}
这是我调用的方法的定义:
void definition(@DslContext(WorkflowDefinitionContext) Closure definitionClosure) {
其他链接: Dsl工厂
closureOf<T>()
:
dslFactory.pipelineJob("my-job").apply {
definition(closureOf<WorkflowDefinitionContext> {
cps(closureOf<CpsContext> {
script("deleteDir()")
sandbox()
})
})
}