When gbs dashboard build failed with 'repo init' or 'repo sync', update PMB gbs build... 94/172094/3
authorSoonKyu Park <sk7.park@samsung.com>
Sat, 10 Mar 2018 04:22:52 +0000 (13:22 +0900)
committerpark <sk7.park@samsung.com>
Sat, 10 Mar 2018 04:52:47 +0000 (04:52 +0000)
Change-Id: I7fda97c7ca30d3f2536bccdca63dd4123b36949c

common/gbsutils.py
job_gbsdbbuild_one_repoarch_build.py

index 30ae964..84fdd78 100644 (file)
@@ -554,7 +554,10 @@ class GBSBuild:
         print 'repo init cmd: %s' %cmd
         ret = subprocess.call(cmd, stdout=sys.stdout,stderr=sys.stderr, shell=True)
         if ret != 0:
-            raise LocalError('repo int failed')
+            print 'repo int failed!!!!!'
+            repo_init_sync_status = 'F'
+            status_reason = 'repo init failed'
+            return (repo_init_sync_status, status_reason)
 
         self.__manifest_replace(repo)
 
@@ -563,10 +566,17 @@ class GBSBuild:
         cmd = 'repo sync'
         ret = subprocess.call(cmd, stdout=sys.stdout,stderr=sys.stderr, shell=True)
         if ret != 0:
-            raise LocalError('repo sync failed')
+            print 'repo sync failed!!!!!'
+            repo_init_sync_status = 'F'
+            status_reason = 'repo sync failed'
+            return (repo_init_sync_status, status_reason)
 
         self.__update_gbs_conf_for_one_profile_repo(repo)
 
+        repo_init_sync_status = 'S'
+        status_reason = 'Succeeded'
+        return (repo_init_sync_status, status_reason)
+
 
     def __find_binary_list_arg(self,repo):
         """ Find argument of --binary-list : which is same as to find spec file name in build_pkg_list"""
@@ -604,6 +614,11 @@ class GBSBuild:
 
         subprocess.call(cmd, stdout=sys.stdout,stderr=sys.stderr, shell=True)
 
+        (gbs_build_status,gbs_build_status_reason) = self._get_gbs_build_result_status(repo,arch)
+        print "GBS Fullbuild result: %s" %gbs_build_status_reason
+
+        return (gbs_build_status,gbs_build_status_reason)
+
 
     def do_gbs_build(self):
         print '----start do_gbs_build-----------------------------------'
@@ -620,10 +635,6 @@ class GBSBuild:
                 print 'OBS Project: %s, repository: %s, architecture: %s gbs build start'\
                        %(self.obs_prj,repo,arch)
                 self._do_repo_arch_gbs_fullbuild(repo,arch)
-                if self._get_gbs_build_result_status(repo,arch) == 'Succeeded':
-                    print 'GBS fullbuild succeeded for repo:%s , arch:%s' %(repo,arch)
-                else:
-                    raise LocalError('GBS fullbuild failed')
 
 
     def copy_build_results_to_dl_server(self,repository):
index f8a3dcf..98a571d 100644 (file)
@@ -109,6 +109,26 @@ def trigger_bm_for_gbs_build_package(gbsbuild_tag,bm_pkg_info,bm_repo,bm_arch):
         trigger_next("BUILD-MONITOR-2-%s-%s-%s-trg_%s" % (bm_stage, bm_repo, bm_arch, bm_trg_count), bm_data)
 
 
+def update_db_for_gbsbuild_target(repository,architecture,bm_start_datetime,\
+                                  gbs_build_status,gbsbuild_tag):
+    gbs_update_data = {"tag" : gbsbuild_tag,
+                       "mode" : "build_finished",
+                       "reason" : {"repo":repository,"arch":architecture,"status":gbs_build_status}}
+    gbs_update_dashboard(gbs_update_data,via='direct_call')
+
+    bm_end_datetime = datetime.datetime.now()
+    bm_stage = 'GBSDBBuild_Target'
+    bm_data = {"bm_stage": bm_stage,
+               "repository": repository,
+               "architecture": architecture,
+               "bm_start_datetime": str(bm_start_datetime),
+               "bm_end_datetime" : str(bm_end_datetime),
+               "gbs_build_status" : gbs_build_status,
+               "gbsbuild_tag" : gbsbuild_tag
+              }
+    trigger_next("BUILD-MONITOR-1-%s" % bm_stage, bm_data)
+
+
 def main():
     """script entry point"""
 
@@ -159,31 +179,23 @@ def main():
 
     print 'OBS Project: %s, repository: %s, architecture: %s gbs build start'\
         %(gbsbuild_dic['obs_prj'],repository,architecture)
-    gbsbuild_sub._do_repo_init_sync(repository)
-    gbsbuild_sub._do_repo_arch_gbs_fullbuild(repository,architecture)
-    (gbs_build_status,gbs_build_status_reason) = gbsbuild_sub._get_gbs_build_result_status(repository,architecture)
-    
+    (repo_init_sync_status,repo_init_sync_status_reason) = gbsbuild_sub._do_repo_init_sync(repository)
+    # if repo init or repo sync failed, do not perform gbs build, and just update dashboard
+    if repo_init_sync_status == 'F':
+        if buildmonitor_enabled:
+            update_db_for_gbsbuild_target(repository,architecture,bm_start_datetime,\
+                                          repo_init_sync_status,gbsbuild_dic['gbsbuild_tag'])
+        return 0 
+
+    (gbs_build_status,gbs_build_status_reason) = gbsbuild_sub._do_repo_arch_gbs_fullbuild(repository,architecture)
+
     live_out_dir=gbsbuild_sub.copy_build_results_to_dl_server(repository)
 
     os.chdir(original_dir)
 
     if buildmonitor_enabled:
-        gbs_update_data = {"tag" : gbsbuild_dic['gbsbuild_tag'],
-                           "mode" : "build_finished",
-                           "reason" : {"repo":repository,"arch":architecture,"status":gbs_build_status}}
-        gbs_update_dashboard(gbs_update_data,via='direct_call')
-
-        bm_end_datetime = datetime.datetime.now()
-        bm_stage = 'GBSDBBuild_Target'
-        bm_data = {"bm_stage": bm_stage,
-                   "repository": repository,
-                   "architecture": architecture,
-                   "bm_start_datetime": str(bm_start_datetime),
-                   "bm_end_datetime" : str(bm_end_datetime),
-                   "gbs_build_status" : gbs_build_status,
-                   "gbsbuild_tag" : gbsbuild_dic['gbsbuild_tag']
-                  }
-        trigger_next("BUILD-MONITOR-1-%s" % bm_stage, bm_data)
+        update_db_for_gbsbuild_target(repository,architecture,bm_start_datetime,\
+                                      gbs_build_status,gbsbuild_dic['gbsbuild_tag'])
 
         bm_pkg_info=gbsbuild_sub.get_rpm_info_from_gbs_build_log(live_out_dir,repository,architecture)
         print "bm_pkg_info: %s" %bm_pkg_info