避免在Jenkins Job DSL API上出现问题

时间:2016-05-05 17:33:53

标签: jenkins jenkins-job-dsl

我正在使用 Jenkins Job DSL插件配置一些Jenkins作业,并且在我的两个作业的步骤部分中它几乎相同,只需更改一个值“建设者“by” couchbase “。

现在好像我正在打破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)')
}

}

1 个答案:

答案 0 :(得分:1)

如果它和两个命名项目的步骤一样简单,那么循环就足够了:

SELECT term_taxonomy_id FROM wp_term_relationships WHERE object_id = 8 AND NOT
IN(SELECT term_taxonomy_id FROM wp_term_relationships WHERE object_id =
1 OR 2 OR 3 OR 4 OR 5)

如果您想要更复杂的内容,请查看these examples,特别是job builder classusage of it