From: SungHun Hwang Date: Wed, 9 Aug 2017 11:56:19 +0000 (+0900) Subject: [BuildMonitor] SR-SYNC: change the submit job and buildmonitor job X-Git-Tag: submit/trunk/20190927.012743~339 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=ecf5176156a61f5538c5daa444f26289b24afbdc;p=services%2Fjenkins-scripts.git [BuildMonitor] SR-SYNC: change the submit job and buildmonitor job change the submit and buildmonitor job to support the SR-SYNC function for MCD project Change-Id: Ic686e0862ef6eb660480c52e94fb2bfbd2e0671d Signed-off-by: SungHun Hwang --- diff --git a/job_buildmonitor.py b/job_buildmonitor.py index 62eaac8..3015fc2 100644 --- a/job_buildmonitor.py +++ b/job_buildmonitor.py @@ -1876,6 +1876,186 @@ def TRBS_end_create_image_for_sr_stage(bm_start_datetime, project): % (__file__) #================================================================================== +# Sync_SR + +def sync_sr_submit_for_sync_sr_map(bm_sync_git_tag, bm_member_git_tag_list): + print '[%s] enter sync_sr_submit_for_sync_sr_map\n' % (__file__) + + # get curr_sr_status_id + query = "SELECT id FROM sr_status WHERE sr = %s" + query_data = (bm_sync_git_tag,) + sync_sr_status_id = buildmonitor_db.get_value_from_query_data(query, query_data) + #print '[%s] sync_sr_status_id(%s)\n' % (__file__, sync_sr_status_id) + + query = "SELECT id FROM sr_status WHERE sr = %s" + query_data = (bm_member_git_tag_list,) + member_sr_status_id = buildmonitor_db.get_value_from_query_data(query, query_data) + #print '[%s] member_sr_status_id(%s)\n' % (__file__, member_sr_status_id) + + query = "INSERT INTO sync_sr_map (sync_sr_status_id, member_sr_status_id) VALUES(%s, %s)" + query_data = (sync_sr_status_id, member_sr_status_id) + buildmonitor_db.do_query(query, query_data) + +def sync_sr_submit_for_sr_status(bm_git_tag): + print '[%s] enter sync_sr_submit_for_sr_status\n' % (__file__) + + # get curr_sr_status_id + query = "SELECT id FROM sr_status WHERE sr = %s" + query_data = (bm_git_tag,) + curr_sr_status_id = buildmonitor_db.get_value_from_query_data(query, query_data) + #print '[%s] curr_sr_status_id(%s)\n' % (__file__, curr_sr_status_id) + + if curr_sr_status_id == INVALID_ID: + query = "INSERT INTO sr_status (sr, status, submit_time) VALUES(%s, %s, %s)" + query_data = (bm_git_tag, 'C', datetime.strptime(bm_git_tag[-15:], '%Y%m%d.%H%M%S')) + buildmonitor_db.do_query(query, query_data) + else: + print '[%s] Already existing sr_status_id(%s) skip INSERT sr_stage\n' \ + % (__file__, curr_sr_status_id) + +def sync_sr_submit_for_sr_commit(commit_date, commit_msg, submit_date, submit_msg, + submitter, git_tag, gerrit_project, + gerrit_newrev, gerrit_account_name): + print '[%s] enter sync_sr_submit_for_sr_commit\n' % (__file__) + + # get current_sr_status_id (should be here, after sr_submit_for_sr_status) + query = "SELECT id FROM sr_status WHERE sr = %s" + query_data = (git_tag,) + curr_sr_status_id = buildmonitor_db.get_value_from_query_data(query, query_data) + #print '[%s] curr_sr_status_id(%s)\n' % (__file__, curr_sr_status_id) + + print '[%s] gerrit_project(%s)\n' % (__file__, gerrit_project) + if gerrit_project[0] == '-': + print '[%s] mixed git(%s)\n' % (__file__, gerrit_project) + gerrit_project = gerrit_project[1:] + obs_pkg_name = os.path.basename(gerrit_project) + '(mixed)' + elif gerrit_project[0] == '+': + print '[%s] pure git(%s)\n' % (__file__, gerrit_project) + gerrit_project = gerrit_project[1:] + obs_pkg_name = os.path.basename(gerrit_project[1:]) + elif gerrit_project == "N/A": + print '[%s] Sync SR(%s)\n' % (__file__, gerrit_project) + obs_pkg_name = "N/A" + else: + print '[%s] no mixed marker "+" or "-", will be set as default(%s)\n' \ + % (__file__, gerrit_project) + obs_pkg_name = os.path.basename(gerrit_project) + + bm_submitter = submitter.replace('<', '').replace('>', '') + print '[%s] bm_submitter(%s) obs_pkg_name(%s)' \ + % (__file__, bm_submitter, obs_pkg_name) + + query = "INSERT INTO sr_commit (sr_status_id, git_repository," \ + "obs_package_name, git_commit_id, git_commit_date, " \ + "git_commit_message, git_committer, sr_submit_date, " \ + "sr_submit_message, sr_submitter) " \ + "VALUES(%s, %s, %s, %s, %s, %s, %s, %s, %s, %s)" + query_data = (curr_sr_status_id, gerrit_project, obs_pkg_name, + gerrit_newrev, commit_date, commit_msg, + gerrit_account_name, submit_date, submit_msg, + bm_submitter) + buildmonitor_db.do_query(query, query_data) + +def sync_package_build_for_sr_detail_sr_stage(git_tag, bm_start_datetime, + bm_end_datetime, bm_src_project_lst): + print '[%s] enter sync_package_build_for_sr_detail_sr_stage\n' % (__file__) + + # get current_sr_status_id (should be here after sync_sr_submit_for_sr_status) + query = "SELECT id FROM sr_status WHERE sr = %s" + query_data = (git_tag,) + curr_sr_status_id = buildmonitor_db.get_value_from_query_data(query, query_data) + #print '[%s] curr_sr_status_id(%s)\n' % (__file__, curr_sr_status_id) + + # Wait 60 seconds to find the info_project_id + #print '[%s] wait 60 sec\n' % (__file__) + #sleep(60) + + ### for sr_status_detail & sr_stage + # bm_src_project_lst is needed for multi profile + print '[%s] bm_src_project_lst(%s)\n' % (__file__, bm_src_project_lst) + for bm_src_project in bm_src_project_lst: + #print '[%s] bm_src_project(%s)\n' % (__file__, bm_src_project) + + # get info_project_id -> get pre_build_project_id + query = "SELECT id FROM info_project WHERE project_name = %s" + query_data = (bm_src_project,) + info_project_id = buildmonitor_db.get_value_from_query_data(query, query_data) + query = "SELECT id FROM build_project WHERE info_project_id = %s" + query_data = (info_project_id,) + pre_build_project_id = buildmonitor_db.get_value_from_query_data(query, query_data) + print '[%s] info_project_id(%s), pre_build_project_id(%s)\n' \ + % (__file__, info_project_id, pre_build_project_id) + + # defensive code for the duplicated build_project_id + if pre_build_project_id == INVALID_ID: + print '[%s] cannot find build_project_id!! Adding NOW!!\n' % (__file__) + query = "INSERT INTO build_project (info_project_id, status) VALUES(%s, %s)" + query_data = (info_project_id, 'C') + buildmonitor_db.do_query(query, query_data) + query = "SELECT id FROM build_project WHERE info_project_id = %s" + query_data = (info_project_id,) + pre_build_project_id = buildmonitor_db.get_value_from_query_data(query, query_data) + print '[%s][After] info_project_id(%s), pre_build_project_id(%s)\n' \ + % (__file__, info_project_id, pre_build_project_id) + + # get sr_status_detail_id for checking group submit + query = "SELECT id FROM sr_status_detail WHERE sr_status_id = %s " \ + "AND pre_build_project_id = %s" + query_data = (curr_sr_status_id, pre_build_project_id) + sr_status_detail_id = buildmonitor_db.get_value_from_query_data(query, query_data) + #print '[%s] sr_status_detail_id(%s)\n' % (__file__, sr_status_detail_id) + + if sr_status_detail_id == INVALID_ID: + # get pre_build_project_id + query = "SELECT id FROM build_project WHERE info_project_id = %s" + query_data = (info_project_id,) + pre_build_project_id = buildmonitor_db.get_value_from_query_data(query, query_data) + + ### for sr_status_detail + query = "INSERT INTO sr_status_detail (sr_status_id, pre_build_project_id) " \ + "VALUES(%s, %s)" + query_data = (curr_sr_status_id, pre_build_project_id) + buildmonitor_db.do_query(query, query_data) + + ### for sr_stage for multi profile + # [1] start stage + sr_submit_for_sr_stage(curr_sr_status_id, bm_start_datetime, + bm_end_datetime, pre_build_project_id) + # [1] end stage / [2] start stage + start_pre_build_for_sr_stage(git_tag, bm_start_datetime, + bm_end_datetime, pre_build_project_id) + else: + # clear the existing tables (sr_stage & build_snapshot) + print '[%s] Already existing sr_status_id(%s)!! clear the related tables\n' \ + % (__file__, sr_status_detail_id) + query = "DELETE FROM sr_stage WHERE sr_status_id = %s AND build_project_id = %s" + query_data = (curr_sr_status_id, pre_build_project_id) + buildmonitor_db.do_query(query, query_data) + + # get build_snapshot_id for deleting build_snapshot_package & build_image + query = "SELECT id FROM build_snapshot WHERE build_project_id = %s" + query_data = (pre_build_project_id,) + build_snapshot_id = buildmonitor_db.get_value_from_query_data(query, query_data) + + # delete build_snapshot & build_snapshot_package & build_image + query = "DELETE FROM build_snapshot WHERE build_project_id = %s" + query_data = (pre_build_project_id,) + buildmonitor_db.do_query(query, query_data) + query = "DELETE FROM build_snapshot_package WHERE build_snapshot_id = %s" + query_data = (build_snapshot_id,) + buildmonitor_db.do_query(query, query_data) + query = "DELETE FROM build_image WHERE build_snapshot_id = %s" + query_data = (build_snapshot_id,) + buildmonitor_db.do_query(query, query_data) + + ### for sr_stage for multi profile + # [1] start stage + sr_submit_for_sr_stage(curr_sr_status_id, bm_start_datetime, + bm_end_datetime, pre_build_project_id) + # [1] end stage / [2] start stage + start_pre_build_for_sr_stage(git_tag, bm_start_datetime, + bm_end_datetime, pre_build_project_id) +#================================================================================== def main(): """ Script entry point. @@ -1971,6 +2151,65 @@ def main(): bm_remote_jenkins_build_job(remote_data) #======================================================= + # Sync_SR_Submit + elif bm_stage == 'Sync_SR_Submit': + print '[%s][Sync_SR_Submit]\n' % (__file__) + + # get vars + commit_date = transform_date(content.get("commit_date")) + commit_msg = truncate_msg(content.get("commit_msg")) + submit_date = transform_date(content.get("submit_date")) + submit_msg = truncate_msg(content.get("submit_msg")) + submitter = content.get("submitter") + gerrit_project = content.get("gerrit_project") + gerrit_newrev = content.get("gerrit_newrev") + gerrit_account_name = content.get("gerrit_account_name") + bm_start_datetime = content.get("bm_start_datetime") + bm_end_datetime = content.get("bm_end_datetime") + bm_src_project_lst = content.get("bm_src_project_lst") + + bm_member_sr_info = content.get("bm_member_sr_info") + print 'bm_member_sr_info(%s)\n' % (bm_member_sr_info) + bm_sync_git_tag = content.get("bm_sync_git_tag") + print 'bm_sync_git_tag(%s)\n' % (bm_sync_git_tag) + + # func call + ### 1. bm_sync_git_tag (sr_status + sr_commit + sr_status_detail + sr_stage) + sync_sr_submit_for_sr_status(bm_sync_git_tag) + sync_sr_submit_for_sr_commit(commit_date, commit_msg, submit_date, submit_msg, + submitter, bm_sync_git_tag, gerrit_project, + gerrit_newrev, gerrit_account_name) + sync_package_build_for_sr_detail_sr_stage(bm_sync_git_tag, bm_start_datetime, + bm_end_datetime, + bm_src_project_lst) + + ### 2. bm_member_git_tag_list (sr_status + sr_commit) + for each_request in bm_member_sr_info['requests']: + print ' snapshot:%s' % each_request['snapshot'] + print ' submit_list:' + for each_sr_info in each_request['submit_list']: + each_git_tag = each_sr_info.keys()[0] + print ' %s' % each_git_tag + + # member_sr for [sr_status] table + sync_sr_submit_for_sr_status(each_git_tag) + + # member sr & sync_sr for [sync_sr_map] table + sync_sr_submit_for_sync_sr_map(bm_sync_git_tag, each_git_tag) + + for each_git_path in each_sr_info[each_sr_info.keys()[0]]: + print ' %s' % each_git_path # replace gerrit_project + # member sr for [sr_commit] + sync_sr_submit_for_sr_commit(commit_date, commit_msg, + submit_date, submit_msg, + submitter, each_git_tag, + each_git_path, gerrit_newrev, + gerrit_account_name) + + + #update_sr_submit_log_completed(git_tag) + + #======================================================= # [PRE] Build #======================================================= # [PRE] Snap diff --git a/job_submit_request_sync.py b/job_submit_request_sync.py index 4550e44..5a9dab0 100644 --- a/job_submit_request_sync.py +++ b/job_submit_request_sync.py @@ -222,25 +222,27 @@ def main(): 'obs_target_prj': project, \ 'url': git_url, \ 'reason': reason}) - #FIXME: remove fake entries - fake_date = str(bm_start_datetime).split('.')[0] + ' +0900' - fake_git_tag = project_to_create.split(':'+target['target']+':')[-1].replace(':','/') - #TODO: move BUILD-MONITOR after pre-release-request - trigger_next('BUILD-MONITOR_%s' % target['target'], \ - {'bm_stage' : 'Submit', - 'commit_date' : fake_date, - 'commit_msg' : '', - 'submit_date' : fake_date, - 'submit_msg' : 'SR sync from %s' % project, - 'submitter' : '', - 'git_tag' : fake_git_tag, - 'gerrit_project' : '', - 'gerrit_newrev' : '', - 'gerrit_account_name' : 'Tizen Build', - 'bm_start_datetime': str(bm_start_datetime), - 'bm_end_datetime': str(datetime.now()), - 'bm_src_project_lst': [project_to_create] - }) + + bm_end_datetime = datetime.now() + bm_sync_git_tag = project_to_create.split(':'+target['target']+':')[-1].replace(':','/') + + bm_stage = "Sync_SR_Submit" + bm_data = {"bm_stage" : bm_stage, + "commit_date" : str(bm_end_datetime), + "commit_msg" : "N/A", + "submit_date" : str(bm_end_datetime), + "submit_msg" : "N/A", + "submitter" : "", + "bm_member_sr_info" : ret_data, + "bm_sync_git_tag" : bm_sync_git_tag, + "gerrit_project" : "N/A", + "gerrit_newrev" : "N/A", + "gerrit_account_name" : "tizen.build", + "bm_start_datetime": str(bm_start_datetime), + "bm_end_datetime": str(bm_end_datetime), + "bm_src_project_lst": [project_to_create], + } + trigger_next("BUILD-MONITOR_%s" % bm_stage, bm_data) if __name__ == '__main__': sys.exit(main())