devtools/issues: add mailing support
Resolves b/15
Change-Id: I53a4057ff428219ae1d4928db74eaa2e8bda6651
diff --git a/devtools/issues/prod.jsonnet b/devtools/issues/prod.jsonnet
index 2218716..0d0c273 100644
--- a/devtools/issues/prod.jsonnet
+++ b/devtools/issues/prod.jsonnet
@@ -4,7 +4,7 @@
# Bootstrap:
#
# ns=redmine
-# kubectl -n $ns create secret generic redmine --from-literal=secret_key=$(pwgen 24 1) --from-literal=oidc_secret=...
+# kubectl -n $ns create secret generic redmine --from-literal=secret_key=$(pwgen 24 1) --from-literal=postgres_password=$(pwgen 32 1) --from-literal=mailing_password=... --from-literal=oidc_secret=...
#
# ceph_ns=ceph-waw3; ceph_pool=waw-hdd-redundant-3
# kubectl -n $ceph_ns get secrets rook-ceph-object-user-${ceph_pool}-object-issues -o json | jq 'del(.metadata.namespace,.metadata.resourceVersion,.metadata.uid) | .metadata.creationTimestamp=null' | kubectl replace -f - -n $ns
@@ -35,6 +35,13 @@
clientID: "70ee2821-2657-4409-a298-98649d1f689f",
clientSecret: { secretKeyRef: { name: "redmine", key: "oidc_secret" } },
},
+
+ mailing+: {
+ address: "mail.hackerspace.pl",
+ user_name: "issues",
+ domain: "hackerspace.pl",
+ password: { secretKeyRef: { name: "redmine", key: "mailing_password" } },
+ },
},
},
}
diff --git a/devtools/issues/redmine.libsonnet b/devtools/issues/redmine.libsonnet
index 420e488..2c4d4e0 100644
--- a/devtools/issues/redmine.libsonnet
+++ b/devtools/issues/redmine.libsonnet
@@ -31,8 +31,23 @@
clientID: error "oidc.clientID must be set",
clientSecret: error "oidc.clientSecret must be set",
},
+
+ # Mailing configuration object passed to smtp_settings
+ mailing: {
+ address: error "mailing.address must be set",
+ port: 465,
+ ssl: true,
+ domain: error "mailing.domain must be set",
+ authentication: ":login",
+ user_name: error "mailing.user_name must be set",
+ password: error "mailing.password must be set",
+ },
},
+ # Generates YAML file while preserving specified ruby-style symbols.
+ # (ie. removes surrounding quotes)
+ rubyYaml(obj, symbols):: std.foldr(function (symbol, str) std.strReplace(str, '"%s"' % symbol, symbol), symbols, std.manifestYamlDoc(obj)),
+
ns: kube.Namespace(app.cfg.namespace),
postgres: postgres {
@@ -59,6 +74,11 @@
containers_: {
web: kube.Container("redmine") {
image: cfg.image,
+ args: ['sh', '-c', |||
+ set -e
+ echo "${X_EXTRA_CONFIGURATION}" > config/configuration.yml
+ exec /docker-entrypoint.sh rails server -b 0.0.0.0
+ |||],
ports_: {
http: { containerPort: 3000 },
},
@@ -81,6 +101,18 @@
REDMINE_S3_ACCESS_KEY_ID: cfg.storage.accessKey,
REDMINE_S3_SECRET_ACCESS_KEY: cfg.storage.secretKey,
REDMINE_S3_REGION: cfg.storage.region,
+
+ REDMINE_MAILING_PASSWORD: cfg.mailing.password,
+ X_EXTRA_CONFIGURATION: app.rubyYaml({
+ production: {
+ email_delivery: {
+ delivery_method: ":smtp",
+ smtp_settings: cfg.mailing {
+ password: "$(REDMINE_MAILING_PASSWORD)",
+ },
+ }
+ },
+ }, [":smtp", ":login"]),
},
},
},