diff --git a/src/main/cljc/dda/c4k_forgejo/core.cljc b/src/main/cljc/dda/c4k_forgejo/core.cljc index 4a87f8f..a9f17b1 100644 --- a/src/main/cljc/dda/c4k_forgejo/core.cljc +++ b/src/main/cljc/dda/c4k_forgejo/core.cljc @@ -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])) diff --git a/src/main/cljc/dda/c4k_forgejo/forgejo.cljc b/src/main/cljc/dda/c4k_forgejo/forgejo.cljc index 971ae9e..b06fb6a 100644 --- a/src/main/cljc/dda/c4k_forgejo/forgejo.cljc +++ b/src/main/cljc/dda/c4k_forgejo/forgejo.cljc @@ -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 [] diff --git a/src/test/cljc/dda/c4k_forgejo/forgejo_test.cljc b/src/test/cljc/dda/c4k_forgejo/forgejo_test.cljc index f7b388d..965c26e 100644 --- a/src/test/cljc/dda/c4k_forgejo/forgejo_test.cljc +++ b/src/test/cljc/dda/c4k_forgejo/forgejo_test.cljc @@ -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 "",