coco_apm_dynatrace_terrafor.../Jenkinsfile

176 lines
7.5 KiB
Groovy

def installRetryCount = 0
def exportRetryCount = 0
def checkRetryCount = 0
def checkRetryCountSec = 0
def bin = "terraform-provider-dynatrace_v1.30.1"
def file = "terraform-provider-dynatrace_1.30.1_linux_amd64.zip"
def link = "https://github.com/dynatrace-oss/terraform-provider-dynatrace/releases/download/v1.30.1/terraform-provider-dynatrace_1.30.1_linux_amd64.zip"
pipeline {
options {
ansiColor('xterm')
}
agent {label 'jaws-slaves'}
triggers {
cron('0 5 * * 0-7')
}
environment {
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')
}
stages {
stage('Fetch Data') {
steps {
parallel 'Checkout Repositories': {
dir("/opt/workspace/coco_apm_dynatrace_terraform_backup/") {
retry(3) {
sleep(300*checkRetryCount)
script {
checkRetryCount = checkRetryCount + 1
}
git branch: "master",
credentialsId: "jaws_dynatrace_bitbuket_user",
url: "https://atc.bmwgroup.net/bitbucket/scm/opapm/coco_apm_dynatrace_terraform_backup.git"
}
}
dir("/opt/workspace/coco_apm_dynatrace_terraform_backup_exporter/") {
retry(3) {
sleep(300*checkRetryCountSec)
script {
checkRetryCountSec = checkRetryCountSec + 1
}
git branch: "master",
credentialsId: "jaws_dynatrace_bitbuket_user",
url: "https://atc.bmwgroup.net/bitbucket/scm/opapm/coco_apm_dynatrace_terraform_backup_exporter.git"
}
}
}
}
}
stage('Checkout New Branch') {
steps{
script {
def now = new Date()
env.timestamp = now.format("yyMMdd-HHmm", TimeZone.getTimeZone('GMT'))
println env.timestamp
env.branch = env.timestamp+"-DynatraceConfigurationBackup"
dir("/opt/workspace/coco_apm_dynatrace_terraform_backup/") {
sh "git checkout -b \"${env.branch}\""
}
}
}
}
stage('Install Required Packages') {
steps {
dir("/opt/workspace/coco_apm_dynatrace_terraform_backup_exporter/") {
retry(3) {
sleep(300*installRetryCount)
script {
installRetryCount = installRetryCount+1
}
sh"""
pip3 install --user -r requirements.txt
wget $link
python3 unzip.py $file
ls -la
"""
}
}
}
}
stage('Execute Exporting Script') {
steps {
dir("/opt/workspace/coco_apm_dynatrace_terraform_backup_exporter/") {
retry(3) {
sleep(300*exportRetryCount)
script {
exportRetryCount = exportRetryCount + 1
sh "chmod 755 $bin"
sh "python3 export.py"
}
}
}
}
}
stage('Move Configuration Files') {
steps {
dir("/opt/workspace/coco_apm_dynatrace_terraform_backup_exporter/") {
// move slo configuration file
sh'''
ls -la
mv /opt/workspace/coco_apm_dynatrace_terraform_backup_exporter/output/* /opt/workspace/coco_apm_dynatrace_terraform_backup/
'''
}
}
}
stage('Push Changes') {
steps {
withCredentials([gitUsernamePassword(credentialsId: "jaws_dynatrace_bitbuket_user", gitToolName: 'Default')]) {
script {
dir("/opt/workspace/coco_apm_dynatrace_terraform_backup/") {
sh "git status"
sh "git add ."
sh "git commit -m \"${env.timestamp}\""
sh "git push origin ${env.branch}"
}
}
}
}
}
// stage('Send Report') {
// steps {
// script {
// dir("/opt/workspace/qm_report/") {
// try {
// emailext subject: "BackUp ${env.JOB_NAME}",
// mimeType: 'text/html',
// body: "BackUp successful!",
// // to: 'michaela.jaeger@bmw.de, OOC-Support@bmwgroup.com, Andreas.DA.Danzer@partner.bmw.de',
// // to: 'rene.forstner@nttdata.com, Andreas.DA.Danzer@partner.bmw.de, linnea.bickeboeller@partner.bmwgroup.com',
// // to: 'rene.forstner@nttdata.com, stephan.oertelt@bmw.de, Mohammed.Abadel@bmw.de, michaela.jaeger@bmw.de',
// // to: 'rene.forstner@nttdata.com, ermis.wieger@nttdata.com, patryk.gudalewicz.bp@nttdata.com',
// // to: 'patryk.gudalewicz.bp@nttdata.com',
// // to: 'rene.forstner@nttdata.com, ermis.wieger@nttdata.com, arnel.arnautovic@nttdata.com, patryk.gudalewicz.bp@nttdata.com, stephan.oertelt@bmw.de, Mohammed.Abadel@bmw.de, michaela.jaeger@bmw.de, OOC-Support@bmwgroup.com, Andreas.DB.Danzer@bmwgroup.com',
// to: 'Andreas.DB.Danzer@bmwgroup.com, Arnel.Arnautovic@nttdata.com, Ermis.Wieger@nttdata.com, ops-xibix@list.bmw.com, omo-xibix@list.bmw.com, omo@bmwgroup.com',
// replyTo: 'coco-apm@bmw.de'
// } catch ( mailExc ) {
// echo "Sending Email Failed: ${mailExc}"
// }
// }
// }
// }
// }
}
post {
failure {
emailext subject: "${env.JOB_NAME} build ${env.BUILD_ID} failed",
body: "BackUp failed, see logs for details: ${env.BUILD_URL}",
to: 'Arnel.Arnautovic@nttdata.com, ops-xibix@list.bmw.com, omo-xibix@list.bmw.com, omo@bmwgroup.com'
// to post to the teams channel "0 - APM Service Desk" just uncomment the following command:
// office365ConnectorSend webhookUrl: "https://bmwgroup.webhook.office.com/webhookb2/483edc00-c925-4672-8088-8299a0139fca@ce849bab-cc1c-465b-b62e-18f07c9ac198/JenkinsCI/9aca6923685b40f794134853fcbe88f1/ff31bcee-96b3-4481-9bd8-4f74180b263b",
// message: "QM report failed, see logs for details: ${env.BUILD_URL}",
// status: 'Failure',
// color: "d00000"
}
always {
cleanWs()
}
}
}