-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathjenkinsfile
152 lines (138 loc) · 7.69 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
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
def gitUrl = 'https://github.com/tedsluis/automated-testing.git'
project = 'testing'
now = System.currentTimeMillis()
pipeline {
agent any
stages {
stage('Clean workspace') {
steps {
deleteDir()
}
}
stage('List all env vars - REMOVE AFTER TESTING!'){
steps {
echo sh(returnStdout: true, script: 'env')
}
}
stage('Check current state') {
steps {
sh "oc get all -n ${project}"
}
}
stage('Check cluster URLs') {
steps {
sh 'curl --insecure -v https://internal-master:8443/healthz/ready'
sh 'curl --insecure -v https://master:8443/healthz/ready'
sh 'curl --insecure -v https://docker-registry.wildcard/healthz'
sh 'curl --insecure -v https://docker-registry.external/v2/_catalog'
}
}
stage('Clean up previous apps') {
steps {
sh "oc delete -n ${project} bc -lapp=red"
sh "oc delete -n ${project} bc -lapp=blue"
sh "oc delete -n ${project} bc -lapp=yellow"
sh "oc delete -n ${project} bc -lapp=nginx"
sh "oc delete -n ${project} dc -lapp=red"
sh "oc delete -n ${project} dc -lapp=blue"
sh "oc delete -n ${project} dc -lapp=yellow"
sh "oc delete -n ${project} dc -lapp=nginx"
sh "oc delete -n ${project} service -lapp=red"
sh "oc delete -n ${project} service -lapp=blue"
sh "oc delete -n ${project} service -lapp=yellow"
sh "oc delete -n ${project} service -lapp=nginx"
sh "oc delete -n ${project} is red || true"
sh "oc delete -n ${project} is blue || true"
sh "oc delete -n ${project} is yellow || true"
sh "oc delete -n ${project} is nginx || true"
sh "oc delete -n ${project} route nginx || true"
timeout(time: 1, unit: 'MINUTES') {
sh "while [ `oc get pods -n ${project} -lapp=blue 2>/dev/null | grep Running | cut -d' ' -f1 | wc -w` != 0 ];do sleep 5; done"
sh "while [ `oc get pods -n ${project} -lapp=red 2>/dev/null | grep Running | cut -d' ' -f1 | wc -w` != 0 ];do sleep 5; done"
sh "while [ `oc get pods -n ${project} -lapp=yellow 2>/dev/null | grep Running | cut -d' ' -f1 | wc -w` != 0 ];do sleep 5; done"
sh "while [ `oc get pods -n ${project} -lapp=nginx 2>/dev/null | grep Running | cut -d' ' -f1 | wc -w` != 0 ];do sleep 5; done"
}
}
}
stage('Check if everything is removed') {
steps {
sh "oc get all -n ${project}"
}
}
stage('new-app red, blue and yellow') {
steps {
sh "oc new-app -n ${project} https://github.com/tedsluis/red-yellow-and-blue.git --context-dir=red --name=red"
sh "oc new-app -n ${project} https://github.com/tedsluis/red-yellow-and-blue.git --context-dir=blue --name=blue"
sh "oc new-app -n ${project} https://github.com/tedsluis/red-yellow-and-blue.git --context-dir=yellow --name=yellow"
sh "oc new-app -n ${project} https://github.com/tedsluis/red-yellow-and-blue.git --context-dir=ubuntu.nginx --name=nginx"
timeout(time: 7, unit: 'MINUTES') {
sh "sleep 5"
sh "while [ `oc get pods -n ${project} -lapp=blue 2>/dev/null | grep Running | cut -d' ' -f1 | wc -w` != 1 ];do sleep 10; done"
sh "while [ `oc get pods -n ${project} -lapp=red 2>/dev/null | grep Running | cut -d' ' -f1 | wc -w` != 1 ];do sleep 10; done"
sh "while [ `oc get pods -n ${project} -lapp=yellow 2>/dev/null | grep Running | cut -d' ' -f1 | wc -w` != 1 ];do sleep 10; done"
sh "while [ `oc get pods -n ${project} -lapp=nginx 2>/dev/null | grep Running | cut -d' ' -f1 | wc -w` != 1 ];do sleep 10; done"
}
}
}
stage('create route') {
steps {
sh "oc expose -n ${project} service nginx"
}
}
stage('Check if everthing is deployed') {
steps {
sh "oc get all -n ${project}"
}
}
stage('Check URLs') {
steps {
sh 'curl -X GET http://nginx-automated-testing.wildcard'
}
}
stage('Scale up') {
steps {
sh "oc scale -n ${project} deploymentconfig red --replicas=2"
sh "oc scale -n ${project} deploymentconfig blue --replicas=2"
sh "oc scale -n ${project} deploymentconfig yellow --replicas=2"
sh "oc scale -n ${project} deploymentconfig nginx --replicas=2"
sh "sleep 5"
timeout(time: 4, unit: 'MINUTES') {
sh "while [ `oc get pods -n ${project} -lapp=blue 2>/dev/null | grep Running | cut -d' ' -f1 | wc -w` != 2 ];do sleep 10; done"
sh "while [ `oc get pods -n ${project} -lapp=red 2>/dev/null | grep Running | cut -d' ' -f1 | wc -w` != 2 ];do sleep 10; done"
sh "while [ `oc get pods -n ${project} -lapp=yellow 2>/dev/null | grep Running | cut -d' ' -f1 | wc -w` != 2 ];do sleep 10; done"
sh "while [ `oc get pods -n ${project} -lapp=nginx 2>/dev/null | grep Running | cut -d' ' -f1 | wc -w` != 2 ];do sleep 10; done"
}
}
}
stage('Check if everthing is scaled-up') {
steps {
sh 'sleep 10'
testingtesting sh "oc get all -n ${project}"
}
}
stage('Start new build') {
steps {
sh "oc start-build -n ${project} red"
sh "oc start-build -n ${project} blue"
sh "oc start-build -n ${project} yellow"
sh "oc start-build -n ${project} nginx"
sh "sleep 5"
timeout(time: 7, unit: 'MINUTES') {
sh "while [ `oc get pods -n ${project} | grep blue 2>/dev/null | grep -P 'ContainerCreating|Terminating' | cut -d' ' -f1 | wc -w` != 0 ];do sleep 10; done"
sh "while [ `oc get pods -n ${project} | grep red 2>/dev/null | grep -P 'ContainerCreating|Terminating' | cut -d' ' -f1 | wc -w` != 0 ];do sleep 10; done"
sh "while [ `oc get pods -n ${project} | grep yellow 2>/dev/null | grep -P 'ContainerCreating|Terminating' | cut -d' ' -f1 | wc -w` != 0 ];do sleep 10; done"
sh "while [ `oc get pods -n ${project} | grep nginx 2>/dev/null | grep -P 'ContainerCreating|Terminating' | cut -d' ' -f1 | wc -w` != 0 ];do sleep 10; done"
sh "while [ `oc get pods -n ${project} | grep blue 2>/dev/null | grep -P 'ContainerCreating|Terminating|Running' | cut -d' ' -f1 | wc -w` != 2 ];do sleep 10; done"
sh "while [ `oc get pods -n ${project} | grep red 2>/dev/null | grep -P 'ContainerCreating|Terminating|Running' | cut -d' ' -f1 | wc -w` != 2 ];do sleep 10; done"
sh "while [ `oc get pods -n ${project} | grep yellow 2>/dev/null | grep -P 'ContainerCreating|Terminating|Running' | cut -d' ' -f1 | wc -w` != 2 ];do sleep 10; done"
sh "while [ `oc get pods -n ${project} | grep nginx 2>/dev/null | grep -P 'ContainerCreating|Terminating|Running' | cut -d' ' -f1 | wc -w` != 2 ];do sleep 10; done"
}
}
}
stage('Check if everthing is rebuild') {
steps {
sh "oc get all -n ${project}"
}
}
}
}