JIRA CICD-1367 [FEATURE] Jenkinsfile updated
parent
55d57c2d0a
commit
669c60048b
|
|
@ -1,27 +1,103 @@
|
|||
def params
|
||||
def String[] envs
|
||||
def String[] folders
|
||||
def rootdirlist = ''
|
||||
def envlist = ''
|
||||
|
||||
|
||||
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') {
|
||||
stage('Git checkout') {
|
||||
steps {
|
||||
git branch: '${branch}', credentialsId: 'jaws_dynatrace_bitbuket_user', url: 'https://atc.bmwgroup.net/bitbucket/scm/opapm/maasglobal_cicdtest.git'
|
||||
git credentialsId: 'jaws_dynatrace_bitbuket_user', url: 'https://atc.bmwgroup.net/bitbucket/scm/opapm/maasglobal_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',
|
||||
$class: 'BooleanParameterDefinition',
|
||||
defaultValue: false,
|
||||
description: 'Do you want to execute a dry run only?'
|
||||
]
|
||||
]
|
||||
)
|
||||
|
||||
envs = params['ENVIRONMENT'].split(',');
|
||||
folders = params['APPLICATION'].split(',');
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
stage('Monaco CLI setup') {
|
||||
steps {
|
||||
sh '''
|
||||
wget "https://github.com/dynatrace-oss/dynatrace-monitoring-as-code/releases/download/v1.5.0/monaco-linux-amd64"
|
||||
|
|
@ -32,74 +108,50 @@
|
|||
}
|
||||
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'] ])
|
||||
}
|
||||
}
|
||||
script {
|
||||
println("value of env: "+ params['ENVIRONMENT'])
|
||||
println("value of root folder: "+ params['APPLICATION'])
|
||||
if(envs != null){
|
||||
envs.each { env ->
|
||||
if(params['APPLICATION'] != null){
|
||||
folders.each { folder ->
|
||||
sh "cd ${folder} && monaco -v -e $WORKSPACE/environment.yaml -se ${env} --dry-run"
|
||||
}
|
||||
} else{
|
||||
println "Application not selected"
|
||||
}
|
||||
}
|
||||
} else {
|
||||
println "Environment not selected"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
stage('Dynatrace config deployment') {
|
||||
when {
|
||||
|
||||
expression { params.DRY_RUN == false }
|
||||
}
|
||||
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"
|
||||
}
|
||||
}
|
||||
}
|
||||
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 "cd ${folder} && monaco -v -e $WORKSPACE/environment.yaml -se ${env}"
|
||||
}
|
||||
} else{
|
||||
println "Application not selected"
|
||||
}
|
||||
}
|
||||
} else {
|
||||
println "Environment not selected"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
post {
|
||||
always {
|
||||
|
|
@ -107,4 +159,4 @@
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -0,0 +1,110 @@
|
|||
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()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue