diff --git a/project.clj b/project.clj
index 04e6925..da164fb 100644
--- a/project.clj
+++ b/project.clj
@@ -20,8 +20,8 @@
:dependencies [[dda/data-test "0.1.1"]]}
:dev {:plugins [[lein-shell "0.5.0"]]}
:uberjar {:aot :all
- :main dda.c4k-website.uberjar
- :uberjar-name "c4k-website-standalone.jar"
+ :main dda.c4k-taiga.uberjar
+ :uberjar-name "c4k-taiga-standalone.jar"
:dependencies [[org.clojure/tools.cli "1.0.214"]
[ch.qos.logback/logback-classic "1.4.5"
:exclusions [com.sun.mail/javax.mail]]
@@ -36,11 +36,11 @@
"native-image"
"--report-unsupported-elements-at-runtime"
"--initialize-at-build-time"
- "-jar" "target/uberjar/c4k-website-standalone.jar"
+ "-jar" "target/uberjar/c4k-taiga-standalone.jar"
"-H:ResourceConfigurationFiles=graalvm-resource-config.json"
"-H:Log=registerResource"
"-H:Name=target/graalvm/${:name}"]
"inst" ["shell"
"sh"
"-c"
- "lein uberjar && sudo install -m=755 target/uberjar/c4k-website-standalone.jar /usr/local/bin/c4k-website-standalone.jar"]})
+ "lein uberjar && sudo install -m=755 target/uberjar/c4k-taiga-standalone.jar /usr/local/bin/c4k-taiga-standalone.jar"]})
diff --git a/public/index.html b/public/index.html
index 99ea0c9..865aea6 100644
--- a/public/index.html
+++ b/public/index.html
@@ -3,7 +3,7 @@
- c4k-website
+ c4k-taiga
diff --git a/shadow-cljs.edn b/shadow-cljs.edn
index b8ceb62..b47c277 100644
--- a/shadow-cljs.edn
+++ b/shadow-cljs.edn
@@ -7,7 +7,7 @@
:dependencies [[org.domaindrivenarchitecture/c4k-common-cljs "6.0.1"]
[hickory "0.7.1"]]
:builds {:frontend {:target :browser
- :modules {:main {:init-fn dda.c4k-website.browser/init}}
+ :modules {:main {:init-fn dda.c4k-taiga.browser/init}}
:release {}
:compiler-options {:optimizations :advanced}}
:test {:target :node-test
diff --git a/src/main/cljc/dda/c4k_taiga/core.cljc b/src/main/cljc/dda/c4k_taiga/core.cljc
index 775e64f..402b086 100644
--- a/src/main/cljc/dda/c4k_taiga/core.cljc
+++ b/src/main/cljc/dda/c4k_taiga/core.cljc
@@ -16,11 +16,11 @@
(s/def ::mon-auth ::mon/mon-auth)
; ToDo
-(def config? (s/keys :req-un
+(def config? (s/keys :req-un []
:opt-un [::mon-cfg]))
; ToDo
-(def auth? (s/keys :req-un
+(def auth? (s/keys :req-un []
:opt-un [::mon-auth]))
; ToDo:
diff --git a/src/main/cljc/dda/c4k_taiga/taiga.cljc b/src/main/cljc/dda/c4k_taiga/taiga.cljc
new file mode 100644
index 0000000..62cae82
--- /dev/null
+++ b/src/main/cljc/dda/c4k_taiga/taiga.cljc
@@ -0,0 +1,14 @@
+(ns dda.c4k-taiga.taiga
+ (:require
+ [clojure.spec.alpha :as s]
+ #?(:cljs [shadow.resource :as rc])
+ #?(:clj [orchestra.core :refer [defn-spec]]
+ :cljs [orchestra.core :refer-macros [defn-spec]])
+ #?(:clj [clojure.edn :as edn]
+ :cljs [cljs.reader :as edn])
+ [dda.c4k-common.yaml :as yaml]
+ [dda.c4k-common.common :as cm]
+ [dda.c4k-common.base64 :as b64]
+ [dda.c4k-common.predicate :as pred]
+ [dda.c4k-common.ingress :as ing]
+ [clojure.string :as str]))
\ No newline at end of file
diff --git a/src/main/cljc/dda/c4k_taiga/website.cljc b/src/main/cljc/dda/c4k_taiga/website.cljc
deleted file mode 100644
index 9126f81..0000000
--- a/src/main/cljc/dda/c4k_taiga/website.cljc
+++ /dev/null
@@ -1,181 +0,0 @@
-(ns dda.c4k-website.website
- (:require
- [clojure.spec.alpha :as s]
- #?(:cljs [shadow.resource :as rc])
- #?(:clj [orchestra.core :refer [defn-spec]]
- :cljs [orchestra.core :refer-macros [defn-spec]])
- #?(:clj [clojure.edn :as edn]
- :cljs [cljs.reader :as edn])
- [dda.c4k-common.yaml :as yaml]
- [dda.c4k-common.common :as cm]
- [dda.c4k-common.base64 :as b64]
- [dda.c4k-common.predicate :as pred]
- [dda.c4k-common.ingress :as ing]
- [clojure.string :as str]))
-
-; ToDo
-(s/def ::issuer pred/letsencrypt-issuer?)
-
-; ToDo
-(def config? (s/keys :req-un
- :opt-un ))
-
-; ToDo
-(def auth? (s/keys :req-un ))
-
-; ToDo
-(defn-spec replace-dots-by-minus string?
- [fqdn pred/fqdn-string?]
- (str/replace fqdn #"\." "-"))
-
-(defn-spec generate-app-name string?
- [unique-name pred/fqdn-string?]
- (str (replace-dots-by-minus unique-name) "-website"))
-
-(defn-spec generate-service-name string?
- [unique-name pred/fqdn-string?]
- (str (replace-dots-by-minus unique-name) "-service"))
-
-(defn-spec generate-cert-name string?
- [unique-name pred/fqdn-string?]
- (str (replace-dots-by-minus unique-name) "-cert"))
-
-(defn-spec generate-ingress-name string?
- [unique-name pred/fqdn-string?]
- (str (replace-dots-by-minus unique-name) "-ingress"))
-
-; https://your.gitea.host/api/v1/repos///archive/.zip
-(defn-spec generate-gitrepourl string?
- [host pred/fqdn-string?
- repo string?
- user string?
- branch string?]
- (str "https://" host "/api/v1/repos/" user "/" repo "/archive/" branch ".zip"))
-
-; https://your.gitea.host/api/v1/repos///git/commits/HEAD
-(defn-spec generate-gitcommiturl string?
- [host pred/fqdn-string?
- repo string?
- user string?]
- (str "https://" host "/api/v1/repos/" user "/" repo "/git/" "commits/" "HEAD"))
-
-(defn-spec replace-all-matching-substrings-beginning-with pred/map-or-seq?
- [col pred/map-or-seq?
- value-to-partly-match string?
- value-to-inplace string?]
- (clojure.walk/postwalk #(if (and (= (type value-to-partly-match) (type %))
- (re-matches (re-pattern (str value-to-partly-match ".*")) %))
- (str/replace % value-to-partly-match value-to-inplace) %)
- col))
-
-(defn-spec replace-common-data pred/map-or-seq?
- [resource-file string?
- config websiteconfig?]
- (let [{:keys [unique-name]} config]
- (->
- (yaml/load-as-edn resource-file)
- (assoc-in [:metadata :labels :app.kubernetes.part-of] (generate-app-name unique-name))
- (replace-all-matching-substrings-beginning-with "NAME" (replace-dots-by-minus unique-name)))))
-
-(defn-spec replace-build-data pred/map-or-seq?
- [resource-file string?
- config websiteconfig?]
- (let [{:keys [sha256sum-output build-cpu-request build-cpu-limit build-memory-request build-memory-limit]
- :or {build-cpu-request "500m" build-cpu-limit "1700m" build-memory-request "256Mi" build-memory-limit "512Mi"}} config]
- (->
- (replace-common-data resource-file config)
- (cm/replace-all-matching-values-by-new-value "CHECK_SUM" (get-hash-from-sha256sum-output sha256sum-output))
- (cm/replace-all-matching-values-by-new-value "SCRIPT_FILE" (get-file-name-from-sha256sum-output sha256sum-output))
- (cm/replace-all-matching-values-by-new-value "BUILD_CPU_REQUEST" build-cpu-request)
- (cm/replace-all-matching-values-by-new-value "BUILD_CPU_LIMIT" build-cpu-limit)
- (cm/replace-all-matching-values-by-new-value "BUILD_MEMORY_REQUEST" build-memory-request)
- (cm/replace-all-matching-values-by-new-value "BUILD_MEMORY_LIMIT" build-memory-limit))))
-
-#?(:cljs
- (defmethod yaml/load-resource :website [resource-name]
- (case resource-name
- "website/nginx-configmap.yaml" (rc/inline "website/nginx-configmap.yaml")
- "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-build-secret.yaml" (rc/inline "website/website-build-secret.yaml")
- "website/website-content-volume.yaml" (rc/inline "website/website-content-volume.yaml")
- "website/hashfile-volume.yaml" (rc/inline "website/hashfile-volume.yaml")
- (throw (js/Error. "Undefined Resource!")))))
-
-(defn-spec generate-nginx-deployment pred/map-or-seq?
- [config websiteconfig?]
- (replace-build-data "website/nginx-deployment.yaml" config))
-
-(defn-spec generate-nginx-configmap pred/map-or-seq?
- [config websiteconfig?]
- (let [{:keys [fqdns]} config]
- (->
- (replace-common-data "website/nginx-configmap.yaml" config)
- (#(assoc-in %
- [:data :website.conf]
- (str/replace
- (-> % :data :website.conf) #"FQDN" (str (str/join " " fqdns) ";")))))))
-
-(defn-spec generate-nginx-service pred/map-or-seq?
- [config websiteconfig?]
- (replace-common-data "website/nginx-service.yaml" config))
-
-(defn-spec generate-website-content-volume pred/map-or-seq?
- [config websiteconfig?]
- (let [{:keys [volume-size]
- :or {volume-size "3"}} config]
- (->
- (replace-common-data "website/website-content-volume.yaml" config)
- (cm/replace-all-matching-values-by-new-value "WEBSITESTORAGESIZE" (str volume-size "Gi")))))
-
-(defn-spec generate-hashfile-volume pred/map-or-seq?
- [config websiteconfig?]
- (replace-common-data "website/hashfile-volume.yaml" config))
-
-
-(defn-spec generate-website-ingress pred/map-or-seq?
- [config websiteconfig?]
- (let [{:keys [unique-name fqdns]} config]
- (ing/generate-ingress {:fqdns fqdns
- :app-name (generate-app-name unique-name)
- :ingress-name (generate-ingress-name unique-name)
- :service-name (generate-service-name unique-name)
- :service-port 80})))
-
-(defn-spec generate-website-certificate pred/map-or-seq?
- [config websiteconfig?]
- (let [{:keys [unique-name issuer fqdns]
- :or {issuer "staging"}} config]
- (ing/generate-certificate {:fqdns fqdns
- :app-name (generate-app-name unique-name)
- :cert-name (generate-cert-name unique-name)
- :issuer issuer})))
-
-(defn-spec generate-website-build-cron pred/map-or-seq?
- [config websiteconfig?]
- (replace-build-data "website/website-build-cron.yaml" config))
-
-(defn-spec generate-website-build-secret pred/map-or-seq?
- [config websiteconfig?
- auth websiteauth?]
- (let [{:keys [gitea-host
- gitea-repo
- branchname]} config
- {:keys [authtoken
- username]} auth]
- (->
- (replace-common-data "website/website-build-secret.yaml" config)
- (cm/replace-all-matching-values-by-new-value "TOKEN" (b64/encode authtoken))
- (cm/replace-all-matching-values-by-new-value "REPOURL" (b64/encode
- (generate-gitrepourl
- gitea-host
- gitea-repo
- username
- branchname)))
- (cm/replace-all-matching-values-by-new-value "COMMITURL" (b64/encode
- (generate-gitcommiturl
- gitea-host
- gitea-repo
- username))))))
-
diff --git a/src/test/cljc/dda/c4k_taiga/core_test.cljc b/src/test/cljc/dda/c4k_taiga/core_test.cljc
index eb9da4e..0fbd619 100644
--- a/src/test/cljc/dda/c4k_taiga/core_test.cljc
+++ b/src/test/cljc/dda/c4k_taiga/core_test.cljc
@@ -5,7 +5,7 @@
:cljs [cljs.test :refer-macros [deftest is are testing run-tests]])
[clojure.spec.alpha :as s]
[dda.c4k-common.yaml :as yaml]
- [dda.c4k-website.core :as cut]
+ [dda.c4k-taiga.core :as cut]
[clojure.spec.alpha :as s]))
#?(:cljs
@@ -18,104 +18,3 @@
(deftest validate-valid-resources
(is (s/valid? cut/config? (yaml/load-as-edn "website-test/valid-config.yaml")))
(is (s/valid? cut/auth? (yaml/load-as-edn "website-test/valid-auth.yaml"))))
-
-(def websites1
- {:websites
- [{:unique-name "example.io"
- :fqdns ["example.org", "www.example.com"]
- :gitea-host "finegitehost.net"
- :gitea-repo "repo"
- :branchname "main"}
- {:unique-name "test.io"
- :fqdns ["test.de" "test.org" "www.test.de" "www.test.org"]
- :gitea-host "gitlab.de"
- :gitea-repo "repo"
- :branchname "main"}]})
-
-(def websites2
- {:websites
- [{:unique-name "test.io"
- :fqdns ["test.de" "test.org" "www.test.de" "www.test.org"]
- :gitea-host "gitlab.de"
- :gitea-repo "repo"
- :branchname "main"}
- {:unique-name "example.io"
- :fqdns ["example.org", "www.example.com"]
- :gitea-host "finegitehost.net"
- :gitea-repo "repo"
- :branchname "main"}]})
-
-(def auth1
- {:auth
- [{:unique-name "example.io"
- :username "someuser"
- :authtoken "abedjgbasdodj"}
- {:unique-name "test.io"
- :username "someuser"
- :authtoken "abedjgbasdodj"}]})
-
-(def auth2
- {:auth
- [{:unique-name "test.io"
- :username "someuser"
- :authtoken "abedjgbasdodj"}
- {:unique-name "example.io"
- :username "someuser"
- :authtoken "abedjgbasdodj"}]})
-
-(def flattened-and-reduced-config
- {:unique-name "example.io",
- :fqdns ["example.org" "www.example.com"],
- :gitea-host "finegitehost.net",
- :gitea-repo "repo",
- :branchname "main"})
-
-(def flattened-and-reduced-auth
- {:unique-name "example.io",
- :username "someuser",
- :authtoken "abedjgbasdodj"})
-
-(deftest sorts-config
- (is (= {:issuer "staging",
- :websites
- [{:unique-name "example.io",
- :fqdns ["example.org" "www.example.com"],
- :gitea-host "finegitehost.net",
- :gitea-repo "repo",
- :branchname "main"},
- {:unique-name "test.io",
- :fqdns ["test.de" "test.org" "www.test.de" "www.test.org"],
- :gitea-host "gitlab.de",
- :gitea-repo "repo",
- :branchname "main",
- :sha256sum-output "123456789ab123cd345de script-file-name.sh"}],
- :mon-cfg {:grafana-cloud-url "url-for-your-prom-remote-write-endpoint", :cluster-name "jitsi", :cluster-stage "test"}}
- (cut/sort-config
- {:issuer "staging",
- :websites
- [{:unique-name "test.io",
- :fqdns ["test.de" "test.org" "www.test.de" "www.test.org"],
- :gitea-host "gitlab.de",
- :gitea-repo "repo",
- :branchname "main",
- :sha256sum-output "123456789ab123cd345de script-file-name.sh"}
- {:unique-name "example.io",
- :fqdns ["example.org" "www.example.com"],
- :gitea-host "finegitehost.net",
- :gitea-repo "repo",
- :branchname "main"}],
- :mon-cfg {:grafana-cloud-url "url-for-your-prom-remote-write-endpoint", :cluster-name "jitsi", :cluster-stage "test"}}))))
-
-(deftest test-flatten-and-reduce-config
- (is (=
- flattened-and-reduced-config
- (cut/flatten-and-reduce-config (cut/sort-config websites1))))
- (is (=
- flattened-and-reduced-config
- (cut/flatten-and-reduce-config (cut/sort-config websites2)))))
-
-(deftest test-flatten-and-reduce-auth
- (is (= flattened-and-reduced-auth
- (cut/flatten-and-reduce-auth (cut/sort-auth auth1))))
- (is (= flattened-and-reduced-auth
- (cut/flatten-and-reduce-auth (cut/sort-auth auth2)))))
diff --git a/src/test/cljc/dda/c4k_taiga/taiga_test.cljc b/src/test/cljc/dda/c4k_taiga/taiga_test.cljc
new file mode 100644
index 0000000..72cfb9e
--- /dev/null
+++ b/src/test/cljc/dda/c4k_taiga/taiga_test.cljc
@@ -0,0 +1,12 @@
+(ns dda.c4k-taiga.taiga-test
+ (:require
+ #?(:cljs [shadow.resource :as rc])
+ #?(:clj [clojure.test :refer [deftest is are testing run-tests]]
+ :cljs [cljs.test :refer-macros [deftest is are testing run-tests]])
+ [clojure.spec.alpha :as s]
+ [dda.c4k-common.yaml :as yaml]
+ [dda.c4k-taiga.core :as cut]
+ [clojure.spec.alpha :as s]))
+
+(deftest dummy-taiga-test
+ (is true))
\ No newline at end of file
diff --git a/src/test/cljc/dda/c4k_taiga/website_test.cljc b/src/test/cljc/dda/c4k_taiga/website_test.cljc
deleted file mode 100644
index f751d2b..0000000
--- a/src/test/cljc/dda/c4k_taiga/website_test.cljc
+++ /dev/null
@@ -1,223 +0,0 @@
-(ns dda.c4k-taiga.website-test
- (:require
- #?(:clj [clojure.test :refer [deftest is are testing run-tests]]
- :cljs [cljs.test :refer-macros [deftest is are testing run-tests]])
- [clojure.spec.test.alpha :as st]
- [dda.c4k-common.test-helper :as th]
- [dda.c4k-common.base64 :as b64]
- [dda.c4k-website.website :as cut]
- [clojure.spec.alpha :as s]))
-
-(st/instrument `cut/generate-nginx-configmap)
-(st/instrument `cut/generate-nginx-deployment)
-(st/instrument `cut/generate-nginx-service)
-(st/instrument `cut/generate-website-content-volume)
-(st/instrument `cut/generate-hashfile-volume)
-(st/instrument `cut/generate-website-ingress)
-(st/instrument `cut/generate-website-certificate)
-(st/instrument `cut/generate-website-build-cron)
-(st/instrument `cut/generate-website-build-secret)
-
-(deftest should-generate-nginx-configmap-website
- (is (= "server {\n listen 80 default_server;\n listen [::]:80 default_server;\n server_name test.de www.test.de test-it.de www.test-it.de;\n add_header Strict-Transport-Security 'max-age=31536000; includeSubDomains; preload'; \n add_header X-Frame-Options \"SAMEORIGIN\";\n add_header X-Content-Type-Options nosniff;\n add_header Referrer-Policy \"strict-origin\";\n # add_header Permissions-Policy \"permissions here\";\n root /var/www/html/website/;\n index index.html;\n location / {\n try_files $uri $uri/ /index.html =404;\n }\n}\n"
- (:website.conf (:data (cut/generate-nginx-configmap {:unique-name "test.io",
- :gitea-host "gitea.evilorg",
- :gitea-repo "none",
- :branchname "mablain",
- :fqdns ["test.de" "www.test.de" "test-it.de" "www.test-it.de"]})))))
- (is (= "types {\n text/html html htm shtml;\n text/css css;\n text/xml xml rss;\n image/gif gif;\n image/jpeg jpeg jpg;\n application/x-javascript js;\n text/plain txt;\n text/x-component htc;\n text/mathml mml;\n image/svg+xml svg svgz;\n image/png png;\n image/x-icon ico;\n image/x-jng jng;\n image/vnd.wap.wbmp wbmp;\n application/java-archive jar war ear;\n application/mac-binhex40 hqx;\n application/pdf pdf;\n application/x-cocoa cco;\n application/x-java-archive-diff jardiff;\n application/x-java-jnlp-file jnlp;\n application/x-makeself run;\n application/x-perl pl pm;\n application/x-pilot prc pdb;\n application/x-rar-compressed rar;\n application/x-redhat-package-manager rpm;\n application/x-sea sea;\n application/x-shockwave-flash swf;\n application/x-stuffit sit;\n application/x-tcl tcl tk;\n application/x-x509-ca-cert der pem crt;\n application/x-xpinstall xpi;\n application/zip zip;\n application/octet-stream deb;\n application/octet-stream bin exe dll;\n application/octet-stream dmg;\n application/octet-stream eot;\n application/octet-stream iso img;\n application/octet-stream msi msp msm;\n audio/mpeg mp3;\n audio/x-realaudio ra;\n video/mpeg mpeg mpg;\n video/quicktime mov;\n video/x-flv flv;\n video/x-msvideo avi;\n video/x-ms-wmv wmv;\n video/x-ms-asf asx asf;\n video/x-mng mng;\n}\n"
- (:mime.types (:data (cut/generate-nginx-configmap {:unique-name "test.io",
- :gitea-host "gitea.evilorg",
- :gitea-repo "none",
- :branchname "mablain",
- :fqdns ["test.de" "www.test.de" "test-it.de" "www.test-it.de"]})))))
- (is (= "user nginx;\nworker_processes 3;\nerror_log /var/log/nginx/error.log;\npid /var/log/nginx/nginx.pid;\nworker_rlimit_nofile 8192;\nevents {\n worker_connections 4096;\n}\nhttp {\n include /etc/nginx/mime.types;\n default_type application/octet-stream;\n log_format main '$remote_addr - $remote_user [$time_local] $status'\n '\"$request\" $body_bytes_sent \"$http_referer\"'\n '\"$http_user_agent\" \"$http_x_forwarded_for\"';\n access_log /var/log/nginx/access.log main;\n sendfile on;\n tcp_nopush on;\n keepalive_timeout 65;\n server_names_hash_bucket_size 128;\n include /etc/nginx/conf.d/website.conf;\n}\n"
- (:nginx.conf (:data (cut/generate-nginx-configmap {:unique-name "test.io",
- :gitea-host "gitea.evilorg",
- :gitea-repo "none",
- :branchname "mablain",
- :fqdns ["test.de" "www.test.de" "test-it.de" "www.test-it.de"]})))))
- (is (= {:apiVersion "v1",
- :kind "ConfigMap",
- :metadata {:name "test-io-configmap",
- :labels {:app.kubernetes.part-of "test-io-website"},
- :namespace "default"}}
- (dissoc (cut/generate-nginx-configmap {:unique-name "test.io",
- :gitea-host "gitea.evilorg",
- :gitea-repo "none",
- :branchname "mablain",
- :fqdns ["test.de" "www.test.de" "test-it.de" "www.test-it.de"]}) :data))))
-
-(deftest should-generate-nginx-deployment
- (is (= {:apiVersion "apps/v1",
- :kind "Deployment",
- :metadata {:name "test-io-deployment", :labels {:app.kubernetes.part-of "test-io-website"}},
- :spec
- {:replicas 1,
- :selector {:matchLabels {:app "test-io-nginx"}},
- :template
- {:metadata {:labels {:app "test-io-nginx"}},
- :spec
- {:containers
- [{:name "test-io-nginx",
- :image "nginx:latest",
- :imagePullPolicy "IfNotPresent",
- :ports [{:containerPort 80}],
- :volumeMounts
- [{:mountPath "/etc/nginx", :readOnly true, :name "nginx-config-volume"}
- {:mountPath "/var/log/nginx", :name "log"}
- {:mountPath "/var/www/html/website", :name "content-volume", :readOnly true}]}],
- :initContainers
- [{:image "domaindrivenarchitecture/c4k-website-build",
- :name "test-io-init-build-container",
- :imagePullPolicy "IfNotPresent",
- :resources {:requests {:cpu "500m", :memory "256Mi"}, :limits {:cpu "1700m", :memory "512Mi"}},
- :command ["/entrypoint.sh"],
- :envFrom [{:secretRef {:name "test-io-secret"}}],
- :env [{:name "SHA256SUM", :value "123456789ab123cd345de"} {:name "SCRIPTFILE", :value "script-file-name.sh"}],
- :volumeMounts [{:name "content-volume", :mountPath "/var/www/html/website"}
- {:name "hashfile-volume", :mountPath "/var/hashfile.d"}]}],
- :volumes
- [{:name "nginx-config-volume",
- :configMap
- {:name "test-io-configmap",
- :items
- [{:key "nginx.conf", :path "nginx.conf"}
- {:key "website.conf", :path "conf.d/website.conf"}
- {:key "mime.types", :path "mime.types"}]}}
- {:name "log", :emptyDir {}}
- {:name "content-volume", :persistentVolumeClaim {:claimName "test-io-content-volume"}}
- {:name "hashfile-volume", :persistentVolumeClaim {:claimName "test-io-hashfile-volume"}}]}}}}
- (cut/generate-nginx-deployment {:gitea-host "gitlab.de",
- :fqdns ["test.de" "test.org" "www.test.de" "www.test.org"],
- :gitea-repo "repo",
- :sha256sum-output "123456789ab123cd345de script-file-name.sh",
- :issuer "staging",
- :branchname "main",
- :unique-name "test.io"}))))
-
-(deftest should-generate-resource-requests
- (is (= {:requests {:cpu "500m", :memory "256Mi"}, :limits {:cpu "1700m", :memory "512Mi"}}
- (-> (cut/generate-nginx-deployment {:gitea-host "gitlab.de",
- :fqdns ["test.de" "test.org" "www.test.de" "www.test.org"],
- :gitea-repo "repo",
- :sha256sum-output "123456789ab123cd345de script-file-name.sh",
- :issuer "staging",
- :branchname "main",
- :unique-name "test.io"})
- :spec :template :spec :initContainers first :resources )))
- (is (= {:requests {:cpu "1500m", :memory "512Mi"}, :limits {:cpu "3000m", :memory "1024Mi"}}
- (-> (cut/generate-nginx-deployment {:gitea-host "gitlab.de",
- :fqdns ["test.de" "test.org" "www.test.de" "www.test.org"],
- :gitea-repo "repo",
- :sha256sum-output "123456789ab123cd345de script-file-name.sh",
- :issuer "staging",
- :branchname "main",
- :unique-name "test.io"
- :build-cpu-request "1500m"
- :build-cpu-limit "3000m"
- :build-memory-request "512Mi"
- :build-memory-limit "1024Mi"})
- :spec :template :spec :initContainers first :resources))))
-
-(deftest should-generate-nginx-service
- (is (= {:name-c1 "test-io-service",
- :name-c2 "test-org-service",
- :app-c1 "test-io-nginx",
- :app-c2 "test-org-nginx",
- :app.kubernetes.part-of-c1 "test-io-website",
- :app.kubernetes.part-of-c2 "test-org-website"}
- (th/map-diff (cut/generate-nginx-service {:unique-name "test.io",
- :gitea-host "gitea.evilorg",
- :gitea-repo "none",
- :branchname "mablain",
- :fqdns ["test.de" "www.test.de" "test-it.de" "www.test-it.de"]})
- (cut/generate-nginx-service {:unique-name "test.org",
- :gitea-host "gitea.evilorg",
- :gitea-repo "none",
- :branchname "mablain",
- :fqdns ["test.de" "www.test.de" "test-it.de" "www.test-it.de"]})))))
-
-(deftest should-generate-website-build-cron
- (is (= {:apiVersion "batch/v1",
- :kind "CronJob",
- :metadata {:name "test-io-build-cron", :labels {:app.kubernetes.part-of "test-io-website"}},
- :spec
- {:schedule "0/7 * * * *",
- :successfulJobsHistoryLimit 1,
- :failedJobsHistoryLimit 1,
- :jobTemplate
- {:spec
- {:template
- {:spec
- {:containers
- [{:image "domaindrivenarchitecture/c4k-website-build",
- :name "test-io-build-app",
- :imagePullPolicy "IfNotPresent",
- :resources {:requests {:cpu "500m", :memory "256Mi"}, :limits {:cpu "1700m", :memory "512Mi"}},
- :command ["/entrypoint.sh"],
- :envFrom [{:secretRef {:name "test-io-secret"}}],
- :env [{:name "SHA256SUM", :value "123456789ab123cd345de"} {:name "SCRIPTFILE", :value "script-file-name.sh"}],
- :volumeMounts [{:name "content-volume", :mountPath "/var/www/html/website"}
- {:name "hashfile-volume", :mountPath "/var/hashfile.d"}]}],
- :volumes [{:name "content-volume", :persistentVolumeClaim {:claimName "test-io-content-volume"}}
- {:name "hashfile-volume", :persistentVolumeClaim {:claimName "test-io-hashfile-volume"}}],
- :restartPolicy "OnFailure"}}}}}}
- (cut/generate-website-build-cron {:gitea-host "gitlab.de",
- :fqdns ["test.de" "test.org" "www.test.de" "www.test.org"],
- :gitea-repo "repo",
- :sha256sum-output "123456789ab123cd345de script-file-name.sh",
- :issuer "staging",
- :branchname "main",
- :unique-name "test.io"}))))
-
-(deftest should-generate-website-build-secret
- (is (= {:apiVersion "v1",
- :kind "Secret",
- :metadata {:name "test-io-secret", :labels {:app.kubernetes.part-of "test-io-website"}},
- :data
- {:AUTHTOKEN "YWJlZGpnYmFzZG9kag==",
- :GITREPOURL "aHR0cHM6Ly9naXRsYWIuZGUvYXBpL3YxL3JlcG9zL3NvbWV1c2VyL3JlcG8vYXJjaGl2ZS9tYWluLnppcA==",
- :GITCOMMITURL "aHR0cHM6Ly9naXRsYWIuZGUvYXBpL3YxL3JlcG9zL3NvbWV1c2VyL3JlcG8vZ2l0L2NvbW1pdHMvSEVBRA=="}}
- (cut/generate-website-build-secret {:fqdns ["test.de" "test.org" "www.test.de" "www.test.org"],
- :gitea-repo "repo",
- :sha256sum-output "123456789ab123cd345de script-file-name.sh",
- :issuer "staging",
- :branchname "main",
- :unique-name "test.io",
- :gitea-host "gitlab.de"}
- {:unique-name "test.io",
- :authtoken "abedjgbasdodj",
- :username "someuser"}))))
-
-(deftest should-generate-website-content-volume
- (is (= {:name-c1 "test-io-content-volume",
- :name-c2 "test-org-content-volume",
- :app-c1 "test-io-nginx",
- :app-c2 "test-org-nginx",
- :app.kubernetes.part-of-c1 "test-io-website",
- :app.kubernetes.part-of-c2 "test-org-website"}
- (th/map-diff (cut/generate-website-content-volume {:unique-name "test.io",
- :gitea-host "gitea.evilorg",
- :gitea-repo "none",
- :branchname "mablain",
- :fqdns ["test.de" "www.test.de" "test-it.de" "www.test-it.de"]})
- (cut/generate-website-content-volume {:unique-name "test.org",
- :gitea-host "gitea.evilorg",
- :gitea-repo "none",
- :branchname "mablain",
- :fqdns ["test.de" "www.test.de" "test-it.de" "www.test-it.de"]})))))
-
-(deftest should-generate-hashfile-volume
- (is (= {:apiVersion "v1",
- :kind "PersistentVolumeClaim",
- :metadata
- {:name "test-io-hashfile-volume",
- :namespace "default",
- :labels {:app "test-io-nginx", :app.kubernetes.part-of "test-io-website"}},
- :spec {:storageClassName "local-path", :accessModes ["ReadWriteOnce"], :resources {:requests {:storage "16Mi"}}}}
- (cut/generate-hashfile-volume {:unique-name "test.io",
- :gitea-host "gitea.evilorg",
- :gitea-repo "none",
- :branchname "mablain",
- :fqdns ["test.de" "www.test.de" "test-it.de" "www.test-it.de"]}))))