仅将dsl作业shell合并为一个

时间:2016-05-06 11:28:54

标签: jenkins jenkins-job-dsl

我有这个步骤

 def createJob(def jobName,
          def branchName) {


    job(jobName) {

      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/'+branchName+'/Dockerfile .')
        shell('docker tag -f '+branchName+':latest *******.dkr.ecr.eu-west-1.amazonaws.com/'+branchName+':latest')
        shell('docker push *********.dkr.ecr.eu-west-1.amazonaws.com/'+branchName+':latest)')
    }
  }
}

如何在一个shell中添加所有这些?

我试过这种方式

   shell( '''
            export AWS_DEFAULT_REGION=eu-west-1
            $(aws ecr get-login --region eu-west-1)
            docker build -t builder -f ./images/'+branchName+'/Dockerfile .
           ''')

但是变量branchName被视为字符串。 问候。

1 个答案:

答案 0 :(得分:2)

使用双引号代替支持插值(单引号和单引号不引用)。然后,您可以使用${}在字符串

中插入变量
shell( """
          export AWS_DEFAULT_REGION=eu-west-1
          $(aws ecr get-login --region eu-west-1)
          docker build -t builder -f ./images/${branchName}/Dockerfile .
         """)

有关详细信息,请参阅groovy documentation on string interpolation