blob: 7c69e9284bafff3b1dfb3dab94c69c15e6a85ff7 [file] [log] [blame]
Matthias Andreas Benkardc7560352021-09-05 12:25:13 +02001---
2apiVersion: apps/v1
3kind: Deployment
4metadata:
5 name: git
6 namespace: mulk
7 labels:
8 name: git
9 k8s-app: git
10spec:
11 replicas: 1
12 selector:
13 matchLabels:
14 k8s-app: git
15 name: git
16 template:
17 metadata:
18 labels:
19 name: git
20 k8s-app: git
21 spec:
Matthias Andreas Benkardc7560352021-09-05 12:25:13 +020022 containers:
Matthias Andreas Benkardfaf5a092024-03-06 12:51:07 +010023 - name: cgit
Matthias Andreas Benkard65b41322026-11-04 11:41:16 +010024 image: docker.io/woahbase/alpine-cgit:x86_64_1.2.1_20210405
Matthias Andreas Benkardc7560352021-09-05 12:25:13 +020025 imagePullPolicy: Always
26 env: []
Matthias Andreas Benkardfaf5a092024-03-06 12:51:07 +010027 command:
28 - /bin/sh
29 - -c
30 - apk update && apk add groff python3 py3-docutils py3-markdown py3-pygments && /init
Matthias Andreas Benkardc7560352021-09-05 12:25:13 +020031 resources:
32 limits:
33 cpu: 2000m
34 memory: 100Mi
35 requests:
36 cpu: 10m
37 memory: 50Mi
38 ports:
39 - containerPort: 80
40 name: cgit-http
41 protocol: TCP
42 volumeMounts:
43 - name: data
44 mountPath: /home/git
45 - name: config
46 mountPath: /etc/cgitrc
47 subPath: cgitrc
48 readOnly: true
Matthias Andreas Benkard8c9b6132024-03-06 12:51:33 +010049 - name: gitolite
50 image: docker.io/elsdoerfer/gitolite:latest
51 imagePullPolicy: Always
52 env: []
53 #tty: true
54 #stdin: true
55 #command:
56 # - /bin/cat
57 resources:
58 limits:
59 cpu: 2000m
60 memory: 100Mi
61 requests:
62 cpu: 10m
63 memory: 50Mi
64 ports:
65 - containerPort: 2222
66 name: gitolite-ssh
67 protocol: TCP
68 volumeMounts:
69 - name: data
70 mountPath: /home/git/repositories
71 subPath: repositories
72 #- name: data
73 # mountPath: /home/git/projects.list
74 # subPath: projects.list
75 - name: data
76 mountPath: /home/git/.gitolite
77 subPath: .gitolite
78 - name: data
79 mountPath: /home/git/.gitolite.rc
80 subPath: .gitolite.rc
81 - name: data
82 mountPath: /home/git/.ssh
83 subPath: .ssh
84 - name: ssh
85 mountPath: /etc/ssh
Matthias Andreas Benkardc7560352021-09-05 12:25:13 +020086 volumes:
87 - name: data
88 persistentVolumeClaim:
89 claimName: git-data
Matthias Andreas Benkard8c9b6132024-03-06 12:51:33 +010090 - name: ssh
91 persistentVolumeClaim:
92 claimName: git-ssh
Matthias Andreas Benkardc7560352021-09-05 12:25:13 +020093 - name: config
94 configMap:
95 name: git-config
96---
97apiVersion: v1
98kind: Service
99metadata:
100 name: git-cgit
101 namespace: mulk
102 labels:
103 k8s-app: git
104 name: git-cgit
105spec:
106 selector:
107 k8s-app: git
108 type: ClusterIP
109 ports:
110 - name: http
111 port: 80
112 targetPort: cgit-http
113 protocol: TCP
114---
115apiVersion: v1
116kind: Service
117metadata:
118 name: git-gitolite
119 namespace: mulk
120 labels:
121 k8s-app: git
122 name: git-gitolite
123spec:
124 selector:
125 k8s-app: git
Matthias Andreas Benkard8c9b6132024-03-06 12:51:33 +0100126 type: NodePort
Matthias Andreas Benkardc7560352021-09-05 12:25:13 +0200127 ports:
128 - name: ssh
129 port: 22
130 targetPort: gitolite-ssh
131 protocol: TCP
132---
133apiVersion: v1
134kind: PersistentVolumeClaim
135metadata:
136 name: git-data
137 namespace: mulk
138 labels:
139 name: git-data
140 k8s-app: git
141spec:
142 accessModes:
143 - ReadWriteOnce
144 resources:
145 requests:
146 storage: 200Gi
147 storageClassName: local-path
148---
Matthias Andreas Benkard8c9b6132024-03-06 12:51:33 +0100149apiVersion: v1
150kind: PersistentVolumeClaim
151metadata:
152 name: git-ssh
153 namespace: mulk
154 labels:
155 name: git-ssh
156 k8s-app: git
157spec:
158 accessModes:
159 - ReadWriteOnce
160 resources:
161 requests:
162 storage: 50Mi
163 storageClassName: local-path
164---
Matthias Andreas Benkardc7560352021-09-05 12:25:13 +0200165apiVersion: networking.k8s.io/v1
166kind: Ingress
167metadata:
168 name: git-cgit-cgi
169 namespace: mulk
170 annotations:
171 cert-manager.io/cluster-issuer: letsencrypt-prod
172 kubernetes.io/ingress.class: nginx
173 nginx.ingress.kubernetes.io/rewrite-target: /cgit/cgit.cgi/$1$2
Matthias Andreas Benkard191bbf12026-11-04 19:59:58 +0100174 # Cap cgit at 5 r/s in total (zone defined in ingress-nginx/config.yaml).
175 # A limit_req at location level replaces the inherited server-level one,
176 # so the bot limit is repeated here.
177 nginx.ingress.kubernetes.io/configuration-snippet: |
178 limit_req zone=bots burst=20 nodelay;
179 limit_req zone=perhost burst=20 nodelay;
Matthias Andreas Benkardc7560352021-09-05 12:25:13 +0200180spec:
181 rules:
182 - host: git.benkard.de
183 http:
184 paths:
185 - backend:
186 service:
187 name: git-cgit
188 port:
189 number: 80
190 path: /(.*)[.]git(/.*)?$
191 pathType: ImplementationSpecific
192 - backend:
193 service:
194 name: git-cgit
195 port:
196 number: 80
197 path: /(.*)(.*)?$
198 pathType: ImplementationSpecific
199 tls:
200 - hosts:
201 - git.benkard.de
202 secretName: git-cgit-cgi-tls
203---
204apiVersion: networking.k8s.io/v1
205kind: Ingress
206metadata:
207 name: git-cgit-assets
208 namespace: mulk
209 annotations:
210 cert-manager.io/cluster-issuer: letsencrypt-prod
211 kubernetes.io/ingress.class: nginx
212 nginx.ingress.kubernetes.io/rewrite-target: /cgit/$1
213spec:
214 rules:
215 - host: static.git.benkard.de
216 http:
217 paths:
218 - backend:
219 service:
220 name: git-cgit
221 port:
222 number: 80
223 path: /(.*)
224 pathType: ImplementationSpecific
225 tls:
226 - hosts:
227 - static.git.benkard.de
228 secretName: git-cgit-assets-tls
229---
230apiVersion: v1
231kind: ConfigMap
232metadata:
233 name: git-config
234 namespace: mulk
235data:
236 cgitrc: |-
237 css=https://static.git.benkard.de/cgit.css
238 logo=https://static.git.benkard.de/cgit.png
239
240 remove-suffix=1
241 enable-commit-graph=1
242 enable-index-links=1
243 enable-log-filecount=1
244 enable-log-linecount=1
245 enable-git-config=1
246 case-sensitive-sort=0
247
248 virtual-root=https://git.benkard.de/
249
250 #cache-size=10000
251 #cache-root=/var/cache/cgit
252
253 # needs Pygments
254 #source-filter=/usr/lib/cgit/filters/syntax-highlighting.py
255
256 about-filter=/usr/lib/cgit/filters/about-formatting.sh
257
258 clone-url=https://git.benkard.de/$CGIT_REPO_URL
259
260 readme=:README.md
261 readme=:README.markdown
262 readme=:README.html
263 readme=:README.txt
264 readme=:README
265
266 project-list=/home/git/projects.list
267 scan-path=/home/git/repositories/
268
269 #
Matthias Andreas Benkard7d78f7f2021-12-28 17:44:20 +0100270
271---
272
273apiVersion: batch/v1
274kind: CronJob
275
276metadata:
277 name: git-github-replication
278 namespace: mulk
279 labels: &labels
280 k8s-app: git
281
282spec:
283 schedule: "*/120 * * * *"
Matthias Andreas Benkardcbdcd902022-12-27 15:31:15 +0100284 concurrencyPolicy: Forbid
Matthias Andreas Benkard7d78f7f2021-12-28 17:44:20 +0100285
286 jobTemplate:
287
288 spec:
289 ttlSecondsAfterFinished: 3600
290
291 template:
292 metadata:
293 name: git-github-replication
294 labels: *labels
295
296 spec:
297 restartPolicy: OnFailure
298
299 volumes:
300 - name: github-secrets
301 secret:
302 secretName: github-secrets
Matthias Andreas Benkard11298da2023-04-02 18:27:17 +0200303 defaultMode: 0444
Matthias Andreas Benkard7d78f7f2021-12-28 17:44:20 +0100304 - name: data
305 persistentVolumeClaim:
306 claimName: git-data
Matthias Andreas Benkard8c9b6132024-03-06 12:51:33 +0100307 - name: etc
308 emptyDir: {}
Matthias Andreas Benkard7d78f7f2021-12-28 17:44:20 +0100309
Matthias Andreas Benkard8c9b6132024-03-06 12:51:33 +0100310 initContainers:
311 - name: init
312 image: docker.io/library/buildpack-deps:scm
Matthias Andreas Benkard11298da2023-04-02 18:27:17 +0200313 securityContext:
314 runAsUser: 100
315 runAsGroup: 101
Matthias Andreas Benkard7d78f7f2021-12-28 17:44:20 +0100316 command:
317 - bash
318 - -c
319 - |
Matthias Andreas Benkard8c9b6132024-03-06 12:51:33 +0100320 echo git:x:106:107:Git:/home/git:/bin/sh >/etc/passwd
321 volumeMounts:
322 - name: etc
323 mountPath: /etc
324
325 containers:
326 - name: main
327 image: docker.io/library/buildpack-deps:scm
328 securityContext:
329 runAsUser: 106
330 runAsGroup: 107
331 command:
332 - bash
333 - -c
334 - |
Matthias Andreas Benkard7d78f7f2021-12-28 17:44:20 +0100335 for x in \
Matthias Andreas Benkard7f8981a2026-11-04 11:41:17 +0100336 kartipalist
337 do
338 if ! test -e "/git/repositories/kellertomaten/$x.git"; then
339 printf "SKIP %s / %s\n" kellertomaten "$x"
340 continue
341 fi
342
343 cd "/git/repositories/kellertomaten/$x.git"
344
345 for branch in master main
346 do
347 printf "COPY %s / %s / %s\n" kellertomaten "$x" "$branch"
348 git fetch "ssh://git@gitlab.benkard.de:32222/kellertomaten/${x}.git" "$branch:$branch" && \
349 ( git push "ssh://mulk@gerrit.benkard.de:29418/${x}.git" "$branch"; \
350 git push "git@github.com:kellertomaten/${x}.git" "$branch" )
351 done
352 done
353
354 for x in \
Matthias Andreas Benkard06e9d792024-03-06 12:49:24 +0100355 .github \
356 aendggner \
Matthias Andreas Benkard7d78f7f2021-12-28 17:44:20 +0100357 aquifer \
358 benki \
359 cellspp \
360 cl-json-template \
361 cl-mulkutils \
362 cl-protocols \
363 cljssss-g \
Matthias Andreas Benkard06e9d792024-03-06 12:49:24 +0100364 demos \
Matthias Andreas Benkard7f8981a2026-11-04 11:41:17 +0100365 dose \
Matthias Andreas Benkard7d78f7f2021-12-28 17:44:20 +0100366 fibers \
367 hellonet \
Matthias Andreas Benkard06e9d792024-03-06 12:49:24 +0100368 hello-world-ng \
Matthias Andreas Benkard7d78f7f2021-12-28 17:44:20 +0100369 instadump \
Matthias Andreas Benkard11298da2023-04-02 18:27:17 +0200370 jgvariant \
Matthias Andreas Benkard7d78f7f2021-12-28 17:44:20 +0100371 json-template-r6rs \
372 json-template-racket \
373 json-template-typed-racket \
Matthias Andreas Benkard06e9d792024-03-06 12:49:24 +0100374 kubeia \
Matthias Andreas Benkard7d78f7f2021-12-28 17:44:20 +0100375 logikorr \
Matthias Andreas Benkard7f8981a2026-11-04 11:41:17 +0100376 mulkbav \
Matthias Andreas Benkard7d78f7f2021-12-28 17:44:20 +0100377 mulkcms \
Matthias Andreas Benkard11298da2023-04-02 18:27:17 +0200378 mulkcms2 \
Matthias Andreas Benkard7d78f7f2021-12-28 17:44:20 +0100379 mulkjournal \
380 mulklib \
Matthias Andreas Benkard11298da2023-04-02 18:27:17 +0200381 mulkontainers \
Matthias Andreas Benkard7d78f7f2021-12-28 17:44:20 +0100382 mulkrypt-for-racket \
383 mulkyid \
384 objective-cl \
Matthias Andreas Benkard11298da2023-04-02 18:27:17 +0200385 quarkus-googlecloud-jsonlogging \
Matthias Andreas Benkard06e9d792024-03-06 12:49:24 +0100386 renovate-config \
387 rust-samples \
388 rust-tutorial \
389 sb-eval2 \
Matthias Andreas Benkard7d78f7f2021-12-28 17:44:20 +0100390 toilet
391 do
Matthias Andreas Benkard06e9d792024-03-06 12:49:24 +0100392 if ! test -e "/git/repositories/mulk/$x.git"; then
Matthias Andreas Benkard7f8981a2026-11-04 11:41:17 +0100393 printf "SKIP %s / %s\n" mulk "$x"
Matthias Andreas Benkard06e9d792024-03-06 12:49:24 +0100394 continue
395 fi
396
Matthias Andreas Benkard7d78f7f2021-12-28 17:44:20 +0100397 cd "/git/repositories/mulk/$x.git"
Matthias Andreas Benkarde96ddfb2024-03-06 12:50:00 +0100398
399 for branch in master main
400 do
Matthias Andreas Benkard7f8981a2026-11-04 11:41:17 +0100401 printf "COPY %s / %s / %s\n" mulk "$x" "$branch"
Matthias Andreas Benkarde96ddfb2024-03-06 12:50:00 +0100402 git fetch "https://gitlab.benkard.de/mulk/${x}.git" "$branch:$branch" && \
403 ( git push "ssh://mulk@gerrit.benkard.de:29418/${x}.git" "$branch"; \
404 git push "git@github.com:benkard/${x}.git" "$branch" )
405 done
Matthias Andreas Benkard7d78f7f2021-12-28 17:44:20 +0100406 done
Matthias Andreas Benkard7f8981a2026-11-04 11:41:17 +0100407
Matthias Andreas Benkard7d78f7f2021-12-28 17:44:20 +0100408 true
Matthias Andreas Benkard11298da2023-04-02 18:27:17 +0200409 env:
410 - name: HOME
Matthias Andreas Benkard8c9b6132024-03-06 12:51:33 +0100411 value: /home/git
Matthias Andreas Benkard7d78f7f2021-12-28 17:44:20 +0100412 resources:
413 limits:
414 memory: 100Mi
415 requests:
416 cpu: 20m
417 memory: 100Mi
418 volumeMounts:
419 - name: github-secrets
Matthias Andreas Benkard8c9b6132024-03-06 12:51:33 +0100420 mountPath: /home/git/.ssh
Matthias Andreas Benkard7d78f7f2021-12-28 17:44:20 +0100421 readOnly: true
422 - name: data
423 mountPath: /git
Matthias Andreas Benkard8c9b6132024-03-06 12:51:33 +0100424 - name: etc
425 subPath: passwd
426 mountPath: /etc/passwd