forked from QualitativeDataRepository/dataverse
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathJenkinsfile
89 lines (79 loc) · 2.46 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
#!groovy
node {
workspace = pwd()
properties([[$class: 'ParametersDefinitionProperty', parameterDefinitions: [
[ name: 'DEPLOY_TARGET', $class: 'StringParameterDefinition', defaultValue: 'qdr-dev-ec2-01' ],
]]])
stage('Init') {
/*
* Checkout code
*/
checkout scm
ARTIFACT_ID = readMavenPom().getArtifactId()
VERSION = readMavenPom().getVersion()
currentBuild.result = 'SUCCESS'
}
stage('Test') {
/*
* Run Unit tests
*/
notifyBuild("Running Tests", "good")
try {
withMaven(
jdk: 'jdk8',
maven: 'mvn-3-5-0') {
sh "mvn test"
}
}
catch (e) {
currentBuild.result = "UNSTABLE"
notifyBuild("Warning: Tests Failed!", "warning")
}
}
stage('Build') {
/*
* Run Unit tests
*/
notifyBuild("Building", "good")
try {
withMaven(
jdk: 'jdk8',
maven: 'mvn-3-5-0') {
sh "mvn clean package -DskipTests"
}
}
catch (e) {
currentBuild.result = "FAILURE"
notifyBuild("Warning: Build failed!", "warning")
}
stash includes: 'target/dataverse*.war', name: 'dataverse-war'
}
stage('Deploy') {
/*
* Deploy
*/
timeout(time: 2, unit: "HOURS") {
def DEPLOY_TARGET = input message: 'Deploy to', parameters: [string(defaultValue: "${DEPLOY_TARGET}", description: 'qdr-dev-ec2-01, qdr-stage, qdr-prod', name: 'DEPLOY_TARGET')]
}
notifyBuild("Deploying ${ARTIFACT_ID}-${VERSION} to ${DEPLOY_TARGET}", "good")
unstash 'dataverse-war'
try {
sh """
ssh qdradmin@${DEPLOY_TARGET}.int.qdr.org \"sudo mkdir -p /srv/dataverse-releases; sudo chown qdradmin /srv/dataverse-releases\"
rsync -av target/${ARTIFACT_ID}-${VERSION}.war qdradmin@${DEPLOY_TARGET}.int.qdr.org:/srv/dataverse-releases
ssh qdradmin@${DEPLOY_TARGET}.int.qdr.org ' sudo chmod 644 /srv/dataverse-releases/${ARTIFACT_ID}-${VERSION}.war; sudo su - glassfish -c \"dv-deploy /srv/dataverse-releases/${ARTIFACT_ID}-${VERSION}.war\"'
"""
notifyBuild("Success", "good")
sh "curl -sX POST http://graphite.int.qdr.org:81/events/ -d '{\"what\": \"${ARTIFACT_ID}-${VERSION} to ${DEPLOY_TARGET}\", \"tags\" : \"deployment\"}'"
}
catch (e) {
currentBuild.result = "FAILURE"
notifyBuild("Failed!", "danger")
throw e
}
}
}
@NonCPS
def notifyBuild(String message, String color) {
slackSend message: "<$JOB_URL|$JOB_NAME>: ${message}", color: "${color}"
}