[英]Avoid duplicity on Jenkins Job DSL API
我正在使用Jenkins Job DSL Plugin配置幾個 Jenkins 作業,在我的兩個作業的步驟部分幾乎相同,只需要通過“ couchbase ”更改一個值“ builder ”。
現在似乎我正在打破 DRY 並且我正在復制很多代碼。 由於我是 DSL 的新手,我不太確定 API 是否允許創建一種通用代碼來避免我正在做的重復步驟。
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)')
}
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.