Mis*_*rev 6 groovy jenkins jenkins-job-dsl
我想统一 Jenkins 作业生成过程,并希望将一个文件传递给Process Job DSLs步骤。
所以我可以改变当前版本的 DSL 中包含的文件。假设我有这些文件:
..
Release.groovy
FirstPipeline.groovy
SecondPipeline.groovy
Run Code Online (Sandbox Code Playgroud)
我希望 Release.groovy 包含两个管道或可能只是单个管道。
管道文件内部没有 Class 结构,所以我不能像导入库一样导入它们。它只是这样的:
import mylibs.jobs.UsefulJob1
import mylibs.jobs.UsefulJob2
import mylibs.jobs.FirstPipeline
def firstPipeline = new FirstPipeline()
multiJob(firstPipeline.name) {
// multijob steps
}
Run Code Online (Sandbox Code Playgroud)
我尝试使用评估,但结果证明它仅适用于简单的脚本。如果您将它与更复杂的导入库层次结构和元编程一起使用,它会失败并出现几乎无法解释的错误。
对于那些想知道答案是什么的人。我最终将这些脚本重构为类。就我而言,firstPipeline看起来像这样:
package pipelines
import mylibs.jobs.UsefulJob1
import mylibs.jobs.UsefulJob2
import javaposse.jobdsl.dsl.DslFactory
class FirstPipeline {
public FirstPipeline(DslFactory dslFactory) {
dslFactory.multiJob('first_pipeline') {
// multijob steps
}
}
}
Run Code Online (Sandbox Code Playgroud)
然后你可以将它们全部收集到一个文件中:
import pipelines.FirstPipeline
import pipelines.SecondPipeline
new FirstPipeline(this)
new SecondPipeline(this)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1940 次 |
| 最近记录: |