我正在使用Jenkins Job DSL为多个SOA风格的服务构建流水线。所有这些服务的流水线都是相同的。
job('wibble') {
publishers {
downstreamParameterized {
trigger("SOA_Pipeline_Builder") {
condition('SUCCESS')
parameters {
predefinedProp('PROJECT_NAME', "myproject-2" )
predefinedProp('PROJECT_REPO', "myprojecttwo@gitrepo.com" )
}
}
trigger("SOA_Pipeline_Builder") {
condition('SUCCESS')
parameters {
predefinedProp('PROJECT_NAME', "myproject-1" )
predefinedProp('PROJECT_REPO', "myprojectone@gitrepo.com" )
}
}
}
}
}
由于我每天都在添加新项目,所以我不得不不断操作DSL。我已经决定将所有的配置都放在DSL之外的yaml文件中。我知道可以使用groovy创建数组、循环等,但是我一直没有太大的成功。 我正在尝试做这样的事情...
@Grab('org.yaml:snakeyaml:1.17')
import org.yaml.snakeyaml.Yaml
List projects = new Yaml().load(("conf/projects.yml" as File).text)
job('wibble') {
publishers {
downstreamParameterized {
projects.each {
trigger("SOA_Pipeline_Builder") {
condition('SUCCESS')
parameters {
predefinedProp('PROJECT_NAME', it.name )
predefinedProp('PROJECT_REPO', it.repo )
}
}
}
}
}
}
conf/projects.yml
---
- name: myproject-1
repo: myprojectone@gitrepo.com
- name: myproject-2
repo: myprojecttwo@gitrepo.com
有没有人对这种事情有经验?