diff --git a/infrastructure/backup/build.py b/infrastructure/backup/build.py index 674f169..207ef81 100644 --- a/infrastructure/backup/build.py +++ b/infrastructure/backup/build.py @@ -6,7 +6,7 @@ from ddadevops import * name = "c4k-forgejo" MODULE = "backup" PROJECT_ROOT_PATH = "../.." -version = "3.0.6-SNAPSHOT" +version = "3.0.7-SNAPSHOT" @init diff --git a/infrastructure/backup/image/resources/restore.sh b/infrastructure/backup/image/resources/restore.sh index 1c16790..12895f3 100755 --- a/infrastructure/backup/image/resources/restore.sh +++ b/infrastructure/backup/image/resources/restore.sh @@ -12,13 +12,12 @@ function main() { file_env POSTGRES_USER # Restore latest snapshot into /var/backups/restore - rm -rf /var/backups/restore restore-directory '/var/backups/restore' rm -rf /var/backups/gitea/* rm -rf /var/backups/git/repositories/* - cp -r /var/backups/restore/gitea /var/backups/ - cp -r /var/backups/restore/git/repositories /var/backups/git/ + cp -r /var/backups/restore/gitea /var/backups/ #ToDo: mv instead of cp or rm -rf after + cp -r /var/backups/restore/git/repositories /var/backups/git/ #ToDo: mv instead of cp or rm -rf after # adjust file permissions for the git user chown -R 1000:1000 /var/backups diff --git a/infrastructure/federated/build.py b/infrastructure/federated/build.py index c793655..c120a5a 100644 --- a/infrastructure/federated/build.py +++ b/infrastructure/federated/build.py @@ -6,7 +6,7 @@ from ddadevops import * name = 'c4k-forgejo' MODULE = 'federated' PROJECT_ROOT_PATH = '../..' -version = "3.0.6-SNAPSHOT" +version = "3.0.7-SNAPSHOT" @init def initialize(project): diff --git a/package.json b/package.json index 43b52db..9b52e1c 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "c4k-forgejo", "description": "Generate c4k yaml for a forgejo deployment.", "author": "meissa GmbH", - "version": "3.0.6-SNAPSHOT", + "version": "3.0.7-SNAPSHOT", "homepage": "https://gitlab.com/domaindrivenarchitecture/c4k-forgejo#readme", "repository": "https://www.npmjs.com/package/c4k-forgejo", "license": "APACHE2", diff --git a/project.clj b/project.clj index 10c9072..10b353b 100644 --- a/project.clj +++ b/project.clj @@ -1,4 +1,4 @@ -(defproject org.domaindrivenarchitecture/c4k-forgejo "3.0.6-SNAPSHOT" +(defproject org.domaindrivenarchitecture/c4k-forgejo "3.0.7-SNAPSHOT" :description "forgejo c4k-installation package" :url "https://domaindrivenarchitecture.org" :license {:name "Apache License, Version 2.0" diff --git a/shadow-cljs.edn b/shadow-cljs.edn index 2a94637..bc51a31 100644 --- a/shadow-cljs.edn +++ b/shadow-cljs.edn @@ -4,7 +4,7 @@ "src/test/cljc" "src/test/cljs" "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"]] :builds {:frontend {:target :browser :modules {:main {:init-fn dda.c4k-forgejo.browser/init}} diff --git a/src/main/cljc/dda/c4k_forgejo/backup.cljc b/src/main/cljc/dda/c4k_forgejo/backup.cljc index eb55172..00426e4 100644 --- a/src/main/cljc/dda/c4k_forgejo/backup.cljc +++ b/src/main/cljc/dda/c4k_forgejo/backup.cljc @@ -1,10 +1,10 @@ (ns dda.c4k-forgejo.backup (:require [clojure.spec.alpha :as s] - #?(:cljs [shadow.resource :as rc]) [dda.c4k-common.yaml :as yaml] [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-secret-access-key cm/bash-env-string?) @@ -13,12 +13,7 @@ #?(:cljs (defmethod yaml/load-resource :backup [resource-name] - (case 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!"))))) + (get (inline-resources "backup") resource-name))) (defn generate-config [my-conf] (let [{:keys [restic-repository]} my-conf] diff --git a/src/main/cljc/dda/c4k_forgejo/forgejo.cljc b/src/main/cljc/dda/c4k_forgejo/forgejo.cljc index e19261f..23b370e 100644 --- a/src/main/cljc/dda/c4k_forgejo/forgejo.cljc +++ b/src/main/cljc/dda/c4k_forgejo/forgejo.cljc @@ -2,17 +2,15 @@ (:require [clojure.spec.alpha :as s] [clojure.string :as st] - #?(: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.ingress :as ing] [dda.c4k-common.base64 :as b64] [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? [input] @@ -68,14 +66,7 @@ #?(:cljs (defmethod yaml/load-resource :forgejo [resource-name] - (case 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!"))))) + (get (inline-resources "forgejo") resource-name))) (defn generate-appini-env [config] diff --git a/src/test/cljc/dda/c4k_forgejo/backup_test.cljc b/src/test/cljc/dda/c4k_forgejo/backup_test.cljc new file mode 100644 index 0000000..af9eb55 --- /dev/null +++ b/src/test/cljc/dda/c4k_forgejo/backup_test.cljc @@ -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"}))))) \ No newline at end of file diff --git a/src/test/cljc/dda/c4k_forgejo/forgejo_test.cljc b/src/test/cljc/dda/c4k_forgejo/forgejo_test.cljc index c074fa2..71805a3 100644 --- a/src/test/cljc/dda/c4k_forgejo/forgejo_test.cljc +++ b/src/test/cljc/dda/c4k_forgejo/forgejo_test.cljc @@ -51,62 +51,61 @@ :service-domain-whitelist "test.com,test.net" :service-noreply-address "noreply@test.com"}))))) -(deftest should-generate-non-federated-deployment - (is (= {:apiVersion "apps/v1", - :kind "Deployment", - :metadata {:name "forgejo", :namespace "default", :labels {:app "forgejo"}}, - :spec - {:replicas 1, - :selector {:matchLabels {:app "forgejo"}}, - :template - {:metadata {:name "forgejo", :labels {:app "forgejo"}}, +(deftest should-generate-deployment + (testing "non-federated" + (is (= {:apiVersion "apps/v1", + :kind "Deployment", + :metadata {:name "forgejo", :namespace "default", :labels {:app "forgejo"}}, :spec - {:containers - [{:name "forgejo", - :image "codeberg.org/forgejo/forgejo:1.19", - :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 "false" - :fqdn "test.de" - :mailer-from "" - :mailer-host "m.t.de" - :mailer-port "123" - :service-domain-whitelist "adb.de" - :service-noreply-address ""} - )))) - -(deftest should-generate-federated-deployment - (is (= {:apiVersion "apps/v1", - :kind "Deployment", - :metadata {:name "forgejo", :namespace "default", :labels {:app "forgejo"}}, - :spec - {:replicas 1, - :selector {:matchLabels {:app "forgejo"}}, - :template - {:metadata {:name "forgejo", :labels {:app "forgejo"}}, + {:replicas 1, + :selector {:matchLabels {:app "forgejo"}}, + :template + {:metadata {:name "forgejo", :labels {:app "forgejo"}}, + :spec + {:containers + [{:name "forgejo", + :image "codeberg.org/forgejo/forgejo:1.19", + :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 "false" + :fqdn "test.de" + :mailer-from "" + :mailer-host "m.t.de" + :mailer-port "123" + :service-domain-whitelist "adb.de" + :service-noreply-address ""})))) + (testing "federated-deployment" + (is (= {:apiVersion "apps/v1", + :kind "Deployment", + :metadata {:name "forgejo", :namespace "default", :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 ""})))) + {: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 ""}))))) (deftest should-generate-secret (is (= {:FORGEJO__database__USER-c1 "",