diff --git a/infrastructure/backup/build.py b/infrastructure/backup/build.py index 9851f14..4503c5f 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.4.2-dev" +version = "3.4.4-dev" @init diff --git a/infrastructure/federated/build.py b/infrastructure/federated/build.py index eb3c186..8001247 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.4.2-dev" +version = "3.4.4-dev" @init def initialize(project): diff --git a/package.json b/package.json index bfb5e0a..814ba93 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.4.2-SNAPSHOT", + "version": "3.4.4-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 128488f..a08839f 100644 --- a/project.clj +++ b/project.clj @@ -1,4 +1,4 @@ -(defproject org.domaindrivenarchitecture/c4k-forgejo "3.4.2-SNAPSHOT" +(defproject org.domaindrivenarchitecture/c4k-forgejo "3.4.4-SNAPSHOT" :description "forgejo c4k-installation package" :url "https://domaindrivenarchitecture.org" :license {:name "Apache License, Version 2.0" diff --git a/src/main/cljc/dda/c4k_forgejo/core.cljc b/src/main/cljc/dda/c4k_forgejo/core.cljc index da3e4b8..c3b2a2b 100644 --- a/src/main/cljc/dda/c4k_forgejo/core.cljc +++ b/src/main/cljc/dda/c4k_forgejo/core.cljc @@ -34,33 +34,38 @@ (def vol? (s/keys :req-un [::forgejo/volume-total-storage-size])) +(def postgres-config {:db-name "forgejo" + :pv-storage-size-gb 5 + :pvc-storage-class-name "" + :postgres-image "postgres:14" + :postgres-size :2gb}) + (defn k8s-objects [config auth] ; ToDo: ADR for generate functions - vector or no vector? - (let [storage-class (if (contains? config :postgres-data-volume-path) :manual :local-path)] + (let [storage-class (if (contains? config :postgres-data-volume-path) :manual :local-path) + resolved-config (merge {:namespace "forgejo"} postgres-config config)] (map yaml/to-string (filter #(not (nil? %)) (cm/concat-vec - (ns/generate (merge {:namespace "forgejo"} config)) - [(postgres/generate-config {:postgres-size :2gb :db-name "forgejo"}) - (postgres/generate-secret auth) - (when (contains? config :postgres-data-volume-path) - (postgres/generate-persistent-volume (select-keys config [:postgres-data-volume-path :pv-storage-size-gb]))) - (postgres/generate-pvc {:pv-storage-size-gb 5 - :pvc-storage-class-name storage-class}) - (postgres/generate-deployment {:postgres-image "postgres:14" - :postgres-size :2gb}) - (postgres/generate-service config) - (forgejo/generate-deployment config) + (ns/generate resolved-config) + [(postgres/generate-config resolved-config) + (postgres/generate-secret {:namespace "forgejo"} auth) + (when (contains? resolved-config :postgres-data-volume-path) + (postgres/generate-persistent-volume (select-keys resolved-config [:postgres-data-volume-path :pv-storage-size-gb]))) + (postgres/generate-pvc (merge resolved-config {:pvc-storage-class-name storage-class})) + (postgres/generate-deployment resolved-config) + (postgres/generate-service resolved-config) + (forgejo/generate-deployment resolved-config) (forgejo/generate-service) (forgejo/generate-service-ssh) - (forgejo/generate-data-volume config) - (forgejo/generate-appini-env config) + (forgejo/generate-data-volume resolved-config) + (forgejo/generate-appini-env resolved-config) (forgejo/generate-secrets auth) (forgejo/generate-rate-limit-middleware rate-limit-defaults)] ; this does not have a vector as output - (forgejo/generate-rate-limit-ingress-and-cert (merge {:namespace "forgejo"} config)) ; this function has a vector as output - (when (contains? config :restic-repository) - [(backup/generate-config config) + (forgejo/generate-rate-limit-ingress-and-cert resolved-config) ; this function has a vector as output + (when (contains? resolved-config :restic-repository) + [(backup/generate-config resolved-config) (backup/generate-secret auth) (backup/generate-cron) - (backup/generate-backup-restore-deployment config)]) - (when (:contains? config :mon-cfg) - (mon/generate (:mon-cfg config) (:mon-auth auth)))))))) + (backup/generate-backup-restore-deployment resolved-config)]) + (when (:contains? resolved-config :mon-cfg) + (mon/generate (:mon-cfg resolved-config) (:mon-auth auth)))))))) diff --git a/src/main/cljc/dda/c4k_forgejo/forgejo.cljc b/src/main/cljc/dda/c4k_forgejo/forgejo.cljc index 5e14937..06c61cd 100644 --- a/src/main/cljc/dda/c4k_forgejo/forgejo.cljc +++ b/src/main/cljc/dda/c4k_forgejo/forgejo.cljc @@ -102,15 +102,15 @@ federation-enabled-bool (boolean-from-string federation-enabled)] (-> (yaml/load-as-edn "forgejo/appini-env-configmap.yaml") - (cm/replace-all-matching-values-by-new-value "APPNAME" default-app-name) - (cm/replace-all-matching-values-by-new-value "FQDN" fqdn) - (cm/replace-all-matching-values-by-new-value "URL" (str "https://" fqdn)) - (cm/replace-all-matching-values-by-new-value "FROM" mailer-from) - (cm/replace-all-matching-values-by-new-value "MAILERHOST" mailer-host) - (cm/replace-all-matching-values-by-new-value "MAILERPORT" mailer-port) - (cm/replace-all-matching-values-by-new-value "WHITELISTDOMAINS" service-domain-whitelist) - (cm/replace-all-matching-values-by-new-value "NOREPLY" service-noreply-address) - (cm/replace-all-matching-values-by-new-value "IS_FEDERATED" + (cm/replace-all-matching "APPNAME" default-app-name) + (cm/replace-all-matching "FQDN" fqdn) + (cm/replace-all-matching "URL" (str "https://" fqdn)) + (cm/replace-all-matching "FROM" mailer-from) + (cm/replace-all-matching "MAILERHOST" mailer-host) + (cm/replace-all-matching "MAILERPORT" mailer-port) + (cm/replace-all-matching "WHITELISTDOMAINS" service-domain-whitelist) + (cm/replace-all-matching "NOREPLY" service-noreply-address) + (cm/replace-all-matching "IS_FEDERATED" (if federation-enabled-bool "true" "false"))))) @@ -123,10 +123,10 @@ mailer-pw]} auth] (-> (yaml/load-as-edn "forgejo/secrets.yaml") - (cm/replace-all-matching-values-by-new-value "DBUSER" (b64/encode postgres-db-user)) - (cm/replace-all-matching-values-by-new-value "DBPW" (b64/encode postgres-db-password)) - (cm/replace-all-matching-values-by-new-value "MAILERUSER" (b64/encode mailer-user)) - (cm/replace-all-matching-values-by-new-value "MAILERPW" (b64/encode mailer-pw))))) + (cm/replace-all-matching "DBUSER" (b64/encode postgres-db-user)) + (cm/replace-all-matching "DBPW" (b64/encode postgres-db-password)) + (cm/replace-all-matching "MAILERUSER" (b64/encode mailer-user)) + (cm/replace-all-matching "MAILERPW" (b64/encode mailer-pw))))) (defn generate-ingress-and-cert [config] @@ -164,13 +164,13 @@ data-storage-size (data-storage-by-volume-size volume-total-storage-size)] (-> (yaml/load-as-edn "forgejo/datavolume.yaml") - (cm/replace-all-matching-values-by-new-value "DATASTORAGESIZE" (str (str data-storage-size) "Gi"))))) + (cm/replace-all-matching "DATASTORAGESIZE" (str (str data-storage-size) "Gi"))))) (defn-spec generate-deployment pred/map-or-seq? [config config?] (-> (yaml/load-as-edn "forgejo/deployment.yaml") - (cm/replace-all-matching-values-by-new-value "IMAGE_NAME" (generate-image-str config)))) + (cm/replace-all-matching "IMAGE_NAME" (generate-image-str config)))) (defn generate-service []