In a Jenkins pipeline file, you might have several Terraform stacks running in different stages. Make them communicating is usually pretty easy, using the
data construct, or the remote state. However, making a Terraform step communicating with another step running shell commands for instance requires a bit more work. Of course, you have the terraform output command, but there is a small glitch: storing the output in a variable ends up storing also a newline character at its end.
So here is a command that helps work around that problem:
def BUCKET_NAME = ''
pipeline {
stages {
stage('Terraform') {
steps {
sh "terraform init"
sh "terraform apply"
script {
BUCKET_NAME = sh (script: 'terraform output bucket_name | xargs echo -n', returnStdout: true)
}
}
}
stage('Another') {
steps {
sh "echo ${BUCKET_NAME}"
}
}
}
}
No comments:
Post a Comment