From 321519e3387ab8e4647ae9b0b8b1173e5cc073b8 Mon Sep 17 00:00:00 2001
From: Marcin Fabrykowski <git@fabrykowski.pl>
Date: Sun, 12 Dec 2021 19:03:25 +0100
Subject: [PATCH] add mail support to gitlab - closes #107

Signed-off-by: Marcin Fabrykowski <git@fabrykowski.pl>
---
 .gitlab-ci.yml                                |  1 +
 chart/templates/gitlab.yml                    | 24 +++++++++
 chart/templates/openldap/ldap_mail_gitlab.yml | 54 +++++++++++++++++++
 3 files changed, 79 insertions(+)
 create mode 100644 chart/templates/openldap/ldap_mail_gitlab.yml

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 9e32f2a..8b75be3 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -17,3 +17,4 @@ deploy-to-dev:
     repo: git@gitlab.exphost.pl:exphost/tenant-exphost-services-home-lab.git
     yamlfile: exphost-services.yml
     waitapp: tenant-exphost-services-exphost-services
+    refreshapp: tenant-exphost-services
diff --git a/chart/templates/gitlab.yml b/chart/templates/gitlab.yml
index 3336be2..198ff4e 100644
--- a/chart/templates/gitlab.yml
+++ b/chart/templates/gitlab.yml
@@ -40,6 +40,30 @@ spec:
               providers:
                 - secret: gitlab-providers-dex
                   key: provider
+            incomingEmail:
+              enabled: true
+              address: gitlab@{{ .Values.domain }}
+              host: imap.{{ .Values.domain }}
+              port: 143
+              ssl: false
+              startTls: true
+              user: gitlab@{{ .Values.domain }}
+              password:
+                secret: password-password-mail-gitlab-from-tenant-exphost-services
+                key: password
+              
+          smtp:
+            enabled: true
+            address: smtp.{{ .Values.domain }}
+            port: 587
+            user_name: gitlab@{{ .Values.domain }}
+            password:
+              secret: password-password-mail-gitlab-from-tenant-exphost-services
+              key: password
+            starttls_auto: true
+            authentication: "login"
+          email:
+            from: gitlab@{{ .Values.domain }}
 
         gitlab:
           webservice:
diff --git a/chart/templates/openldap/ldap_mail_gitlab.yml b/chart/templates/openldap/ldap_mail_gitlab.yml
new file mode 100644
index 0000000..a60ebcf
--- /dev/null
+++ b/chart/templates/openldap/ldap_mail_gitlab.yml
@@ -0,0 +1,54 @@
+apiVersion: exphost.pl/v1
+kind: Password
+metadata:
+  name: password-mail-gitlab
+spec:
+  name: password-mail-gitlab
+  types:
+    - sha512
+---
+apiVersion: batch/v1
+kind: Job
+metadata:
+  name: create-ldap-mail-gitlab
+  annotations:
+    argocd.argoproj.io/sync-wave: "4"
+spec:
+  template:
+    spec:
+      restartPolicy: OnFailure
+      containers:
+      - name: ldap
+        image: bitnami/openldap:2.5
+        command:
+          - /bin/bash
+          - -c
+          - 'echo -e "
+dn: maildrop=gitlab@{{ .Values.domain }},ou=mails,{{ include "ldap.dc" . }}\n
+changetype: add\n
+maildrop: gitlab@{{ .Values.domain }}\n
+objectClass: person\n
+objectClass: postfixUser\n
+objectClass: top\n
+cn: gitlab\n
+sn: mail\n
+mailacceptinggeneralid: gitlab@{{ .Values.domain }}\n
+userPassword:: $(echo -n {crypt}$PASSWORD|base64 -w0)
+"|sed -e "s/^ //" >/tmp/ldif.ldif
+            ;
+            echo "qweqwe";
+            cat /tmp/ldif.ldif;
+            ldapmodify -a -x -H ldap://openldap -D cn=admin,{{ include "ldap.dc" . }} -w $ADMINPASSWORD -f /tmp/ldif.ldif;
+            echo $?
+            '
+        env:
+          - name: PASSWORD
+            valueFrom:
+              secretKeyRef:
+                name: password-password-mail-gitlab-from-tenant-exphost-services
+                key: sha512
+          - name: ADMINPASSWORD
+            valueFrom:
+              secretKeyRef:
+                name: password-password-ldap-admin-from-tenant-exphost-services
+                key: password
-- 
GitLab