-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathJenkinsfile
executable file
·50 lines (42 loc) · 1.43 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
def registryUrl = 'registry.marathon.l4lb.thisdcos.directory:5000'
def appImage = '/demo/demoapp'
def dbImage = '/demo/demodb'
def gitCommit() {
sh "git rev-parse HEAD > GIT_COMMIT"
def gitCommit = readFile('GIT_COMMIT').trim()
sh "rm -f GIT_COMMIT"
return gitCommit
}
node {
// Checkout source code from Git
stage 'Checkout'
checkout scm
// Build the Java project
stage 'Build: Code'
sh '/usr/lib/mvn/bin/mvn package'
def commitId = gitCommit()
// Build Docker image
stage 'Build: Docker Image'
sh "docker build -t ${registryUrl}${appImage}:${commitId} -t ${registryUrl}${appImage}:latest docker/app"
sh "docker build -t ${registryUrl}${dbImage}:${commitId} -t ${registryUrl}${dbImage}:latest docker/db"
// Puch images
stage 'Publish'
sh "docker push ${registryUrl}${appImage}:${commitId}"
sh "docker push ${registryUrl}${appImage}:latest"
sh "docker push ${registryUrl}${dbImage}:${commitId}"
sh "docker push ${registryUrl}${dbImage}:latest"
// Deploy
stage 'Deploy'
marathon(
url: 'http://marathon.mesos:8080',
forceUpdate: true,
filename: 'marathon_app.json',
docker: "${registryUrl}${appImage}:${commitId}".toString()
)
marathon(
url: 'http://marathon.mesos:8080',
forceUpdate: true,
filename: 'marathon_db.json',
docker: "${registryUrl}${dbImage}:${commitId}".toString()
)
}