@@ -80,40 +80,27 @@ controller:
8080 # TODO: add new version each release branching
8181 test-job : |
8282 jobs:
83- - script: >
84- pipelineJob('cassandra') {
85- definition {
86- cpsScm {
87- scm {
88- git {
89- remote {
90- url('https://github.com/apache/cassandra')
83+ - script: &pipeline-job-template >
84+ def createPipelineJob(name, branch) {
85+ pipelineJob(name) {
86+ definition {
87+ cpsScm {
88+ scm {
89+ git {
90+ remote {
91+ url('https://github.com/apache/cassandra')
92+ }
93+ branch(branch)
94+ scriptPath('.jenkins/Jenkinsfile')
9195 }
92- branch('trunk')
93- scriptPath('.jenkins/Jenkinsfile')
9496 }
97+ lightweight()
9598 }
96- lightweight()
97- }
98- }
99- }
100- - script: >
101- pipelineJob('cassandra-5.0') {
102- definition {
103- cpsScm {
104- scm {
105- git {
106- remote {
107- url('https://github.com/apache/cassandra')
108- }
109- branch('cassandra-5.0')
110- scriptPath('.jenkins/Jenkinsfile')
111- }
112- }
113- lightweight()
11499 }
115100 }
116101 }
102+ createPipelineJob('cassandra', 'trunk')
103+ createPipelineJob('cassandra-5.0', 'cassandra-5.0')
117104 globalDefaultFlowDurabilityLevel :
118105 durabilityHint : " PERFORMANCE_OPTIMIZED"
119106 securityRealm : |-
@@ -129,6 +116,82 @@ controller:
129116 allowAnonymousRead: true
130117 googlePodMonitor :
131118 enabled : true
119+
120+ # YAML anchors for agent/podTemplates/agent-dind-* definitions
121+ x-pod-template-base : &pod-template-base
122+ activeDeadlineSeconds : ' 0'
123+ idleMinutes : 1
124+ nodeUsageMode : " NORMAL"
125+ showRawYaml : ' true'
126+ slaveConnectTimeout : ' 30'
127+ yamlMergeStrategy : override
128+ x-jnlp-container-base : &jnlp-container-base
129+ name : jnlp
130+ # https://github.com/jenkinsci/kubernetes-plugin#pipeline-support
131+ alwaysPullImage : true
132+ envVars :
133+ - envVar :
134+ key : DOCKER_TLS_CERTDIR
135+ value : /certs/client/
136+ - envVar :
137+ key : DOCKER_CERT_PATH
138+ value : /certs/client/
139+ - envVar :
140+ key : DOCKER_TLS_VERIFY
141+ value : ' true'
142+ - envVar :
143+ key : DOCKER_HOST
144+ value : tcp://localhost:2376
145+ - envVar :
146+ key : JENKINS_JAVA_OPTS
147+ value : ' -Dorg.jenkinsci.plugins.durabletask.BourneShellScript.USE_BINARY_WRAPPER=true -Xlog:gc+heap+exit -XX:+HeapDumpOnOutOfMemoryError'
148+ # there's a lot of docker pulls,
149+ # TODO implement option for docker registry caches :: https://medium.com/@elementtech.dev/#kubernetes-image-proxy-cache-from-minutes-to-milliseconds-fd14173e831f
150+ image : apache.jfrog.io/cassan-docker/apache/cassandra-jenkins-k8s
151+ livenessProbe :
152+ failureThreshold : ' 0'
153+ initialDelaySeconds : ' 0'
154+ periodSeconds : ' 0'
155+ successThreshold : ' 0'
156+ timeoutSeconds : ' 0'
157+ privileged : ' true'
158+ ttyEnabled : ' true'
159+ workingDir : /home/jenkins/agent
160+ resourceRequestCpu : 1
161+ resourceLimitCpu : 3
162+ resourceRequestMemory : 1G
163+ resourceLimitMemory : 2G
164+ x-dind-container-base : &dind-container-base
165+ name : dind
166+ alwaysPullImage : ' false'
167+ envVars :
168+ - envVar :
169+ key : DOCKER_TLS_CERTDIR
170+ value : /certs
171+ - envVar :
172+ key : " DOCKER_IPTABLES_LEGACY"
173+ value : " 1"
174+ image : docker:dind
175+ args : " --default-address-pool base=192.168.96.0/20,size=24" # overwrite docker subnet in case of overlapping
176+ livenessProbe :
177+ failureThreshold : ' 0'
178+ initialDelaySeconds : ' 0'
179+ periodSeconds : ' 0'
180+ successThreshold : ' 0'
181+ timeoutSeconds : ' 0'
182+ privileged : ' true'
183+ ttyEnabled : ' true'
184+ workingDir : /home/jenkins/agent
185+ x-volumes-base : &volumes-base
186+ - emptyDirVolume :
187+ memory : ' false'
188+ mountPath : /var/lib/docker
189+ - emptyDirVolume :
190+ memory : ' false'
191+ mountPath : /certs
192+ # end-of: YAML anchors for agent/podTemplates/agent-dind-* definitions
193+
194+
132195agent :
133196 disableDefaultAgent : true
134197 maxRequestsPerHostStr : " 3200"
@@ -139,236 +202,52 @@ agent:
139202 podTemplates :
140203 agent-dind-small : |
141204 - name: agent-dind-small
205+ <<: *pod-template-base
142206 label: agent-dind cassandra-small cassandra-amd64-small
143207 nodeSelector: 'cassandra.jenkins.agent.small=true'
144- activeDeadlineSeconds: '0'
145- idleMinutes: 1
146208 instanceCap: 50
147209 instanceCapStr: "50"
148- nodeUsageMode: "NORMAL"
149- showRawYaml: 'true'
150- slaveConnectTimeout: '30'
151- yamlMergeStrategy: override
152210 containers:
153- - name: jnlp
154- # https://github.com/jenkinsci/kubernetes-plugin#pipeline-support
155- alwaysPullImage: true
156- envVars:
157- - envVar:
158- key: DOCKER_TLS_CERTDIR
159- value: /certs/client/
160- - envVar:
161- key: DOCKER_CERT_PATH
162- value: /certs/client/
163- - envVar:
164- key: DOCKER_TLS_VERIFY
165- value: 'true'
166- - envVar:
167- key: DOCKER_HOST
168- value: tcp://localhost:2376
169- - envVar:
170- key: JENKINS_JAVA_OPTS
171- value: '-Dorg.jenkinsci.plugins.durabletask.BourneShellScript.USE_BINARY_WRAPPER=true -Xlog:gc+heap+exit -XX:+HeapDumpOnOutOfMemoryError'
172- # there's a lot of docker pulls,
173- # TODO implement option for docker registry caches :: https://medium.com/@elementtech.dev/kubernetes-image-proxy-cache-from-minutes-to-milliseconds-fd14173e831f
174- image: apache.jfrog.io/cassan-docker/apache/cassandra-jenkins-k8s
175- livenessProbe:
176- failureThreshold: '0'
177- initialDelaySeconds: '0'
178- periodSeconds: '0'
179- successThreshold: '0'
180- timeoutSeconds: '0'
181- privileged: 'true'
211+ - <<: *jnlp-container-base
182212 resourceRequestCpu: 1
183213 resourceLimitCpu: 2
184214 resourceRequestMemory: 1G
185215 resourceLimitMemory: 1G
186- ttyEnabled: 'true'
187- workingDir: /home/jenkins/agent
188- - name: dind
189- alwaysPullImage: 'false'
190- envVars:
191- - envVar:
192- key: DOCKER_TLS_CERTDIR
193- value: /certs
194- - envVar:
195- key: "DOCKER_IPTABLES_LEGACY"
196- value: "1"
197- image: docker:dind
198- args: "--default-address-pool base=192.168.96.0/20,size=24" # overwrite docker subnet in case of overlapping
199- livenessProbe:
200- failureThreshold: '0'
201- initialDelaySeconds: '0'
202- periodSeconds: '0'
203- successThreshold: '0'
204- timeoutSeconds: '0'
205- privileged: 'true'
216+ - <<: *dind-container-base
206217 resourceRequestCpu: 2
207218 resourceLimitCpu: 4
208219 resourceRequestMemory: 1G
209220 resourceLimitMemory: 2400M
210- ttyEnabled: 'true'
211- workingDir: /home/jenkins/agent
212- volumes:
213- - emptyDirVolume:
214- memory: 'false'
215- mountPath: /var/lib/docker
216- - emptyDirVolume:
217- memory: 'false'
218- mountPath: /certs
221+ volumes: *volumes-base
219222 agent-dind-medium : |
220223 - name: agent-dind-medium
224+ <<: *pod-template-base
221225 label: agent-dind cassandra-medium cassandra-amd64-medium
222226 nodeSelector: 'cassandra.jenkins.agent.medium=true'
223- activeDeadlineSeconds: '0'
224- idleMinutes: 1
225227 instanceCap: 100
226228 instanceCapStr: "100"
227- nodeUsageMode: "NORMAL"
228- showRawYaml: 'true'
229- slaveConnectTimeout: '30'
230- yamlMergeStrategy: override
231229 containers:
232- - name: jnlp
233- # https://github.com/jenkinsci/kubernetes-plugin#pipeline-support
234- alwaysPullImage: true
235- envVars:
236- - envVar:
237- key: DOCKER_TLS_CERTDIR
238- value: /certs/client/
239- - envVar:
240- key: DOCKER_CERT_PATH
241- value: /certs/client/
242- - envVar:
243- key: DOCKER_TLS_VERIFY
244- value: 'true'
245- - envVar:
246- key: DOCKER_HOST
247- value: tcp://localhost:2376
248- - envVar:
249- key: JENKINS_JAVA_OPTS
250- value: '-Dorg.jenkinsci.plugins.durabletask.BourneShellScript.USE_BINARY_WRAPPER=true'
251- image: apache.jfrog.io/cassan-docker/apache/cassandra-jenkins-k8s
252- livenessProbe:
253- failureThreshold: '0'
254- initialDelaySeconds: '0'
255- periodSeconds: '0'
256- successThreshold: '0'
257- timeoutSeconds: '0'
258- privileged: 'true'
259- resourceRequestCpu: 1
260- resourceLimitCpu: 3
261- resourceRequestMemory: 1G
262- resourceLimitMemory: 2400M
263- ttyEnabled: 'true'
264- workingDir: /home/jenkins/agent
265- - name: dind
266- alwaysPullImage: 'false'
267- envVars:
268- - envVar:
269- key: DOCKER_TLS_CERTDIR
270- value: /certs
271- - envVar:
272- key: "DOCKER_IPTABLES_LEGACY"
273- value: "1"
274- image: docker:dind
275- args: "--default-address-pool base=192.168.96.0/20,size=24" # overwrite docker subnet in case of overlapping
276- livenessProbe:
277- failureThreshold: '0'
278- initialDelaySeconds: '0'
279- periodSeconds: '0'
280- successThreshold: '0'
281- timeoutSeconds: '0'
282- privileged: 'true'
230+ - <<: *jnlp-container-base
231+ - <<: *dind-container-base
283232 resourceRequestCpu: 2
284233 resourceLimitCpu: 4
285234 resourceRequestMemory: 3400M
286235 resourceLimitMemory: 5G
287- ttyEnabled: 'true'
288- workingDir: /home/jenkins/agent
289- volumes:
290- - emptyDirVolume:
291- memory: 'false'
292- mountPath: /var/lib/docker
293- - emptyDirVolume:
294- memory: 'false'
295- mountPath: /certs
236+ volumes: *volumes-base
296237 agent-dind-large : |
297238 - name: agent-dind-large
239+ <<: *pod-template-base
298240 label: agent-dind cassandra-large cassandra-amd64-large cassandra-amd64-large-dedicated
299241 nodeSelector: 'cassandra.jenkins.agent.large=true'
300- activeDeadlineSeconds: '0'
301- idleMinutes: 1
302242 instanceCap: 200
303243 instanceCapStr: "200"
304- nodeUsageMode: "NORMAL"
305- showRawYaml: 'true'
306- slaveConnectTimeout: '30'
307- yamlMergeStrategy: override
308244 containers:
309- - name: jnlp
310- # https://github.com/jenkinsci/kubernetes-plugin#pipeline-support
311- alwaysPullImage: true
312- envVars:
313- - envVar:
314- key: DOCKER_TLS_CERTDIR
315- value: /certs/client/
316- - envVar:
317- key: DOCKER_CERT_PATH
318- value: /certs/client/
319- - envVar:
320- key: DOCKER_TLS_VERIFY
321- value: 'true'
322- - envVar:
323- key: DOCKER_HOST
324- value: tcp://localhost:2376
325- - envVar:
326- key: JENKINS_JAVA_OPTS
327- value: '-Dorg.jenkinsci.plugins.durabletask.BourneShellScript.USE_BINARY_WRAPPER=true'
328- image: apache.jfrog.io/cassan-docker/apache/cassandra-jenkins-k8s
329- livenessProbe:
330- failureThreshold: '0'
331- initialDelaySeconds: '0'
332- periodSeconds: '0'
333- successThreshold: '0'
334- timeoutSeconds: '0'
335- privileged: 'true'
336- resourceRequestCpu: 1
337- resourceLimitCpu: 3
338- resourceRequestMemory: 1G
339- resourceLimitMemory: 2G
340- ttyEnabled: 'true'
341- workingDir: /home/jenkins/agent
342- - name: dind
343- alwaysPullImage: 'false'
344- envVars:
345- - envVar:
346- key: DOCKER_TLS_CERTDIR
347- value: /certs
348- - envVar:
349- key: "DOCKER_IPTABLES_LEGACY"
350- value: "1"
351- image: docker:dind
352- args: "--default-address-pool base=192.168.96.0/20,size=24" # overwrite docker subnet in case of overlapping
353- livenessProbe:
354- failureThreshold: '0'
355- initialDelaySeconds: '0'
356- periodSeconds: '0'
357- successThreshold: '0'
358- timeoutSeconds: '0'
359- privileged: 'true'
245+ - <<: *jnlp-container-base
246+ - <<: *dind-container-base
360247 resourceRequestCpu: 6
361248 resourceLimitCpu: 7
362249 resourceRequestMemory: 16G
363250 resourceLimitMemory: 30G
364- ttyEnabled: 'true'
365- workingDir: /home/jenkins/agent
366- volumes:
367- - emptyDirVolume:
368- memory: 'false'
369- mountPath: /var/lib/docker
370- - emptyDirVolume:
371- memory: 'false'
372- mountPath: /certs
251+ volumes: *volumes-base
373252
374253
0 commit comments