paul
paul

Reputation: 13481

Merge dsl job shells in just one

I have this step

 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)')
    }
  }
}

How can I just add all those in just one shell?

I tried this way

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

But then the variable branchName it´s treated as string. Regards.

Upvotes: 2

Views: 143

Answers (1)

badgerr
badgerr

Reputation: 7982

Use double quotes instead, which support interpolation (single quotes and single triple quotes do not). Then you can use ${} to insert variables in the string

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

For more information see the groovy documentation on string interpolation.

Upvotes: 2

Related Questions