-
Notifications
You must be signed in to change notification settings - Fork 0
/
Jenkinsfile
70 lines (66 loc) · 1.84 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
pipeline{
agent any
triggers{
pollSCM('* * * * *')
}
stages{
stage("Compile"){
steps{
sh "./gradlew compileJava"
}
}
stage("Unit test") {
steps {
sh "./gradlew test"
}
}
stage("Code Coverage"){
steps{
sh "./gradlew jacocoTestReport"
publishHTML(
target:[
reportDir:'build/reports/jacoco/test/html/',
reportFiles:'index.html',
reportName: 'JaCoCo Report'
]
)
sh "./gradlew jacocoTestCoverageVerification"
}
}
stage("Package"){
steps{
sh './gradlew build'
}
}
stage("Docker login") {
steps {
withCredentials([[$class: 'UsernamePasswordMultiBinding', credentialsId: 'docker-hub-credentials',
usernameVariable: 'USERNAME', passwordVariable: 'PASSWORD']]) {
sh "docker login --username $USERNAME --password $PASSWORD"
}
}
}
stage("Docker push"){
steps {
sh "docker push tech99/calculator"
}
}
stage("Deploy to staging"){
steps{
sh "docker run -d --rm -p 8765:8080 --name calculator_stage tech99/calculator"
}
}
stage("Acceptance Test"){
steps{
sleep 60
sh "./gradlew acceptanceTest -Dcalculator.url=http://localhost:8765"
// sh "chmod +x acceptance_test.sh && ./acceptance_test/sh"
}
}
}
post{
always{
sh "docker stop calculator_stage"
}
}
}