Add initial build job so websites get build early
This commit is contained in:
parent
c7a7581732
commit
287d6d31c5
5 changed files with 62 additions and 1 deletions
|
@ -1,5 +1,5 @@
|
|||
# convention 4 kubernetes: c4k-website
|
||||
[![Clojars Project](https://img.shields.io/clojars/v/org.domaindrivenarchitecture/c4k-gitea.svg)](https://clojars.org/org.domaindrivenarchitecture/c4k-website) [![pipeline status](https://gitlab.com/domaindrivenarchitecture/c4k-website/badges/master/pipeline.svg)](https://gitlab.com/domaindrivenarchitecture/c4k-website/-/commits/main)
|
||||
[![Clojars Project](https://img.shields.io/clojars/v/org.domaindrivenarchitecture/c4k-website.svg)](https://clojars.org/org.domaindrivenarchitecture/c4k-website) [![pipeline status](https://gitlab.com/domaindrivenarchitecture/c4k-website/badges/master/pipeline.svg)](https://gitlab.com/domaindrivenarchitecture/c4k-website/-/commits/main)
|
||||
|
||||
[<img src="https://domaindrivenarchitecture.org/img/delta-chat.svg" width=20 alt="DeltaChat"> chat over e-mail](mailto:buero@meissa-gmbh.de?subject=community-chat) | [<img src="https://meissa-gmbh.de/img/community/Mastodon_Logotype.svg" width=20 alt="team@social.meissa-gmbh.de"> team@social.meissa-gmbh.de](https://social.meissa-gmbh.de/@team) | [Website & Blog](https://domaindrivenarchitecture.org)
|
||||
|
||||
|
|
|
@ -49,6 +49,7 @@
|
|||
(website/generate-website-https-ingress (flatten-and-reduce-config config))
|
||||
(website/generate-website-certificate (flatten-and-reduce-config config))
|
||||
(website/generate-website-build-cron (flatten-and-reduce-config config))
|
||||
(website/generate-website-initial-build-job (flatten-and-reduce-config config))
|
||||
(website/generate-website-build-secret (flatten-and-reduce-config config)))))))
|
||||
|
||||
(defn k8s-objects [config]
|
||||
|
|
|
@ -91,6 +91,7 @@
|
|||
"website/nginx-deployment.yaml" (rc/inline "website/nginx-deployment.yaml")
|
||||
"website/nginx-service.yaml" (rc/inline "website/nginx-service.yaml")
|
||||
"website/website-build-cron.yaml" (rc/inline "website/website-build-cron.yaml")
|
||||
"website/website-initial-build-job.yaml" (rc/inline "website/website-initial-build-job.yaml")
|
||||
"website/website-build-deployment.yaml" (rc/inline "website/website-build-deployment.yaml")
|
||||
"website/website-build-secret.yaml" (rc/inline "website/website-build-secret.yaml")
|
||||
"website/website-content-volume.yaml" (rc/inline "website/website-content-volume.yaml")
|
||||
|
@ -170,6 +171,14 @@
|
|||
(assoc-in [:metadata :labels :app.kubernetes.part-of] (generate-app-name unique-name))
|
||||
(replace-all-matching-subvalues-in-string-start "NAME" (replace-dots-by-minus unique-name)))))
|
||||
|
||||
(defn-spec generate-website-initial-build-job pred/map-or-seq?
|
||||
[config flattened-and-reduced-config?]
|
||||
(let [{:keys [unique-name]} config]
|
||||
(->
|
||||
(yaml/load-as-edn "website/website-initial-build-job.yaml")
|
||||
(assoc-in [:metadata :labels :app.kubernetes.part-of] (generate-app-name unique-name))
|
||||
(replace-all-matching-subvalues-in-string-start "NAME" (replace-dots-by-minus unique-name)))))
|
||||
|
||||
(defn-spec generate-website-build-deployment pred/map-or-seq?
|
||||
[config flattened-and-reduced-config?]
|
||||
(let [{:keys [unique-name]} config]
|
||||
|
|
26
src/main/resources/website/website-initial-build-job.yaml
Normal file
26
src/main/resources/website/website-initial-build-job.yaml
Normal file
|
@ -0,0 +1,26 @@
|
|||
apiVersion: batch/v1
|
||||
kind: Job
|
||||
metadata:
|
||||
name: NAME-initial-build-job
|
||||
labels:
|
||||
app.kubernetes.part-of: NAME-website
|
||||
spec:
|
||||
template:
|
||||
spec:
|
||||
containers:
|
||||
- image: domaindrivenarchitecture/c4k-website-build
|
||||
name: NAME-build-app
|
||||
imagePullPolicy: IfNotPresent
|
||||
command: ["/entrypoint.sh"]
|
||||
envFrom:
|
||||
- secretRef:
|
||||
name: NAME-secret
|
||||
volumeMounts:
|
||||
- name: content-volume
|
||||
mountPath: /var/www/html/website
|
||||
volumes:
|
||||
- name: content-volume
|
||||
persistentVolumeClaim:
|
||||
claimName: NAME-content-volume
|
||||
restartPolicy: OnFailure
|
||||
|
|
@ -200,6 +200,31 @@
|
|||
:username "someuser"
|
||||
:authtoken "abedjgbasdodj"}))))
|
||||
|
||||
(deftest should-generate-website-initial-build-job
|
||||
(is (= {:apiVersion "batch/v1",
|
||||
:kind "Job",
|
||||
:metadata {:name "test-io-initial-build-job", :labels {:app.kubernetes.part-of "test-io-website"}},
|
||||
:spec
|
||||
{:template
|
||||
{:spec
|
||||
{:containers
|
||||
[{:image "domaindrivenarchitecture/c4k-website-build",
|
||||
:name "test-io-build-app",
|
||||
:imagePullPolicy "IfNotPresent",
|
||||
:command ["/entrypoint.sh"],
|
||||
:envFrom [{:secretRef {:name "test-io-secret"}}],
|
||||
:volumeMounts [{:name "content-volume", :mountPath "/var/www/html/website"}]}],
|
||||
:volumes [{:name "content-volume", :persistentVolumeClaim {:claimName "test-io-content-volume"}}],
|
||||
:restartPolicy "OnFailure"}}}}
|
||||
(cut/generate-website-initial-build-job {:unique-name "test.io",
|
||||
:fqdns ["test.de" "test.org" "www.test.de" "www.test.org"],
|
||||
:gitea-host "gitlab.de",
|
||||
:gitea-repo "repo",
|
||||
:branchname "main",
|
||||
:username "someuser",
|
||||
:authtoken "abedjgbasdodj",
|
||||
:issuer "staging"}))))
|
||||
|
||||
(deftest should-generate-website-build-secret
|
||||
(is (= {:name-c1 "test-io-secret",
|
||||
:name-c2 "test-org-secret",
|
||||
|
|
Loading…
Reference in a new issue