Compare commits

...

10 Commits

Author SHA1 Message Date
qxv1135 b05bc313ad JIRA-1388 [FEATURE] updated monaco command 2021-04-26 22:37:06 +05:30
qxv1135 37d54a99e8 JIRA-1388 [FEATURE] updated monaco commands 2021-04-26 22:17:17 +05:30
qxv1135 ef5dfce1bd ENV urls updated 2021-04-26 16:15:16 +05:30
qxv1135 7825ee94db JIRA-1367 [FEATURE] updated DRY RUN PARAM 2021-04-22 23:05:26 +05:30
Jyotsna Sharma 91ea68dc72 JIRA-1367 [FEATURE] Jenkinsfile updated 2021-04-20 00:14:05 +05:30
Jyotsna Sharma 7e44bcaf8a Added multiple envs 2021-04-16 16:41:08 +05:30
qxz0v5y 0965c014d5 updated jenkins file 2021-04-07 17:36:57 +05:30
qxz0v5y 8dbc2fe69f CICD-1367 [Testing] updated the jenkinsfile 2021-04-06 12:16:56 +05:30
qxz0v5y 908460ca35 CICD-1367 [testing] changed the env name 2021-04-05 18:55:50 +05:30
qxz0v5y b8a22cbe8a changed the name of files 2021-04-05 17:41:21 +05:30
5 changed files with 262 additions and 67 deletions

View File

@ -1,4 +1,12 @@
CICD-Testing: CICD-Testing:
- name: "CICD-Testing" - name: "DE-8_Test_1"
- env-url: "https://ltdynatsv01.bmwgroup.net:8021/" - env-url: "https://ltdynatsv01.bmwgroup.net:8021/e/2cd2c72b-db3f-41fe-bb62-219dae76eac8/"
- env-token-name: "CICD_Testing_TOKEN"
CICD-INT:
- name: "DE-8_Test_1"
- env-url: "https://ltdynatsv01.bmwgroup.net:8021/e/2cd2c72b-db3f-41fe-bb62-219dae76eac8/"
- env-token-name: "CICD_Testing_TOKEN"
CICD-PROD:
- name: "DE-8_Test_1"
- env-url: "https://ltdynatsv01.bmwgroup.net:8021/e/2cd2c72b-db3f-41fe-bb62-219dae76eac8/"
- env-token-name: "CICD_Testing_TOKEN" - env-token-name: "CICD_Testing_TOKEN"

View File

@ -1,25 +1,111 @@
def params
def String[] envs
def String[] folders
def rootdirlist = ''
def envlist = ''
pipeline { pipeline {
options { options {
ansiColor('xterm') ansiColor('xterm')
} }
agent {label 'jaws-slaves'} agent{label 'on-prem-slaves'}
environment { environment {
xxu26128_TOKEN = credentials('dynatrace_automation_token_emea_prod') AUTH = credentials('proxy')
qqk70169_TOKEN = credentials('dynatrace_automation_token_emea_preprod') proxy_user = "${AUTH_USR}"
wgv50241_TOKEN = credentials('dynatrace_automation_token_na_prod') proxy_pw = "${AUTH_PSW}"
onb44935_TOKEN = credentials('dynatrace_automation_token_na_preprod') http_proxy="http://${proxy_user}:${proxy_pw}@proxy.muc:8080"
CN_Prod_TOKEN = credentials('dynatrace_automation_token_cn_prod') https_proxy="http://${proxy_user}:${proxy_pw}@proxy.muc:8080"
CN_PreProd_TOKEN = credentials('dynatrace_automation_token_cn_preprod') no_proxy="localhost,127.0.0.1,.muc,.bmwgroup.net"
HTTP_PROXY="${http_proxy}"
HTTPS_PROXY="${https_proxy}"
NO_PROXY="${no_proxy}"
CICD_Testing_TOKEN = credentials('dynatrace_automation_testing_token') CICD_Testing_TOKEN = credentials('dynatrace_automation_testing_token')
} }
stages { stages {
stage('Checkout') { stage('Git checkout') {
steps { steps {
git branch: '${branch}', credentialsId: 'jaws_dynatrace_bitbuket_user', url: 'https://atc.bmwgroup.net/bitbucket/scm/opapm/maasdevops.git' git credentialsId: 'jaws_dynatrace_bitbuket_user', url: 'https://atc.bmwgroup.net/bitbucket/scm/opapm/maasdevops_cicdtest.git'
sh '''
git branch -r | sed -e 's/origin\\///g' |sed '/HEAD/d' >> branchlist.txt
'''
} }
} }
stage('Install Monaco CLI') { stage ('Branch selection') {
steps {
script {
def branchlist = readFile 'branchlist.txt'
echo "please click on the link here to chose the branch to build"
env.BRANCH_SCOPE = input (message: 'Please choose the branch to build ',
parameters: [choice(name: 'BRANCH_NAME', choices: branchlist, description: 'Branch to build?')])
}
}
}
stage ('Environment and Application selection') {
steps {
sh '''
git checkout ${BRANCH_SCOPE}
sed '/^ /d' environment.yaml| sed 's/://g' >> envlist.txt
#echo "none" > rootdir.txt
ls -ld */ | cut -d' ' -f 9| sed 's/\\///g' >> rootdir.txt
cat rootdir.txt
'''
script {
def lines = readFile("${workspace}/rootdir.txt").readLines()
def envlines = readFile("${workspace}/envlist.txt").readLines()
lines.each { def line ->
rootdirlist = rootdirlist+','
rootdirlist = rootdirlist+line
}
envlines.each { def line ->
envlist = envlist+','
envlist = envlist+line
}
rootdirlist = rootdirlist.substring(1)
envlist = envlist.substring(1)
println(rootdirlist)
echo "please click on the link here to choose environment to deploy"
params = input(
id: 'user_Input',
message: 'Promote:',
parameters: [
[
name: 'ENVIRONMENT',
$class: 'ExtendedChoiceParameterDefinition',
type: 'PT_MULTI_SELECT',
value: "${envlist}",
description: 'Select Environment(s)'
],
[
name: 'APPLICATION',
$class: 'ExtendedChoiceParameterDefinition',
type: 'PT_MULTI_SELECT',
value: "${rootdirlist}",
description: 'Select Application(s)'
],
[
name: 'DRY_RUN_ONLY',
$class: 'BooleanParameterDefinition',
defaultValue: true,
description: 'Do you want to execute a dry run only?'
]
]
)
envs = params['ENVIRONMENT'].split(',');
folders = params['APPLICATION'].split(',');
}
}
}
stage('Monaco CLI setup') {
steps { steps {
sh ''' sh '''
wget "https://github.com/dynatrace-oss/dynatrace-monitoring-as-code/releases/download/v1.5.0/monaco-linux-amd64" wget "https://github.com/dynatrace-oss/dynatrace-monitoring-as-code/releases/download/v1.5.0/monaco-linux-amd64"
@ -30,63 +116,50 @@
} }
stage('Monaco dry run') { stage('Monaco dry run') {
steps { steps {
script { script {
Map functionMap = evaluate("${projectMap}") println("value of env: "+ params['ENVIRONMENT'])
for (rootFolder in functionMap.keySet()) { println("value of root folder: "+ params['APPLICATION'])
def projects = functionMap.getAt(rootFolder) if(envs != null){
//String[] elements = module.split(","); envs.each { env ->
//List<String> moduleList = Arrays.asList(elements); if(params['APPLICATION'] != null){
//env = "${env}".toLowerCase() folders.each { folder ->
sh "monaco -v -e $WORKSPACE/environment.yaml -se ${env} --project ${folder} --dry-run"
if(environment != 'ALL'){ }
if(projects != ''){ } else{
sh "monaco -e $WORKSPACE/environment.yaml -se $environment -p $projects --dry-run rootFolder" println "Application not selected"
}else{
sh "monaco -e $WORKSPACE/environment.yaml -se $environment --dry-run rootFolder"
} }
} else { }
if(projects != ''){ } else {
sh "monaco -e $WORKSPACE/environment.yaml -p $projects --dry-run rootFolder" println "Environment not selected"
} else{
sh "monaco -e $WORKSPACE/environment.yaml --dry-run rootFolder"
}
}
}
}
}
}
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}")
for (rootFolder in functionMap.keySet()) {
def projects = functionMap.getAt(rootFolder)
if(environment != 'ALL'){
if(project != ''){
sh "monaco -e $WORKSPACE/environment.yaml -se $environment -p $projects rootFolder"
} else{
sh "monaco -e $WORKSPACE/environment.yaml -se $environment rootFolder"
}
} else {
if(project != ''){
sh "monaco -e $WORKSPACE/environment.yaml -p $projects rootFolder"
} else{
sh "monaco -e $WORKSPACE/environment.yaml rootFolder"
}
}
} }
} }
} }
} }
stage('Dynatrace config deployment') {
when {
expression { params.DRY_RUN_ONLY == false }
}
steps {
script {
if(envs != null){
envs.each { env ->
if(params['APPLICATION'] != null){
folders.each { folder ->
sh "set +x && echo ------------ Starting Deployment on environment $env for app $folder -----------"
sh "monaco -v -e $WORKSPACE/environment.yaml -se ${env} --project ${folder}"
}
} else{
println "Application not selected"
}
}
} else {
println "Environment not selected"
}
}
}
}
} }
post { post {
always { always {
@ -94,4 +167,4 @@
} }
} }
} }

114
jenkinsfile_bkp Normal file
View File

@ -0,0 +1,114 @@
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/maasdevops_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}")
//String[] elements = module.split(",");
//List<String> moduleList = Arrays.asList(elements);
//rootFolder = "${rootFolder}"
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()
}
}
}