2016-05-06 6 views
2

У меня есть этот шагОбъединить снарядов 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(''' 
      export AWS_DEFAULT_REGION=eu-west-1 
      $(aws ecr get-login --region eu-west-1) 
      docker build -t builder -f ./images/'+branchName+'/Dockerfile . 
      ''') 

Но тогда переменные подмигнули branchName рассматриваются как строки. С уважением.

ответ

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.