ABS: Split Dashboard update from Local and PUBLIC
authorhyokeun <hyokeun.jeon@samsung.com>
Thu, 31 May 2018 08:00:02 +0000 (17:00 +0900)
committerYonghee Han <onstudy@samsung.com>
Thu, 31 Jan 2019 01:21:23 +0000 (10:21 +0900)
Change-Id: I40942ed2e01cf36e2585c34a5ef4e1ac7abc9ce3

abs/job_abs_build.py
abs/job_update_status_remote_for_dashboard.py [new file with mode: 0644]
job_create_sdkrootstrap.py
job_sync_repo.py
packaging/jenkins-scripts.spec

index 7b11762..6417fd5 100755 (executable)
@@ -868,7 +868,8 @@ def update_dashboard(git_tag, data, props, \
                      tizen_studio_version=None, tizen_studio_distribution=None):
     try:
         event_type = "START_ABS"
-        data = {"type": 'CHECK' if data.get('buildcheck') is not None else 'GIT', \
+        data = {"event_type": "START_ABS", \
+                "type": 'CHECK' if data.get('buildcheck') is not None else 'GIT', \
                 "project": data.get('obs_project'), \
                 "git_path": data.get('project'), \
                 "commit_id": props.get('commit_id'), \
@@ -885,16 +886,12 @@ def update_dashboard(git_tag, data, props, \
                 "status_reason": status_reason, \
                 "tizen_studio_version": tizen_studio_version, \
                 "tizen_studio_distribution": tizen_studio_distribution, \
-                "rootstrap_version": rootstrap_version}
+                "rootstrap_version": rootstrap_version, \
+                "infra": data.get('gerrit_infra', 'LOCAL')}
         print 'update_dashboard'
         print data
         encoded_data = base64.b64encode(json.dumps(data))
-        remote_jenkins_build_job(os.getenv('PUBLIC_JENKINS_URL'), \
-                                 os.getenv('PUBLIC_JENKINS_USER'), \
-                                 os.getenv('PUBLIC_JENKINS_PW'), \
-                                 jobname='update_abs_rbs_for_dashboard', \
-                                 token='ABS_RBS_DASHBOARD', \
-                                 data='EVENT_TYPE=%s&START_ABS="%s"' % (event_type, quote_plus(encoded_data)))
+        trigger_next('UPDATE_ABS_STATUS', data)
     except Exception as err:
         print repr(err)
         print 'Updating Dashboard Failed'
diff --git a/abs/job_update_status_remote_for_dashboard.py b/abs/job_update_status_remote_for_dashboard.py
new file mode 100644 (file)
index 0000000..e684470
--- /dev/null
@@ -0,0 +1,96 @@
+#!/usr/bin/env python
+#
+# Copyright (c) 2014, 2015, 2016 Samsung Electronics.Co.Ltd.
+#
+# This program is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by the Free
+# Software Foundation; version 2 of the License
+#
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+# or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+# for more details.
+#
+"""This job is triggered by gerrit submit ref update event for preloaded app.
+   It will generate tizen app package(.tpk) and requests prerelease routine.
+"""
+
+import os
+import sys
+import shutil
+import re
+import glob
+import zipfile
+import ast
+import base64
+import json
+import subprocess
+from urllib import quote_plus
+
+from datetime import datetime
+from random import randint
+from time import sleep
+import xml.etree.cElementTree as ElementTree
+
+sys.path.insert(1, os.path.join(sys.path[0], '..'))
+
+from common.utils import parse_link
+from common.mapping import git_obs_map
+from common.git import Git, clone_gitproject
+from common.gerrit import Gerrit, is_ref_deleted, GerritEnv
+from common.buildservice import BuildService
+from common.prerelease import get_prerelease_project_name
+from common.buildtrigger import trigger_info, trigger_next, remote_jenkins_build_job
+from common.send_mail import prepare_mail
+from common.workflow import find_specfile, parse_specfile
+from common.tizen_studio import TizenStudio
+
+
+# set default char-set endcoding to utf-8
+reload(sys)
+sys.setdefaultencoding('utf-8') # pylint: disable-msg=E1101
+
+def main(argv):
+    """
+    Script entry point.
+    """
+
+    print '---[SCRIPT START at %s]---' % str(datetime.now())
+
+    args = os.getenv('TRIGGER_INFO', None)
+    trigger_data = trigger_info(args)
+
+    infra = trigger_data.get('infra', 'LOCAL')
+
+    try:
+        event_type = trigger_data["event_type"]
+        encoded_data = base64.b64encode(json.dumps(trigger_data))
+        #FIXME: [Errno 1] _ssl.c:523: error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed
+        #remote_jenkins_build_job(os.getenv('PUBLIC_JENKINS_URL'), \
+        #                         os.getenv('PUBLIC_JENKINS_USER'), \
+        #                         os.getenv('PUBLIC_JENKINS_PW'), \
+        #                         jobname='update_abs_rbs_for_dashboard', \
+        #                         token='ABS_RBS_DASHBOARD', \
+        #                         data='EVENT_TYPE=%s&%s="%s"' % (event_type, event_type, quote_plus(encoded_data)))
+        jenkins_url = os.getenv('JENKINS_URL').replace("//", "//" + os.getenv('JENKINS_USER') + ":" + os.getenv('JENKINS_PW') + '@')
+        if infra == "PUBLIC":
+            jenkins_url = os.getenv('PUBLIC_JENKINS_URL').replace("//", "//"
+                          + quote_plus(os.getenv('PUBLIC_JENKINS_USER'))
+                          + ":" + quote_plus(os.getenv('PUBLIC_JENKINS_PW')) + '@')
+        cmd = "curl --insecure -X POST \"%s/job/%s/buildWithParameters?token=%s&EVENT_TYPE=%s&%s=%s\"" \
+                % (jenkins_url,
+                   'update_abs_rbs_for_dashboard',
+                   'ABS_RBS_DASHBOARD',
+                   event_type,
+                   event_type, quote_plus(encoded_data))
+        subprocess.call(cmd, stdout=sys.stdout,
+                        stderr=sys.stderr, shell=True)
+   
+    except Exception as err:
+        print repr(err)
+        print 'Updating Dashboard Failed'
+
+if __name__ == '__main__':
+    sys.exit(main(sys.argv[1:]))
+
+
index 7b0ef9f..ef2a568 100755 (executable)
@@ -441,20 +441,16 @@ def make_rs_snapshot_public(git_prj, git_cache, mygit, fields, profile, vm_image
 
     return status
 
-def update_dashboard(project, version, status, reason):
+def update_dashboard(project, version, status, reason, infra="LOCAL"):
     try:
         event_type = "ROOTSTRAP_UPDATED"
-        data = {"project":project, \
+        data = {"event_type": event_type, \
+                "project":project, \
                 "rootstrap_version":version, \
                 "status":status, \
-                "reason":reason}
-        encoded_data = base64.b64encode(json.dumps(data))
-        remote_jenkins_build_job(os.getenv('PUBLIC_JENKINS_URL'), \
-                                 os.getenv('PUBLIC_JENKINS_USER'), \
-                                 os.getenv('PUBLIC_JENKINS_PW'), \
-                                 jobname='update_abs_rbs_for_dashboard', \
-                                 token='ABS_RBS_DASHBOARD', \
-                                 data='EVENT_TYPE=%s&ROOTSTRAP_UPDATED=%s' % (event_type, quote_plus(encoded_data)))
+                "reason":reason, \
+                "infra":infra}
+        trigger_next("UPDATE_RBS_STATUS", data)
     except Exception as err:
         print repr(err)
         print 'Updating dashboard failed'
@@ -522,7 +518,8 @@ def main():
     try:
         update_dashboard(fields['project'], \
                          fields['build_id'].split('_')[-1], 
-                         status, reason
+                         status, reason,
+                         fields.get('infra', 'LOCAL')
                          )
     except Exception as err:
         print repr(err)
@@ -548,4 +545,3 @@ def main():
 if __name__ == "__main__":
     sys.exit(main())
 
-
index f4a660b..4faae0d 100755 (executable)
@@ -258,6 +258,7 @@ def main():
 
     rootstrap_data = {"build_id": snapshot_version,
                       "project": project,
+                      "infra": "PUBLIC"
                       }
     trigger_next("create-sdkrootstrap", rootstrap_data)
 
index 4e2f2ae..a0cef5d 100644 (file)
@@ -322,6 +322,7 @@ fi
 %{destdir}/abs/job_abs_build.py
 %{destdir}/abs/job_abs_update.py
 %{destdir}/abs/job_update_abs_rbs_status_for_dashboard.py
+%{destdir}/abs/job_update_status_remote_for_dashboard.py
 %dir %{destdir}/common
 %{destdir}/common/tizen_studio.py
 %{destdir}/abs/report_template