forked from sclorg/django-ex
-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathJenkinsfile
69 lines (69 loc) · 2.68 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
pipeline {
agent any
environment {
// REPO is set as an agent env variable
IMAGE = 'library/django-ex'
DOCKER_API_VERSION = '1.23'
}
stages {
stage('Build') {
steps {
echo "Building ${env.JOB_NAME}:${env.BUILD_ID} on ${env.JENKINS_URL}.."
sh """
docker build -t ${env.REPO}/${env.IMAGE}:${env.BUILD_ID} .
"""
}
}
stage('Test') {
steps {
echo 'Testing ${env.JOB_NAME}:${env.BUILD_ID} on ${env.JENKINS_URL}..'
// Run tests in built container, copy out artifacts (required)
sh """
docker run -v /mnt/work/report:/report ${env.REPO}/${env.IMAGE}:${env.BUILD_ID} ./manage.py jenkins --enable-coverage --output-dir=/report
cp -r /work/report report
"""
archiveArtifacts artifacts: 'report/*.xml'
junit 'report/*.xml'
}
}
stage('Publish') {
when {
// Only publish master branch
expression { env.JOB_BASE_NAME == 'master' }
}
steps {
echo "Publishing ${env.JOB_NAME}:${env.BUILD_ID} on ${env.JENKINS_URL}.."
withCredentials([[$class: 'UsernamePasswordMultiBinding', credentialsId: 'harborsecret',
usernameVariable: 'USERNAME', passwordVariable: 'PASSWORD']]) {
sh """
docker login -u $USERNAME -p $PASSWORD https://${env.REPO}
docker push ${env.REPO}/${env.IMAGE}:${env.BUILD_ID}
"""
}
}
}
stage('Deploy') {
when {
// Only deploy master branch
expression { env.JOB_BASE_NAME == 'master' }
}
steps {
echo 'Deploying ${env.JOB_NAME}:${env.BUILD_ID} on ${env.JENKINS_URL}..'
sh """
DOMAIN_NAME=${env.DOMAIN_NAME}
if [ -z $DOMAIN_NAME ]; then
DOMAIN_NAME=photon
fi
helm upgrade --install django-ex-${env.JOB_BASE_NAME} \
--set=image.repoitory=${env.REPO} \
--set=image.tag=${env.BUILD_ID} \
--set=image.pullSecret=harborsecret \
--set=service.type=ClusterIP \
--set=ingress.enabled=true \
--set=ingress.hosts.0=django-ex.$DOMAIN_NAME \
helm/django-ex
"""
}
}
}
}