[sysadmin-bin] Adapt the gnome-post-receive-email script post-receive hook script to the GL_USERNAME environment va



commit 46c0f217503e76c4c5c83679612eb7b1bcd373e9
Author: Andrea Veri <averi redhat com>
Date:   Mon Nov 13 18:05:12 2017 +0100

    Adapt the gnome-post-receive-email script post-receive hook script to the GL_USERNAME environment variable

 git/gnome-post-receive       |    4 ++++
 git/gnome-post-receive-email |   32 +++++++++++++++++++++++++++++---
 2 files changed, 33 insertions(+), 3 deletions(-)
---
diff --git a/git/gnome-post-receive b/git/gnome-post-receive
index 8a420dd..30656ad 100755
--- a/git/gnome-post-receive
+++ b/git/gnome-post-receive
@@ -22,6 +22,10 @@ GIT_DIR=$(git rev-parse --git-dir 2>/dev/null)
 GIT_CONFIG="${GIT_DIR}/config"
 export GIT_CONFIG
 
+if [ $(hostname) == 'gitlab.gnome.org' ]; then
+    export $GL_USERNAME
+fi
+
 tee >($BINDIR/log-push 1>&2) \
     >($BINDIR/post-receive-update-description 1>&2) \
     >($BINDIR/post-receive-notify-updates 1>&2) \
diff --git a/git/gnome-post-receive-email b/git/gnome-post-receive-email
index 493106e..7735757 100755
--- a/git/gnome-post-receive-email
+++ b/git/gnome-post-receive-email
@@ -36,6 +36,14 @@ import sys
 import socket
 from email import Header
 
+
+if socket.gethostname() == 'gitlab.gnome.org':
+    import gitlab
+
+    execfile('/home/admin/secret/gitlab_ro')
+
+    gl = gitlab.Gitlab('https://gitlab.gnome.org', GITLAB_PRIVATE_RO_TOKEN, api_version=4)
+
 script_path = os.path.realpath(os.path.abspath(sys.argv[0]))
 script_dir = os.path.dirname(script_path)
 
@@ -113,15 +121,33 @@ class RefChange(object):
         raise NotImplementedError()
 
     def generate_header(self, out, subject, include_revs=True, oldrev=None, newrev=None, cc=None):
-        if socket.gethostname() in ('gitlab.gnome.org', 'gitlab-test.gnome.org'):
-            user = 'gitlab'
+        is_gitlab = False
+
+        if socket.gethostname() == 'gitlab.gnome.org':
+            is_gitlab = True
+
+            user = os.environ['GL_USERNAME']
+            user = gl.users.list(username='%s' % user)
+            user = user[0]
+
+            if len(user.attributes['identities']) > 0:
+                for index, _ in enumerate(user.attributes['identities']):
+                    provider = user.attributes['identities'][index]['provider']
+                    if provider not in ('google_oauth2', 'github'):
+                        username = 
user.attributes['identities'][index]['extern_uid'].split(',')[0].replace('uid=', '')
+
+                user = username
+                user_fullname = user.attributes['name']
         else:
             user = os.environ['USER']
 
         if user_fullname:
             from_address = "%s <%s src gnome org>" % (Header.Header(user_fullname.decode('utf-8')), user)
         else:
-            from_address = "%s src gnome org" % (user)
+            if is_gitlab:
+                from_address = '%s <%s>' % (user.attributes['name'], user.attributes['email'])
+            else:
+                from_address = "%s src gnome org" % (user)
 
         if cc is None:
             cc = self.cc


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]