acdc-dynatrace-configuration/environments/aws/eu-west-1/int/Jenkinsfile

120 lines
3.5 KiB
Groovy

String cloud_provider = "aws"
String aws_region = "eu-west-1"
String stage = "int"
String aws_access_credentials = "fdc_${aws_region}_${stage}_infrastructure.automation.user"
String dynatrace_api_toke_credentials = "api_token_dynatrace_${aws_region}_${stage}"
pipeline {
agent {
node {
label 'vsds-terraform'
}
}
environment {
GIT_SSH_COMMAND = "ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no"
AWS_ID = credentials("${aws_access_credentials}")
AWS_ACCESS_KEY_ID = "${env.AWS_ID_USR}"
AWS_SECRET_ACCESS_KEY = "${env.AWS_ID_PSW}"
AWS_REGION = "${aws_region}"
STAGE = "${stage}"
CLOUD_PROVIDER = "${cloud_provider}"
API_TOKEN = credentials("${dynatrace_api_toke_credentials}")
TF_VAR_dt_api_token = "${env.API_TOKEN}"
}
options {
timestamps()
ansiColor('xterm')
disableConcurrentBuilds(abortPrevious: true)
timeout(time: 1, unit: 'HOURS')
}
stages {
stage('terraform init') {
steps {
container('terraform') {
sshagent(credentials: ['sofa-user-automation']) {
script {
sh "cd environments/${CLOUD_PROVIDER}/${AWS_REGION}/${stage} "
sh "terraform init"
sh "terraform fmt"
}
}
}
}
}
stage('Terraform plan') {
steps {
container('terraform') {
sshagent(credentials: ['sofa-user-automation']) {
script {
sh "cd environments/${cloud_provider}/${aws_region}/${STAGE} "
env.PLAN_STATUS = sh(script: "terraform plan -out=.terraform/plan.out -input=false -detailed-exitcode", returnStatus: true)
if (env.PLAN_STATUS == "1") {
currentBuild.result = "FAILURE"
error('Aborting the build.')
return
}
}
}
}
}
}
stage('Interactive') {
when {
allOf {
expression { env.PLAN_STATUS == "2" }
}
}
steps {
timeout(time: 15, unit: "MINUTES") {
input "Is this plan acceptable?"
milestone 1
}
}
}
stage("terraform apply") {
when {
allOf {
expression { env.PLAN_STATUS == "2" }
}
}
steps {
container('terraform') {
sshagent(credentials: ['sofa-user-automation']) {
script {
sh "cd environments/${cloud_provider}/${aws_region}/${STAGE} "
sh("terraform apply -input=false .terraform/plan.out")
}
}
}
}
}
}
post {
always {
cleanWs()
script {
currentBuild.result = currentBuild.result ?: 'SUCCESS'
notifyBitbucket(projectKey: 'packages')
}
}
}
}