避免Jenkins作业DSL API上的重复
我正在使用Jenkins Job DSL插件配置两个Jenkins Job,在我的两个Job的步骤部分中几乎相同,只需通过“couchbase”更改一个值“builder” 现在看来,我正在干涸,我正在复制大量代码。由于我对DSL非常陌生,我不太确定API是否允许创建一种通用代码,以避免重复我正在做的步骤避免Jenkins作业DSL API上的重复,jenkins,jenkins-job-dsl,Jenkins,Jenkins Job Dsl,我正在使用Jenkins Job DSL插件配置两个Jenkins Job,在我的两个Job的步骤部分中几乎相同,只需通过“couchbase”更改一个值“builder” 现在看来,我正在干涸,我正在复制大量代码。由于我对DSL非常陌生,我不太确定API是否允许创建一种通用代码,以避免重复我正在做的步骤 job("images/builder") { concurrentBuild() triggers { githubPush() } scm { git
job("images/builder") {
concurrentBuild()
triggers {
githubPush()
}
scm {
git {
remote {
github("aws", "https", "github.dev.global.com")
credentials('***********')
}
}
}
steps {
shell('export AWS_DEFAULT_REGION=eu-west-1')
shell('$(aws ecr get-login --region eu-west-1)')
shell('docker build -t builder -f ./images/builder/Dockerfile .')
shell('docker tag -f builder:latest **********.dkr.ecr.eu-west-1.amazonaws.com/builder:latest')
shell('docker push **********.dkr.ecr.eu-west-1.amazonaws.com/builder:latest)')
}
}
job("images/couchbase") {
concurrentBuild()
triggers {
githubPush()
}
scm {
git {
remote {
github("aws2", "https", "github.dev.global.com")
credentials('****************')
}
}
}
steps {
shell('export AWS_DEFAULT_REGION=eu-west-1')
shell('$(aws ecr get-login --region eu-west-1)')
shell('docker build -t builder -f ./images/couchbase/Dockerfile .')
shell('docker tag -f builder:latest ********.dkr.ecr.eu-west-1.amazonaws.com/couchbase:latest')
shell('docker push **********.dkr.ecr.eu-west-1.amazonaws.com/couchbase:latest)')
}
}
如果两个命名项目的步骤相同,那么循环就足够了:
String[] names = ["builder", "couchbase"]
names.each {
job("images/" + it) {
concurrentBuild()
triggers {
githubPush()
}
scm {
git {
remote {
github("aws2", "https", "github.dev.global.com")
credentials('****************')
}
}
}
steps {
shell('export AWS_DEFAULT_REGION=eu-west-1')
shell('$(aws ecr get-login --region eu-west-1)')
shell('docker build -t builder -f ./images/' + it + '/Dockerfile .')
shell('docker tag -f builder:latest ********.dkr.ecr.eu-west-1.amazonaws.com/' + it + ':latest')
shell('docker push **********.dkr.ecr.eu-west-1.amazonaws.com/' + it + ':latest)')
}
}
}
如果您想要更复杂的东西,请看一看,具体地说,and作业DSL是基于此构建的,因此可以将其与Groovy代码混合使用,以便在种子作业中添加更多逻辑。结果遵循干燥法则。