Compare commits
2 commits
73f98a768f
...
e6e63051ae
Author | SHA1 | Date | |
---|---|---|---|
e6e63051ae | |||
7a7e05a715 |
5 changed files with 90 additions and 75 deletions
|
@ -4,7 +4,7 @@
|
||||||
"src/test/cljc"
|
"src/test/cljc"
|
||||||
"src/test/cljs"
|
"src/test/cljs"
|
||||||
"src/test/resources"]
|
"src/test/resources"]
|
||||||
:dependencies [[org.domaindrivenarchitecture/c4k-common-cljs "6.0.1"]
|
:dependencies [[org.domaindrivenarchitecture/c4k-common-cljs "6.1.0"]
|
||||||
[hickory "0.7.1"]]
|
[hickory "0.7.1"]]
|
||||||
:builds {:frontend {:target :browser
|
:builds {:frontend {:target :browser
|
||||||
:modules {:main {:init-fn dda.c4k-forgejo.browser/init}}
|
:modules {:main {:init-fn dda.c4k-forgejo.browser/init}}
|
||||||
|
|
|
@ -1,10 +1,10 @@
|
||||||
(ns dda.c4k-forgejo.backup
|
(ns dda.c4k-forgejo.backup
|
||||||
(:require
|
(:require
|
||||||
[clojure.spec.alpha :as s]
|
[clojure.spec.alpha :as s]
|
||||||
#?(:cljs [shadow.resource :as rc])
|
|
||||||
[dda.c4k-common.yaml :as yaml]
|
[dda.c4k-common.yaml :as yaml]
|
||||||
[dda.c4k-common.base64 :as b64]
|
[dda.c4k-common.base64 :as b64]
|
||||||
[dda.c4k-common.common :as cm]))
|
[dda.c4k-common.common :as cm]
|
||||||
|
#?(:cljs [dda.c4k-common.macros :refer-macros [inline-resources]])))
|
||||||
|
|
||||||
(s/def ::aws-access-key-id cm/bash-env-string?)
|
(s/def ::aws-access-key-id cm/bash-env-string?)
|
||||||
(s/def ::aws-secret-access-key cm/bash-env-string?)
|
(s/def ::aws-secret-access-key cm/bash-env-string?)
|
||||||
|
@ -13,12 +13,7 @@
|
||||||
|
|
||||||
#?(:cljs
|
#?(:cljs
|
||||||
(defmethod yaml/load-resource :backup [resource-name]
|
(defmethod yaml/load-resource :backup [resource-name]
|
||||||
(case resource-name
|
(get (inline-resources "backup") resource-name)))
|
||||||
"backup/config.yaml" (rc/inline "backup/config.yaml")
|
|
||||||
"backup/cron.yaml" (rc/inline "backup/cron.yaml")
|
|
||||||
"backup/secret.yaml" (rc/inline "backup/secret.yaml")
|
|
||||||
"backup/backup-restore-deployment.yaml" (rc/inline "backup/backup-restore-deployment.yaml")
|
|
||||||
(throw (js/Error. "Undefined Resource!")))))
|
|
||||||
|
|
||||||
(defn generate-config [my-conf]
|
(defn generate-config [my-conf]
|
||||||
(let [{:keys [restic-repository]} my-conf]
|
(let [{:keys [restic-repository]} my-conf]
|
||||||
|
|
|
@ -2,17 +2,15 @@
|
||||||
(:require
|
(:require
|
||||||
[clojure.spec.alpha :as s]
|
[clojure.spec.alpha :as s]
|
||||||
[clojure.string :as st]
|
[clojure.string :as st]
|
||||||
#?(:cljs [shadow.resource :as rc])
|
|
||||||
#?(:clj [orchestra.core :refer [defn-spec]]
|
#?(:clj [orchestra.core :refer [defn-spec]]
|
||||||
:cljs [orchestra.core :refer-macros [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.yaml :as yaml]
|
||||||
[dda.c4k-common.common :as cm]
|
[dda.c4k-common.common :as cm]
|
||||||
[dda.c4k-common.ingress :as ing]
|
[dda.c4k-common.ingress :as ing]
|
||||||
[dda.c4k-common.base64 :as b64]
|
[dda.c4k-common.base64 :as b64]
|
||||||
[dda.c4k-common.predicate :as pred]
|
[dda.c4k-common.predicate :as pred]
|
||||||
[dda.c4k-common.postgres :as postgres]))
|
[dda.c4k-common.postgres :as postgres]
|
||||||
|
#?(:cljs [dda.c4k-common.macros :refer-macros [inline-resources]])))
|
||||||
|
|
||||||
(defn domain-list?
|
(defn domain-list?
|
||||||
[input]
|
[input]
|
||||||
|
@ -68,14 +66,7 @@
|
||||||
|
|
||||||
#?(:cljs
|
#?(:cljs
|
||||||
(defmethod yaml/load-resource :forgejo [resource-name]
|
(defmethod yaml/load-resource :forgejo [resource-name]
|
||||||
(case resource-name
|
(get (inline-resources "forgejo") resource-name)))
|
||||||
"forgejo/appini-env-configmap.yaml" (rc/inline "forgejo/appini-env-configmap.yaml")
|
|
||||||
"forgejo/deployment.yaml" (rc/inline "forgejo/deployment.yaml")
|
|
||||||
"forgejo/secrets.yaml" (rc/inline "forgejo/secrets.yaml")
|
|
||||||
"forgejo/service.yaml" (rc/inline "forgejo/service.yaml")
|
|
||||||
"forgejo/service-ssh.yaml" (rc/inline "forgejo/service-ssh.yaml")
|
|
||||||
"forgejo/datavolume.yaml" (rc/inline "forgejo/datavolume.yaml")
|
|
||||||
(throw (js/Error. "Undefined Resource!")))))
|
|
||||||
|
|
||||||
(defn generate-appini-env
|
(defn generate-appini-env
|
||||||
[config]
|
[config]
|
||||||
|
|
30
src/test/cljc/dda/c4k_forgejo/backup_test.cljc
Normal file
30
src/test/cljc/dda/c4k_forgejo/backup_test.cljc
Normal file
|
@ -0,0 +1,30 @@
|
||||||
|
(ns dda.c4k-forgejo.backup-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-forgejo.backup :as cut]))
|
||||||
|
|
||||||
|
(st/instrument `cut/generate-config)
|
||||||
|
|
||||||
|
(deftest should-generate-backup-config
|
||||||
|
(testing "federated"
|
||||||
|
(is (= {:apiVersion "v1",
|
||||||
|
:kind "ConfigMap",
|
||||||
|
:metadata
|
||||||
|
{:name "backup-config",
|
||||||
|
:labels
|
||||||
|
#:app.kubernetes.io{:name "backup", :part-of "forgejo"}},
|
||||||
|
:data {:restic-repository "s3:s3.amazonaws.com/backup/federated-repo"}}
|
||||||
|
(cut/generate-config
|
||||||
|
{:restic-repository "s3:s3.amazonaws.com/backup/federated-repo"}))))
|
||||||
|
(testing "non-federated"
|
||||||
|
(is (= {:apiVersion "v1",
|
||||||
|
:kind "ConfigMap",
|
||||||
|
:metadata
|
||||||
|
{:name "backup-config",
|
||||||
|
:labels
|
||||||
|
#:app.kubernetes.io{:name "backup", :part-of "forgejo"}},
|
||||||
|
:data {:restic-repository "s3:s3.amazonaws.com/backup/repo"}}
|
||||||
|
(cut/generate-config
|
||||||
|
{:restic-repository "s3:s3.amazonaws.com/backup/repo"})))))
|
|
@ -51,62 +51,61 @@
|
||||||
:service-domain-whitelist "test.com,test.net"
|
:service-domain-whitelist "test.com,test.net"
|
||||||
:service-noreply-address "noreply@test.com"})))))
|
:service-noreply-address "noreply@test.com"})))))
|
||||||
|
|
||||||
(deftest should-generate-non-federated-deployment
|
(deftest should-generate-deployment
|
||||||
(is (= {:apiVersion "apps/v1",
|
(testing "non-federated"
|
||||||
:kind "Deployment",
|
(is (= {:apiVersion "apps/v1",
|
||||||
:metadata {:name "forgejo", :namespace "default", :labels {:app "forgejo"}},
|
:kind "Deployment",
|
||||||
:spec
|
:metadata {:name "forgejo", :namespace "default", :labels {:app "forgejo"}},
|
||||||
{:replicas 1,
|
|
||||||
:selector {:matchLabels {:app "forgejo"}},
|
|
||||||
:template
|
|
||||||
{:metadata {:name "forgejo", :labels {:app "forgejo"}},
|
|
||||||
:spec
|
:spec
|
||||||
{:containers
|
{:replicas 1,
|
||||||
[{:name "forgejo",
|
:selector {:matchLabels {:app "forgejo"}},
|
||||||
:image "codeberg.org/forgejo/forgejo:1.19",
|
:template
|
||||||
:imagePullPolicy "IfNotPresent",
|
{:metadata {:name "forgejo", :labels {:app "forgejo"}},
|
||||||
:envFrom [{:configMapRef {:name "forgejo-env"}} {:secretRef {:name "forgejo-secrets"}}],
|
:spec
|
||||||
:volumeMounts [{:name "forgejo-data-volume", :mountPath "/data"}],
|
{:containers
|
||||||
:ports [{:containerPort 22, :name "git-ssh"} {:containerPort 3000, :name "forgejo"}]}],
|
[{:name "forgejo",
|
||||||
:volumes [{:name "forgejo-data-volume", :persistentVolumeClaim {:claimName "forgejo-data-pvc"}}]}}}}
|
:image "codeberg.org/forgejo/forgejo:1.19",
|
||||||
(cut/generate-deployment
|
:imagePullPolicy "IfNotPresent",
|
||||||
{:default-app-name ""
|
:envFrom [{:configMapRef {:name "forgejo-env"}} {:secretRef {:name "forgejo-secrets"}}],
|
||||||
:deploy-federated "false"
|
:volumeMounts [{:name "forgejo-data-volume", :mountPath "/data"}],
|
||||||
:fqdn "test.de"
|
:ports [{:containerPort 22, :name "git-ssh"} {:containerPort 3000, :name "forgejo"}]}],
|
||||||
:mailer-from ""
|
:volumes [{:name "forgejo-data-volume", :persistentVolumeClaim {:claimName "forgejo-data-pvc"}}]}}}}
|
||||||
:mailer-host "m.t.de"
|
(cut/generate-deployment
|
||||||
:mailer-port "123"
|
{:default-app-name ""
|
||||||
:service-domain-whitelist "adb.de"
|
:deploy-federated "false"
|
||||||
:service-noreply-address ""}
|
:fqdn "test.de"
|
||||||
))))
|
:mailer-from ""
|
||||||
|
:mailer-host "m.t.de"
|
||||||
(deftest should-generate-federated-deployment
|
:mailer-port "123"
|
||||||
(is (= {:apiVersion "apps/v1",
|
:service-domain-whitelist "adb.de"
|
||||||
:kind "Deployment",
|
:service-noreply-address ""}))))
|
||||||
:metadata {:name "forgejo", :namespace "default", :labels {:app "forgejo"}},
|
(testing "federated-deployment"
|
||||||
:spec
|
(is (= {:apiVersion "apps/v1",
|
||||||
{:replicas 1,
|
:kind "Deployment",
|
||||||
:selector {:matchLabels {:app "forgejo"}},
|
:metadata {:name "forgejo", :namespace "default", :labels {:app "forgejo"}},
|
||||||
:template
|
|
||||||
{:metadata {:name "forgejo", :labels {:app "forgejo"}},
|
|
||||||
:spec
|
:spec
|
||||||
{:containers
|
{:replicas 1,
|
||||||
[{:name "forgejo",
|
:selector {:matchLabels {:app "forgejo"}},
|
||||||
:image "domaindrivenarchitecture/c4k-forgejo-federated:latest",
|
:template
|
||||||
:imagePullPolicy "IfNotPresent",
|
{:metadata {:name "forgejo", :labels {:app "forgejo"}},
|
||||||
:envFrom [{:configMapRef {:name "forgejo-env"}} {:secretRef {:name "forgejo-secrets"}}],
|
:spec
|
||||||
:volumeMounts [{:name "forgejo-data-volume", :mountPath "/data"}],
|
{:containers
|
||||||
:ports [{:containerPort 22, :name "git-ssh"} {:containerPort 3000, :name "forgejo"}]}],
|
[{:name "forgejo",
|
||||||
:volumes [{:name "forgejo-data-volume", :persistentVolumeClaim {:claimName "forgejo-data-pvc"}}]}}}}
|
:image "domaindrivenarchitecture/c4k-forgejo-federated:latest",
|
||||||
(cut/generate-deployment
|
:imagePullPolicy "IfNotPresent",
|
||||||
{:default-app-name ""
|
:envFrom [{:configMapRef {:name "forgejo-env"}} {:secretRef {:name "forgejo-secrets"}}],
|
||||||
:deploy-federated "true"
|
:volumeMounts [{:name "forgejo-data-volume", :mountPath "/data"}],
|
||||||
:fqdn "test.de"
|
:ports [{:containerPort 22, :name "git-ssh"} {:containerPort 3000, :name "forgejo"}]}],
|
||||||
:mailer-from ""
|
:volumes [{:name "forgejo-data-volume", :persistentVolumeClaim {:claimName "forgejo-data-pvc"}}]}}}}
|
||||||
:mailer-host "m.t.de"
|
(cut/generate-deployment
|
||||||
:mailer-port "123"
|
{:default-app-name ""
|
||||||
:service-domain-whitelist "adb.de"
|
:deploy-federated "true"
|
||||||
:service-noreply-address ""}))))
|
:fqdn "test.de"
|
||||||
|
:mailer-from ""
|
||||||
|
:mailer-host "m.t.de"
|
||||||
|
:mailer-port "123"
|
||||||
|
:service-domain-whitelist "adb.de"
|
||||||
|
:service-noreply-address ""})))))
|
||||||
|
|
||||||
(deftest should-generate-secret
|
(deftest should-generate-secret
|
||||||
(is (= {:FORGEJO__database__USER-c1 "",
|
(is (= {:FORGEJO__database__USER-c1 "",
|
||||||
|
|
Loading…
Reference in a new issue