Skip to content

Commit 6014180

Browse files
WIP
1 parent 15a3516 commit 6014180

File tree

1 file changed

+103
-224
lines changed

1 file changed

+103
-224
lines changed

.jenkins/k8s/jenkins-deployment.yaml

Lines changed: 103 additions & 224 deletions
Original file line numberDiff line numberDiff line change
@@ -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+
132195
agent:
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

Comments
 (0)