pipeline { options { ansiColor('xterm') } agent{label 'jaws-slaves'} environment { //xxu26128_TOKEN = credentials('dynatrace_automation_token_emea_prod') //qqk70169_TOKEN = credentials('dynatrace_automation_token_emea_preprod') //wgv50241_TOKEN = credentials('dynatrace_automation_token_na_prod') //onb44935_TOKEN = credentials('dynatrace_automation_token_na_preprod') //CN_Prod_TOKEN = credentials('dynatrace_automation_token_cn_prod') //CN_PreProd_TOKEN = credentials('dynatrace_automation_token_cn_preprod') CICD_Testing_TOKEN = credentials('dynatrace_automation_testing_token') } stages { stage('Checkout') { steps { git branch: '${branch}', credentialsId: 'jaws_dynatrace_bitbuket_user', url: 'https://atc.bmwgroup.net/bitbucket/scm/opapm/maasglobal_cicdtest.git' } } stage('Install Monaco CLI') { steps { sh ''' wget "https://github.com/dynatrace-oss/dynatrace-monitoring-as-code/releases/download/v1.5.0/monaco-linux-amd64" sudo cp monaco-linux-amd64 /usr/local/bin/monaco sudo chmod +x /usr/local/bin/monaco ''' } } stage('Monaco dry run') { steps { script { Map functionMap = evaluate("${projectMap}") if(functionMap == null){ if(environment != 'ALL'){ sh '''for d in ./*/ ; do (cd "$d" && monaco -v -e $WORKSPACE/environment.yaml -se $environment --dry-run ); done''' } else{ sh '''for d in ./*/ ; do (cd "$d" && monaco -v -e $WORKSPACE/environment.yaml --dry-run ); done''' } } else{ for (rootFolder in functionMap.keySet()) { def projects = functionMap.getAt(rootFolder) if(environment != 'ALL'){ if(projects != ''){ sh "monaco -v -e $WORKSPACE/environment.yaml -se $environment -p $projects --dry-run $WORKSPACE/$rootFolder" } else{ sh "cd $rootFolder && monaco -v -e $WORKSPACE/environment.yaml -se $environment --dry-run" } } else { if(projects != ''){ sh "monaco -v -e $WORKSPACE/environment.yaml -p $projects --dry-run $WORKSPACE/$rootFolder" } else{ sh "cd $rootFolder && monaco -v -e $WORKSPACE/environment.yaml --dry-run" } } } } } } } stage('Approval') { steps { script { def userInput = input(id: 'confirm', message: 'Deploy dynatrace config?', parameters: [ [$class: 'BooleanParameterDefinition', defaultValue: true, description: 'Deploy dynatrace config', name: 'confirm'] ]) } } } stage('Dynatrace config deployment') { steps { script { Map functionMap = evaluate("${projectMap}") if(functionMap == null){ if(environment != 'ALL'){ sh '''for d in ./*/ ; do (cd "$d" && monaco -v -e $WORKSPACE/environment.yaml -se $environment); done''' } else{ sh '''for d in ./*/ ; do (cd "$d" && monaco -v -e $WORKSPACE/environment.yaml ); done''' } } else{ for (rootFolder in functionMap.keySet()) { def projects = functionMap.getAt(rootFolder) if(environment != 'ALL'){ if(projects != ''){ sh "monaco -v -e $WORKSPACE/environment.yaml -se $environment -p $projects $WORKSPACE/$rootFolder" } else{ sh "cd $rootFolder && monaco -v -e $WORKSPACE/environment.yaml -se $environment" } } else { if(projects != ''){ sh "monaco -v -e $WORKSPACE/environment.yaml -p $projects $WORKSPACE/$rootFolder" } else{ sh "cd $rootFolder && monaco -v -e $WORKSPACE/environment.yaml" } } } } } } } } post { always { cleanWs() } } }