-
Notifications
You must be signed in to change notification settings - Fork 10
/
Copy pathJenkinsfile
74 lines (74 loc) · 2.05 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
podTemplate(
label: "python-builder",
// Keep docker container started for 10 minutes before deleting it
// idleMinutes: 10,
// Affect service account to update develop
serviceAccount: 'jenkins-updater',
// Uncomment to use secret to pull secret image
// imagePullSecrets: [ 'github-cred' ],
// Containers to create
containers: [
containerTemplate(
name: 'python',
image: 'python:3',
ttyEnabled: true,
command: 'cat',
resourceRequestMemory: "200M",
resourceLimitMemory: "250M"
),
containerTemplate(
name: 'kaniko',
image: 'gcr.io/kaniko-project/executor:v1.8.0-debug',
ttyEnabled: true,
command: 'cat'
),
containerTemplate(
name: 'kubectl',
image: 'gcr.io/cloud-builders/kubectl',
ttyEnabled: true,
command: 'cat'
),
],
volumes: [
secretVolume(
secretName: 'docker-hub-cred',
mountPath: '/home/jenkins/docker'
)
]
) {
node("python-builder") {
stage("checkout") {
checkout scm
}
container('python') {
stage("prereq") {
sh("pip install -r flask-healthcheck/requirements.txt")
sh("pip install pylint")
}
stage('linter') {
sh("pylint flask-healthcheck --exit-zero")
}
}
container('kaniko') {
def imageName = "yannig/flask-healthcheck:latest"
stage('login') {
sh('''
mkdir -p /kaniko/.docker
cp /home/jenkins/docker/.dockerconfigjson /kaniko/.docker/config.json
sed -i 's|docker.io|https://index.docker.io/v1/|g' /kaniko/.docker/config.json
''')
}
stage('build') {
sh("/kaniko/executor --context flask-healthcheck --destination docker.io/${imageName}")
}
}
container('kubectl') {
stage('update-develop') {
def time = System.currentTimeMillis()
def patch = """{"spec":{"template":{"metadata":{"labels":{"date":"${time}"}}}}}"""
patch = patch.replace('"', '\\"')
sh("kubectl -n develop patch deployment test -p \"${patch}\"")
}
}
}
}