162 lines
5.5 KiB
Groovy
162 lines
5.5 KiB
Groovy
//not required right now as CN is reachable from EMEA as well
|
|
|
|
environments=['EMEA_PROD', 'EMEA_PREPROD', 'NA_PROD', 'NA_PREPROD', 'CN_PROD', 'CN_PREPROD']
|
|
|
|
|
|
@NonCPS // has to be NonCPS or the build breaks on the call to .each
|
|
def export_config_all(list) {
|
|
list.each { env ->
|
|
sh "python3 export.py ${env}"
|
|
}
|
|
}
|
|
pipeline {
|
|
options {
|
|
ansiColor('xterm')
|
|
}
|
|
//label libraryBuild is available in CN JAWS and ROW JAWS, therefore this one was used; no additional intents
|
|
agent {label 'jaws-slaves'}
|
|
|
|
|
|
//here comes the trigger according to crontabs - jenkins is in UTC
|
|
triggers {
|
|
//every 1st of every month at 00:00
|
|
cron('0 0 1 * *')
|
|
|
|
//every day at 08:00
|
|
//cron('0 8 * * *')
|
|
|
|
//every monday at 08:00
|
|
//cron('0 8 * * MON')
|
|
|
|
|
|
}
|
|
environment {
|
|
//ProxySettings
|
|
AUTH = credentials('proxy')
|
|
proxy_user = "${AUTH_USR}"
|
|
proxy_pw = "${AUTH_PSW}"
|
|
//http_proxy="http://${proxy_user}:${proxy_pw}@proxy.muc:8080"
|
|
//https_proxy="http://${proxy_user}:${proxy_pw}@proxy.muc:8080"
|
|
//no_proxy="localhost,127.0.0.1,.muc,.bmwgroup.net"
|
|
//HTTP_PROXY="${http_proxy}"
|
|
//HTTPS_PROXY="${https_proxy}"
|
|
//NO_PROXY="${no_proxy}"
|
|
|
|
// EUPROD_TOKEN_VAR = credentials('EUPROD_TOKEN_VAR')
|
|
// EUPREPROD_TOKEN_VAR = credentials('EUPREPROD_TOKEN_VAR')
|
|
// NAPROD_TOKEN_VAR = credentials('NAPROD_TOKEN_VAR')
|
|
// NAPREPROD_TOKEN_VAR = credentials('NAPREPROD_TOKEN_VAR')
|
|
// CNPROD_TOKEN_VAR = credentials('CNPROD_TOKEN_VAR')
|
|
// CNPREPROD_TOKEN_VAR = credentials('CNPREPROD_TOKEN_VAR')
|
|
AWS_ACCESS_KEY_ID = credentials('AWS_TERRAFORM_KEY')
|
|
AWS_SECRET_ACCESS_KEY = credentials('AWS_SECRET_ACCESS_KEY')
|
|
AWS_S3_BUCKET="coco-dynatrace-tfstate"
|
|
AWS_S3_REGION="eu-central-1"
|
|
|
|
//TERRAFORM_RESOURCES="dynatrace_management_zone"
|
|
|
|
//EMEA PROD
|
|
TF_VAR_EMEA_PROD_ENV_URL="https://xxu26128.live.dynatrace.com"
|
|
TF_VAR_EMEA_PROD_API_TOKEN=credentials('EUPROD_TOKEN_VAR')
|
|
|
|
//EMEA PREPROD
|
|
TF_VAR_EMEA_PREPROD_ENV_URL="https://qqk70169.live.dynatrace.com"
|
|
TF_VAR_EMEA_PREPROD_API_TOKEN=credentials('EUPREPROD_TOKEN_VAR')
|
|
|
|
//NA PROD
|
|
TF_VAR_NA_PROD_ENV_URL="https://wgv50241.live.dynatrace.com/"
|
|
TF_VAR_NA_PROD_API_TOKEN=credentials('NAPROD_TOKEN_VAR')
|
|
|
|
//NA PREPROD
|
|
TF_VAR_NA_PREPROD_ENV_URL="https://onb44935.live.dynatrace.com/"
|
|
TF_VAR_NA_PREPROD_API_TOKEN=credentials('NAPREPROD_TOKEN_VAR')
|
|
|
|
//CN PROD
|
|
TF_VAR_CN_PROD_ENV_URL="https://dyna-synth-cn.bmwgroup.com.cn/e/b921f1b9-c00e-4031-b9d1-f5a0d530757b"
|
|
TF_VAR_CN_PROD_API_TOKEN=credentials('CNPROD_TOKEN_VAR')
|
|
|
|
//CN PREPROD
|
|
TF_VAR_CN_PREPROD_ENV_URL="https://dyna-synth-cn.bmwgroup.com.cn/e/ab88c03b-b7fc-45f0-9115-9e9ecc0ced35"
|
|
TF_VAR_CN_PREPROD_API_TOKEN=credentials('CNPREPROD_TOKEN_VAR')
|
|
|
|
//TERRAFORM
|
|
TF_VAR_TERRAFORM_ENV_URL="https://rsb41808.live.dynatrace.com"
|
|
TF_VAR_TERRAFORM_API_TOKEN=credentials('TERRAFORM_TOKEN_VAR')
|
|
|
|
}
|
|
|
|
stages {
|
|
stage('install required python packages') {
|
|
steps {
|
|
sh '''
|
|
pip3 install --user -r requirements.txt
|
|
'''
|
|
}
|
|
}
|
|
|
|
stage('Install Terraform') {
|
|
steps {
|
|
sh '''
|
|
cd /tmp
|
|
curl https://releases.hashicorp.com/terraform/1.1.4/terraform_1.1.4_linux_amd64.zip > terraform.zip
|
|
unzip terraform.zip
|
|
sudo mv /tmp/terraform /usr/local/bin
|
|
terraform --version
|
|
cd ~
|
|
'''
|
|
}
|
|
}
|
|
|
|
stage('Make exporter executable') {
|
|
steps {
|
|
|
|
sh 'chmod 755 ./bin/terraform-provider-dynatrace_v1.9.1'
|
|
sh 'python3 --version'
|
|
//sh 'sudo zypper refresh'
|
|
|
|
//sh 'chmod 755 ./updatepython.sh'
|
|
//sh './updatepython.sh'
|
|
|
|
//Only required once CN is not reachable from EMEA
|
|
//loopEnvironments(environments)
|
|
}
|
|
|
|
}
|
|
stage('Execute Export Script TERRAFORM') {
|
|
steps {
|
|
|
|
export_config_all(environments)
|
|
//sh 'python3 export.py EMEA_PROD'
|
|
//sh 'python3 export.py TERRAFORM'
|
|
|
|
//Only required once CN is not reachable from EMEA
|
|
//loopEnvironments(environments)
|
|
}
|
|
|
|
|
|
}
|
|
stage('Send report') {
|
|
steps {
|
|
script {
|
|
try {
|
|
emailext subject: env.JOB_NAME,
|
|
body: 'Please find the output of your reports attached',
|
|
to: 'rene.forstner@nttdata.com',
|
|
replyTo: 'coco-apm@bmw.de',
|
|
attachmentsPattern: '*.csv'
|
|
|
|
}
|
|
catch ( mailExc ){
|
|
echo "Sending Email Failed: ${mailExc}"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
post {
|
|
always {
|
|
cleanWs()
|
|
}
|
|
}
|
|
} |