-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathJenkinsfile
78 lines (76 loc) · 4.31 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
pipeline {
agent any
environment {
DOCKER_OWNER = 'mdnfiras'
DOCKER_USER = 'mdnfiras'
DOCKER_TOKEN = credentials('dockerhub-firas-token')
FRONT_IMG_TAG = sh( returnStdout:true,
script: 'sha256sum angular-app/package.json | cut -c1-15'
).trim()
BACK_IMG_TAG = sh( returnStdout:true,
script: 'sha256sum express-server/package.json | cut -c1-15'
).trim()
REPO_API_URL = 'https://registry.hub.docker.com/v2/repositories'
}
stages {
stage ('Preparing base image for front end') {
steps {
sh( returnStdout: false, script: """#!/bin/sh
res=\$(wget -O - --user ${env.DOCKER_USER} --password ${env.DOCKER_TOKEN} ${env.REPO_API_URL}/${env.DOCKER_OWNER}/gmc-angular-front-base/tags | grep ${env.FRONT_IMG_TAG} )
if [ -z "\$res" ]; then
echo "Did not find image with tag ${env.FRONT_IMG_TAG}"
docker login -u ${env.DOCKER_USER} -p ${env.DOCKER_TOKEN}
docker build -f angular-app/base.Dockerfile -t ${env.DOCKER_OWNER}/gmc-angular-front-base:${env.FRONT_IMG_TAG} angular-app/
docker push ${env.DOCKER_OWNER}/gmc-angular-front-base:${env.FRONT_IMG_TAG}
else
echo "Found image with tag ${env.FRONT_IMG_TAG}"
fi
""".stripIndent()
)
}
}
stage ('Front end image build') {
steps {
sh "docker login -u ${env.DOCKER_USER} -p ${env.DOCKER_TOKEN}"
sh "docker pull ${env.DOCKER_OWNER}/gmc-angular-front-base:${env.FRONT_IMG_TAG}"
sh "docker tag ${env.DOCKER_OWNER}/gmc-angular-front-base:${env.FRONT_IMG_TAG} gmc-angular-front-base:latest"
sh "docker build --tag ${env.DOCKER_OWNER}/gmc-angular-front:build-${env.BUILD_NUMBER} --file ./angular-app/Dockerfile ./angular-app/"
sh "docker push ${env.DOCKER_OWNER}/gmc-angular-front:build-${env.BUILD_NUMBER}"
sh "docker tag ${env.DOCKER_OWNER}/gmc-angular-front:build-${env.BUILD_NUMBER} ${env.DOCKER_OWNER}/gmc-angular-front:latest"
sh "docker push ${env.DOCKER_OWNER}/gmc-angular-front:latest"
}
}
stage ('Preparing base image for back end') {
steps {
sh( returnStdout: false, script: """#!/bin/sh
res=\$(wget -O - --user ${env.DOCKER_USER} --password ${env.DOCKER_TOKEN} ${env.REPO_API_URL}/${env.DOCKER_OWNER}/gmc-express-back-base/tags | grep ${env.BACK_IMG_TAG} )
if [ -z "\$res" ]; then
echo "Did not find image with tag ${env.BACK_IMG_TAG}"
docker login -u ${env.DOCKER_USER} -p ${env.DOCKER_TOKEN}
docker build -f express-server/base.Dockerfile -t ${env.DOCKER_OWNER}/gmc-express-back-base:${env.BACK_IMG_TAG} express-server/
docker push ${env.DOCKER_OWNER}/gmc-express-back-base:${env.BACK_IMG_TAG}
else
echo "Found image with tag ${env.BACK_IMG_TAG}"
fi
""".stripIndent()
)
}
}
stage ('Back end image build') {
steps {
sh "docker login -u ${env.DOCKER_USER} -p ${env.DOCKER_TOKEN}"
sh "docker pull ${env.DOCKER_OWNER}/gmc-express-back-base:${env.BACK_IMG_TAG}"
sh "docker tag ${env.DOCKER_OWNER}/gmc-express-back-base:${env.BACK_IMG_TAG} gmc-express-back-base:latest"
sh "docker build --tag ${env.DOCKER_OWNER}/gmc-express-back:build-${env.BUILD_NUMBER} --file ./express-server/Dockerfile ./express-server/"
sh "docker push ${env.DOCKER_OWNER}/gmc-express-back:build-${env.BUILD_NUMBER}"
sh "docker tag ${env.DOCKER_OWNER}/gmc-express-back:build-${env.BUILD_NUMBER} ${env.DOCKER_OWNER}/gmc-express-back:latest"
sh "docker push ${env.DOCKER_OWNER}/gmc-express-back:latest"
}
}
stage ('Trigger deployment'){
steps{
build job: 'gmc-app-deployment', parameters: [], wait: false
}
}
}
}