forked from Project-OSRM/osrm-frontend
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathJenkinsfile
67 lines (60 loc) · 2.39 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
@Library('jenkins-libs')
import ru.etecar.Libs
import ru.etecar.HelmClient
import ru.etecar.HelmRelease
import ru.etecar.HelmRepository
node ('gce-standard-4-ssd') {
cleanWs()
checkout scm
stage ('Build image') {
def imageRepo = 'eu.gcr.io/indigo-terra-120510'
def appName = 'osrm-frontend'
def imageTag = "0.0.1-${env.BUILD_NUMBER}"
withCredentials([file(credentialsId: 'google-docker-repo', variable: 'CREDENTIALS')]) {
sh "mkdir -p ~/.docker && cat \"${CREDENTIALS}\" > ~/.docker/config.json"
}
sh "docker build . -f docker/Dockerfile -t ${imageRepo}/${appName}:${imageTag} && docker push ${imageRepo}/${appName}:${imageTag}"
}
}
node ('docker-server'){
Libs utils = new Libs(steps)
HelmClient helm = new HelmClient(steps)
HelmRepository repo = new HelmRepository(steps,"helmrepo","https://nexus:8443/repository/helmrepo/")
try {
cleanWs()
def appName = 'osrm-frontend'
kubeProdContext = "google-system"
def imageTag = "0.0.1-${env.BUILD_NUMBER}"
checkout scm
helm.init('helm')
helm.repoAdd(repo)
stage('Build helm'){
withCredentials([usernameColonPassword(credentialsId: "nexus", variable: 'CREDENTIALS')]) {
repo.push(helm.buildPacket("helm/${appName}/Chart.yaml"), CREDENTIALS, "helm-repo")
}
}
stage ('Production') {
def stage = "production"
def apiProdHostname = "maps.etecar.ru"
HelmRelease osrmFrontendRelease = new HelmRelease(steps, "${appName}", "helmrepo/${appName}")
try {
helm.tillerNamespace = "kube-system"
helm.kubeContext = kubeProdContext
osrmFrontendRelease.namespace = "${stage}"
osrmFrontendRelease.values = [
"ingress.enabled":"true",
"ingress.hosts[0]":"${ apiProdHostname}",
"image.tag" : "${imageTag}"
]
helm.upgrade( osrmFrontendRelease )
helm.waitForDeploy(osrmFrontendRelease, 400)
} catch (e) {
helm.rollback(osrmFrontendRelease)
throw e
}
}
} catch (e) {
utils.sendMail("${env.JOB_NAME} (${env.BUILD_NUMBER}) has finished with FAILED", "See ${env.BUILD_URL}")
throw e
}
}