-
Notifications
You must be signed in to change notification settings - Fork 0
/
Jenkinsfile
121 lines (106 loc) · 3.6 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
110
111
112
113
114
115
116
117
118
119
120
121
pipeline {
agent {
docker {
image 'node:current-alpine'
args '-p 3000:3000'
}
}
stages {
stage('Code Checkout') {
steps {
checkout([
$class: 'GitSCM',
branches: [[name: '*/${branch}']],
userRemoteConfigs: [[url: 'https://github.com/kallaics/nodejs-test.git']]
])
}
}
stage('Build') {
agent {
docker {
image 'docker/dind'
args '-v /var/run/docker/docker.sock:/var/run/docker/docker.sock'
}
}
steps {
// Build a Docker container with the Node.JS code
script {
app = docker.build("kallaics82/nodejs-test")
}
}
}
stage('Integration test') {
steps {
script {
app.inside {
// Start integration test, when app is running well.
sh 'echo "Integration test"'
}
}
}
post {
success {
// Publish reports
publishHTML target: [
allowMissing: false,
alwaysLinkToLastBuild: false,
keepAll: true,
reportDir: 'coverage',
reportFiles: 'index.html',
reportName: 'RCov Report'
]
script {
//Push Docker image to local registry
app.push("${env.BUILD_NUMBER}")
}
}
}
}
stage('Release') {
// if it happened on the master branch (on GitHub "master" branch called "main")
when {
branch 'main'
}
steps {
//Push Docker image to DockerHub
script {
docker.withRegistry('https://registry.hub.docker.com', 'Docker Hub - kallaics82') {
// Push docker image with a build number.
app.push("${env.BUILD_NUMBER}")
// Push image with a "latest" tag.
app.push("latest")
}
}
}
}
}
// Notify user via e-mail about the job state after the run.
post {
success {
notifyOnSuccessful()
}
// "Unsuccessful" is included any state, except the success.
// When it is too much, you can able to use "failure" keyword
unsuccessful {
notifyOnFailure()
}
}
}
def notifyOnSuccessful() {
// Send email to user
emailext (
recipientProviders: [requestor()],
subject: "Build was successsful: '${env.JOB_NAME} [${env.BUILD_NUMBER}]'",
body: """<p>Job: '${env.JOB_NAME} [${env.BUILD_NUMBER}]':</p>
<p>Check console output at "<a href='${env.BUILD_URL}'>${env.JOB_NAME} [${env.BUILD_NUMBER}]</a>"</p>""",
)
}
def notifyOnFailure() {
// Send email to user
emailext (
recipientProviders: [requestor()],
subject: "Build Failed! '${env.JOB_NAME} [${env.BUILD_NUMBER}]'",
body: """<p>Job: '${env.JOB_NAME} [${env.BUILD_NUMBER}]':</p>
<p>Check console output at "<a href='${env.BUILD_URL}'>${env.JOB_NAME} [${env.BUILD_NUMBER}]</a>"</p>""",
)
}