clean up config & defaults
This commit is contained in:
parent
e34145231a
commit
d012df0d36
3 changed files with 20 additions and 98 deletions
src
|
@ -14,8 +14,8 @@
|
|||
|
||||
(def config-defaults {:namespace "forgejo"
|
||||
:issuer "staging"
|
||||
:deploy-federated "false"
|
||||
:federation-enabled "false"
|
||||
:forgejo-image "codeberg.org/forgejo/forgejo:8.0.3"
|
||||
:db-name "forgejo"
|
||||
:pv-storage-size-gb 5
|
||||
:pvc-storage-class-name :local-path
|
||||
|
@ -30,11 +30,10 @@
|
|||
::forgejo/mailer-port
|
||||
::forgejo/service-noreply-address]
|
||||
:opt-un [::forgejo/issuer
|
||||
::forgejo/deploy-federated
|
||||
::forgejo/federation-enabled
|
||||
::forgejo/default-app-name
|
||||
::forgejo/service-domain-whitelist
|
||||
::forgejo/forgejo-image-version-overwrite
|
||||
::forgejo/forgejo-image
|
||||
::backup/restic-repository
|
||||
::mon/mon-cfg]))
|
||||
|
||||
|
|
|
@ -32,14 +32,13 @@
|
|||
|
||||
(s/def ::default-app-name string?)
|
||||
(s/def ::fqdn pred/fqdn-string?)
|
||||
(s/def ::deploy-federated boolean-string?)
|
||||
(s/def ::federation-enabled boolean-string?)
|
||||
(s/def ::mailer-from pred/bash-env-string?)
|
||||
(s/def ::mailer-host pred/bash-env-string?)
|
||||
(s/def ::mailer-port pred/bash-env-string?)
|
||||
(s/def ::service-domain-whitelist domain-list?)
|
||||
(s/def ::service-noreply-address string?)
|
||||
(s/def ::forgejo-image-version-overwrite string?)
|
||||
(s/def ::forgejo-image string?)
|
||||
(s/def ::mailer-user pred/bash-env-string?)
|
||||
(s/def ::mailer-pw pred/bash-env-string?)
|
||||
(s/def ::issuer pred/letsencrypt-issuer?)
|
||||
|
@ -48,6 +47,7 @@
|
|||
(s/def ::max-concurrent-requests int?)
|
||||
|
||||
(s/def ::config (s/keys :req-un [::fqdn
|
||||
::forgejo-image
|
||||
::mailer-from
|
||||
::mailer-host
|
||||
::mailer-port
|
||||
|
@ -56,30 +56,14 @@
|
|||
::max-rate
|
||||
::max-concurrent-requests]
|
||||
:opt-un [::issuer
|
||||
::deploy-federated
|
||||
::federation-enabled
|
||||
::default-app-name
|
||||
::service-domain-whitelist
|
||||
::forgejo-image-version-overwrite]))
|
||||
]))
|
||||
|
||||
(s/def ::auth (s/keys :req-un [::postgres/postgres-db-user ::postgres/postgres-db-password ::mailer-user ::mailer-pw]))
|
||||
|
||||
(defn data-storage-by-volume-size
|
||||
[total]
|
||||
total)
|
||||
;;TODO: remove unneccessaries, fedaration is merged
|
||||
(def federated-image-name "domaindrivenarchitecture/c4k-forgejo-federated")
|
||||
(def federated-image-version "latest")
|
||||
(def non-federated-image-name "codeberg.org/forgejo/forgejo")
|
||||
(def non-federated-image-version "8.0.3")
|
||||
|
||||
(defn-spec generate-image-str string?
|
||||
[config ::config]
|
||||
(let [{:keys [deploy-federated forgejo-image-version-overwrite]} config
|
||||
deploy-federated-bool (boolean-from-string deploy-federated)]
|
||||
(if deploy-federated-bool
|
||||
(str federated-image-name ":" (or forgejo-image-version-overwrite federated-image-version))
|
||||
(str non-federated-image-name ":" (or forgejo-image-version-overwrite non-federated-image-version)))))
|
||||
(s/def ::auth (s/keys :req-un [::postgres/postgres-db-user
|
||||
::postgres/postgres-db-password
|
||||
::mailer-user ::mailer-pw]))
|
||||
|
||||
#?(:cljs
|
||||
(defmethod yaml/load-resource :forgejo [resource-name]
|
||||
|
@ -140,17 +124,17 @@
|
|||
|
||||
(defn-spec generate-data-volume pred/map-or-seq?
|
||||
[config ::config]
|
||||
(let [{:keys [volume-total-storage-size]} config
|
||||
data-storage-size (data-storage-by-volume-size volume-total-storage-size)]
|
||||
(let [{:keys [volume-total-storage-size]} config]
|
||||
(->
|
||||
(yaml/load-as-edn "forgejo/datavolume.yaml")
|
||||
(cm/replace-all-matching "DATASTORAGESIZE" (str (str data-storage-size) "Gi")))))
|
||||
(cm/replace-all-matching "DATASTORAGESIZE" (str (str volume-total-storage-size) "Gi")))))
|
||||
|
||||
(defn-spec generate-deployment pred/map-or-seq?
|
||||
[config ::config]
|
||||
(->
|
||||
(yaml/load-as-edn "forgejo/deployment.yaml")
|
||||
(cm/replace-all-matching "IMAGE_NAME" (generate-image-str config))))
|
||||
(let [{:keys [forgejo-image]} config]
|
||||
(->
|
||||
(yaml/load-as-edn "forgejo/deployment.yaml")
|
||||
(cm/replace-all-matching "IMAGE_NAME" forgejo-image))))
|
||||
|
||||
(defn generate-service
|
||||
[]
|
||||
|
|
|
@ -12,40 +12,6 @@
|
|||
(st/instrument `cut/generate-ingress)
|
||||
(st/instrument `cut/generate-secrets)
|
||||
|
||||
(deftest should-generate-image-str
|
||||
(testing "non-federated-image"
|
||||
(is (= "codeberg.org/forgejo/forgejo:8.0.3"
|
||||
(cut/generate-image-str {:fqdn "test.de"
|
||||
:mailer-from ""
|
||||
:mailer-host "m.t.de"
|
||||
:mailer-port "123"
|
||||
:service-noreply-address ""
|
||||
:deploy-federated "false"})))
|
||||
(is (= "codeberg.org/forgejo/forgejo:1.19.3-0"
|
||||
(cut/generate-image-str {:fqdn "test.de"
|
||||
:mailer-from ""
|
||||
:mailer-host "m.t.de"
|
||||
:mailer-port "123"
|
||||
:service-noreply-address ""
|
||||
:deploy-federated "false"
|
||||
:forgejo-image-version-overwrite "1.19.3-0"}))))
|
||||
(testing "federated-image"
|
||||
(is (= "domaindrivenarchitecture/c4k-forgejo-federated:latest"
|
||||
(cut/generate-image-str {:fqdn "test.de"
|
||||
:mailer-from ""
|
||||
:mailer-host "m.t.de"
|
||||
:mailer-port "123"
|
||||
:service-noreply-address ""
|
||||
:deploy-federated "true"})))
|
||||
(is (= "domaindrivenarchitecture/c4k-forgejo-federated:3.2.0"
|
||||
(cut/generate-image-str {:fqdn "test.de"
|
||||
:mailer-from ""
|
||||
:mailer-host "m.t.de"
|
||||
:mailer-port "123"
|
||||
:service-noreply-address ""
|
||||
:deploy-federated "true"
|
||||
:forgejo-image-version-overwrite "3.2.0"})))))
|
||||
|
||||
(deftest should-generate-appini-env
|
||||
(is (= {:APP_NAME-c1 "",
|
||||
:APP_NAME-c2 "test forgejo",
|
||||
|
@ -74,7 +40,8 @@
|
|||
:mailer-host "m.t.de"
|
||||
:mailer-port "123"
|
||||
:service-domain-whitelist "adb.de"
|
||||
:service-noreply-address ""})
|
||||
:service-noreply-address ""
|
||||
:forgejo-image "codeberg.org/forgejo/forgejo:8.0.3"})
|
||||
(cut/generate-appini-env {:default-app-name "test forgejo"
|
||||
:federation-enabled "true"
|
||||
:fqdn "test.com"
|
||||
|
@ -82,7 +49,8 @@
|
|||
:mailer-host "mail.test.com"
|
||||
:mailer-port "456"
|
||||
:service-domain-whitelist "test.com,test.net"
|
||||
:service-noreply-address "noreply@test.com"})))))
|
||||
:service-noreply-address "noreply@test.com"
|
||||
:forgejo-image "codeberg.org/forgejo/forgejo:8.0.3"})))))
|
||||
|
||||
(deftest should-generate-deployment
|
||||
(testing "non-federated"
|
||||
|
@ -114,37 +82,8 @@
|
|||
:service-noreply-address ""
|
||||
:volume-total-storage-size 10
|
||||
:max-rate 10
|
||||
:max-concurrent-requests 1}))))
|
||||
(testing "federated-deployment"
|
||||
(is (= {:apiVersion "apps/v1",
|
||||
:kind "Deployment",
|
||||
:metadata {:name "forgejo", :namespace "forgejo", :labels {:app "forgejo"}},
|
||||
:spec
|
||||
{:replicas 1,
|
||||
:selector {:matchLabels {:app "forgejo"}},
|
||||
:template
|
||||
{:metadata {:name "forgejo", :labels {:app "forgejo"}},
|
||||
:spec
|
||||
{:containers
|
||||
[{:name "forgejo",
|
||||
:image "domaindrivenarchitecture/c4k-forgejo-federated:latest",
|
||||
:imagePullPolicy "IfNotPresent",
|
||||
:envFrom [{:configMapRef {:name "forgejo-env"}} {:secretRef {:name "forgejo-secrets"}}],
|
||||
:volumeMounts [{:name "forgejo-data-volume", :mountPath "/data"}],
|
||||
:ports [{:containerPort 22, :name "git-ssh"} {:containerPort 3000, :name "forgejo"}]}],
|
||||
:volumes [{:name "forgejo-data-volume", :persistentVolumeClaim {:claimName "forgejo-data-pvc"}}]}}}}
|
||||
(cut/generate-deployment
|
||||
{:default-app-name ""
|
||||
:deploy-federated "true"
|
||||
:fqdn "test.de"
|
||||
:mailer-from ""
|
||||
:mailer-host "m.t.de"
|
||||
:mailer-port "123"
|
||||
:service-domain-whitelist "adb.de"
|
||||
:service-noreply-address ""
|
||||
:volume-total-storage-size 10
|
||||
:max-rate 10
|
||||
:max-concurrent-requests 1})))))
|
||||
:max-concurrent-requests 1
|
||||
:forgejo-image "codeberg.org/forgejo/forgejo:8.0.3"})))))
|
||||
|
||||
(deftest should-generate-secret
|
||||
(is (= {:FORGEJO__database__USER-c1 "",
|
||||
|
|
Loading…
Add table
Reference in a new issue