This repository has been archived by the owner on Apr 18, 2023. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 2
/
JenkinsFile
109 lines (100 loc) · 4.15 KB
/
JenkinsFile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
#!groovy
def plugin = 'spammenot'
def devApp = 'dotcms-dev-app1a'
def stagApp = 'dotcms-stag-app1a'
def prodApp1 = 'dotcms-naw-app1b'
def prodApp2 = 'dotcms-naw-app2b'
def deployPath = '/data/wwwroot/dotcms/current/dotCMS/WEB-INF/felix/load'
def GIT_BRANCH
stage('Build') {
node {
checkout([$class: 'GitSCM',
branches: scm.branches,
doGenerateSubmoduleConfigurations: false,
extensions: [[$class: 'LocalBranch', localBranch: "**"]],
submoduleCfg: [],
userRemoteConfigs: [
[credentialsId: '92ca036f-9e54-41bf-a484-d3ab8555c6ae',
url: "[email protected]:aquent/dotcms.plugins.${plugin}.git"]]])
GIT_BRANCH = sh(returnStdout: true, script: 'git rev-parse --abbrev-ref HEAD').trim()
slackSend "[${plugin} - ${GIT_BRANCH}] Build Started - ${env.JOB_NAME} # ${env.BUILD_NUMBER} (<${env.BUILD_URL}|Open>)"
sh './gradlew clean jar'
archiveArtifacts artifacts: 'build/libs/*.jar', fingerprint: true
stash includes: 'build/libs/*.jar', name: "jar-${plugin}-${GIT_BRANCH}"
slackSend "[${plugin} - ${GIT_BRANCH}] Build Completed - ${env.JOB_NAME} # ${env.BUILD_NUMBER} (<${env.BUILD_URL}|Open>)"
}
}
stage('Deploy Dev') {
node {
if (GIT_BRANCH == 'develop') {
slackSend "[${plugin} - ${GIT_BRANCH}] Dev Deploy Started - ${env.JOB_NAME} # ${env.BUILD_NUMBER} (<${env.BUILD_URL}|Open>)"
sh 'rm build/libs/*.jar'
unstash "jar-${plugin}-${GIT_BRANCH}"
sh """
ssh dotcms@${devApp} rm -rf ${deployPath}/dotcms-plugins-${plugin}-*.jar
sleep 5
scp build/libs/*.jar dotcms@${devApp}:${deployPath}/.
"""
slackSend "[${plugin} - ${GIT_BRANCH}] Dev Deploy Finished - ${env.JOB_NAME} # ${env.BUILD_NUMBER} (<${env.BUILD_URL}|Open>)"
} else {
slackSend "[${plugin} - ${GIT_BRANCH}] Dev Deploy Skipped - ${env.JOB_NAME} # ${env.BUILD_NUMBER} (<${env.BUILD_URL}|Open>)"
}
}
}
stage('Deploy Stag') {
if (GIT_BRANCH == 'develop') {
slackSend """
@here Ready to Promote Job to Stag?
[${plugin} - ${GIT_BRANCH}] ${env.JOB_NAME} # ${env.BUILD_NUMBER}
To proceed or abort please visit:
${env.BUILD_URL}input/
"""
input 'Promote to Stag?'
node {
slackSend "[${plugin} - ${GIT_BRANCH}] Stag Deploy Started - ${env.JOB_NAME} # ${env.BUILD_NUMBER} (<${env.BUILD_URL}|Open>)"
ws("/usr/local/jenkins/workspace/${plugin}/stag") {
sh 'rm -f build/libs/*.jar'
unstash "jar-${plugin}-${GIT_BRANCH}"
sh """
ssh dotcms@${stagApp} rm -rf ${deployPath}/dotcms-plugins-${plugin}-*.jar
sleep 5
scp build/libs/*.jar dotcms@${stagApp}:${deployPath}/.
"""
}
slackSend "[${plugin} - ${GIT_BRANCH}] Stag Deploy Finished - ${env.JOB_NAME} # ${env.BUILD_NUMBER} (<${env.BUILD_URL}|Open>)"
}
} else {
slackSend "[${plugin} - ${GIT_BRANCH}] Stag Deploy Skipped - ${env.JOB_NAME} # ${env.BUILD_NUMBER} (<${env.BUILD_URL}|Open>)"
}
}
stage('Deploy Prod') {
if (GIT_BRANCH == 'master') {
slackSend """
@here Ready to Promote Job to Production?
[${plugin} - ${GIT_BRANCH}] ${env.JOB_NAME} # ${env.BUILD_NUMBER}
To proceed or abort please visit:
${env.BUILD_URL}input/
"""
input 'Promote to Production?'
node {
slackSend "[${plugin} - ${GIT_BRANCH}] Prod Deploy Started - ${env.JOB_NAME} # ${env.BUILD_NUMBER} (<${env.BUILD_URL}|Open>)"
ws("/usr/local/jenkins/workspace/${plugin}/prod") {
sh 'rm -f build/libs/*.jar'
unstash "jar-${plugin}-${GIT_BRANCH}"
sh """
ssh dotcms@${prodApp1} rm -rf ${deployPath}/dotcms-plugins-${plugin}-*.jar
sleep 5
scp build/libs/*.jar dotcms@${prodApp1}:${deployPath}/.
"""
sh """
ssh dotcms@${prodApp2} rm -rf ${deployPath}/dotcms-plugins-${plugin}-*.jar
sleep 5
scp build/libs/*.jar dotcms@${prodApp2}:${deployPath}/.
"""
}
slackSend "[${plugin} - ${GIT_BRANCH}] Prod Deploy Finished - ${env.JOB_NAME} # ${env.BUILD_NUMBER} (<${env.BUILD_URL}|Open>)"
}
} else {
slackSend "[${plugin} - ${GIT_BRANCH}] Prod Deploy Skipped - ${env.JOB_NAME} # ${env.BUILD_NUMBER} (<${env.BUILD_URL}|Open>)"
}
}