From: hyokeun Date: Thu, 24 Aug 2017 07:58:13 +0000 (+0900) Subject: TPE-193 Append snapshot information to SR Sync data X-Git-Tag: submit/trunk/20190927.012743~314^2 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=34a7e49370c02778fa72cbf457716c0c6999fbdf;p=services%2Fjenkins-scripts.git TPE-193 Append snapshot information to SR Sync data Change-Id: I25146bda8864e085f12edd110231884ebe1f1c2d --- diff --git a/common/workflow.py b/common/workflow.py index 01c3c99..9bcdd12 100644 --- a/common/workflow.py +++ b/common/workflow.py @@ -548,7 +548,11 @@ def create_project(build, obs_project, submit_list, mode=MODE_NORMAL): sleep(1) build.link_project(obs_project, src=ref_obs_target_prj, linktype="localdep") -def get_obs_package_name(git, branch, target_project, tag, gerrit_env=None): +def get_info_from_tag(git, branch, target_project, tag, gerrit_env=None): + + ret_data = {} + ret_data['commit_id'] = None + ret_data['spec_name'] = None if not gerrit_env: gerrit_env = GerritEnv() @@ -561,9 +565,15 @@ def get_obs_package_name(git, branch, target_project, tag, gerrit_env=None): gerrit_sshport=gerrit_env.sshport, \ git_cache_dir=git_cache): print >> sys.stderr, 'Error cloning %s' % git - return 1 + return ret_data + mygit = Git(prjdir) mygit.checkout(tag) + + #TODO: Find commit id + ret_data['commit_id'] = mygit.rev_parse('HEAD') + print 'commit_id: %s' % ret_data['commit_id'] + packagingdir = utils.parse_link('%s/%s' % (prjdir, 'packaging')) obs_target_prjs = git_obs_map(git, \ @@ -584,21 +594,21 @@ def get_obs_package_name(git, branch, target_project, tag, gerrit_env=None): if obs_use_specname == 'yes': resp = find_specfile(prjdir, packagingdir, tag, {'project': git}, None) if not resp['spec']: - return None + return ret_data resp = parse_specfile(resp['spec'], tag, git, None) if not resp['spec']: - return None + return ret_data print 'spec name = %s' %(resp['spec'].name) - return resp['spec'].name + ret_data['spec_name'] = resp['spec'].name else: if obs_pkg: print 'package name from mapping = %s' % (obs_pkg) - return obs_pkg + ret_data['spec_name'] = obs_pkg else: print 'package name from basename = %s' % (os.path.basename(git)) - return os.path.basename(git) + ret_data['spec_name'] = os.path.basename(git) - return None + return ret_data def get_manifest_filelists_snapshot(profile, request_url, timeout=5, group=None): """ get manifest filelists from snapshot""" diff --git a/job_submit_request_sync.py b/job_submit_request_sync.py index ddbe7d7..3908a5e 100644 --- a/job_submit_request_sync.py +++ b/job_submit_request_sync.py @@ -36,7 +36,7 @@ from gbp.errors import GbpError from common.git import Git, clone_gitproject from common.gerrit import GerritEnv -from common.workflow import get_manifest_filelists_snapshot, get_obs_package_name +from common.workflow import get_manifest_filelists_snapshot, get_info_from_tag # set default char-set endcoding to utf-8 reload(sys) @@ -70,7 +70,7 @@ def request_sr_list_for_snapshot(project, snapshot, reason): os.system('wget %s -O myfile' % path) with open('myfile', 'r') as sf: board_data = sf.read() - for line in board_data.replace('\\', '').split('\n'): + for line in board_data.replace('\\n', '').replace('\\', '').split('\n'): try: sr_list_from_snapshot = ast.literal_eval(line) except Exception, err: @@ -94,11 +94,18 @@ def touch_trigger_data(raw_data): 'requests': [] } sr_list = [] - #for snapshot in raw_data.get('snapshots'): if True: + checked_snapshots = [] + #TODO: Split requests into each snapshots for sr in raw_data.get('sr'): - sr_list.append({sr.get('sr'): [ x.get('repo') for x in sr.get('packages') ]}) - ret_data['requests'].append({'snapshot': 'SR-SYNC', 'submit_list': sr_list}) + checked_snapshots.append(sr.get('snapshot')) + for index, item in enumerate(sr.get('packages')): + sr_list.append({sr.get('sr'): [ {'repo': item.get('repo'), + 'cid': item.get('cid'), + 'snapshot': sr.get('snapshot'), + 'submitter': sr.get('submitters')[index].replace('\n', '')} + ]}) + ret_data['requests'].append({'snapshot': ','.join(list(set(checked_snapshots))), 'submit_list': sr_list}) return ret_data def main(): @@ -117,6 +124,7 @@ def main(): target_project = None reason = 'SR-SYNC' + snapshot = None if os.getenv('UPSTREAM_SNAPSHOT', None) and os.getenv('UPSTREAM_OBS_PROJECT', None): snapshot = os.getenv('UPSTREAM_SNAPSHOT') project = os.getenv('UPSTREAM_OBS_PROJECT') @@ -133,7 +141,6 @@ def main(): raise Exception('Fail to fetch snapshot info from dashboard') elif os.getenv('TRIGGER_INFO', None): manual_trigger = trigger_info(os.getenv('TRIGGER_INFO')) - snapshot = 'SR-SYNC' project = manual_trigger.get('source') target_project = manual_trigger.get('target') # Parse triggered data @@ -159,6 +166,8 @@ def main(): print 'requests:' for rq in official_data['requests']: print ' snapshot:%s' % rq['snapshot'] + if snapshot is None: + snapshot = rq['snapshot'] print ' submit_list:' for s in rq['submit_list']: print ' %s' % s.keys()[0] @@ -196,6 +205,7 @@ def main(): repo = item.get('repo') cid = item.get('cid') smtr = item.get('submitter') + sn = item.get('snapshot') bSetHighlight = True for item in mapping: # We only care about defined git repositories @@ -203,9 +213,9 @@ def main(): item.get('Project_name', '') == target_fork_prefix + repo: bSetHighlight = False if bSetHighlight: - marked_repo = {'repo': HIGHLIGHT + repo, 'cid': cid, 'submitter': smtr} + marked_repo = {'repo': HIGHLIGHT + repo, 'cid': cid, 'submitter': smtr, 'snapshot': sn} else: - marked_repo = {'repo': GREYEDOUT + repo, 'cid': cid, 'submitter': smtr} + marked_repo = {'repo': GREYEDOUT + repo, 'cid': cid, 'submitter': smtr, 'snapshot': sn} if marked_repo not in _sr_list[_sr_tag]: _sr_list[_sr_tag].append(marked_repo) if _sr_list[_sr_tag]: @@ -224,15 +234,20 @@ def main(): git = item.get('repo') cid = item.get('cid') smtr = item.get('submitter') + sn = item.get('snapshot') _package = '' - if git.startswith(HIGHLIGHT): - _package = get_obs_package_name(git[1:], source_branch, project, \ - submit, GerritEnv('PUBLIC_')) - requests_item[project_to_create].append({'package': _package, \ - 'git_tag': submit, \ - 'cid': cid, \ - 'submitter': smtr, \ - 'gerrit_project': git}) + if True:#git.startswith(HIGHLIGHT): + _tag_info = get_info_from_tag(git[1:], source_branch, project, \ + submit, GerritEnv('PUBLIC_')) + _package = _tag_info.get('spec_name', None) + _commit_id = _tag_info.get('commit_id', None) + if _package and _commit_id: + requests_item[project_to_create].append({'package': _package, \ + 'git_tag': submit, \ + 'cid': _commit_id, \ + 'submitter': smtr, \ + 'gerrit_project': git, \ + 'snapshot': sn}) if True: #os.getenv('label') == 'SR-SYNC': trigger_next('PRE_RELEASE_REQUEST_%s' % target['target'], \ @@ -240,7 +255,8 @@ def main(): 'obs_target_prj': project, \ 'url': git_url, \ 'obs_dest_prj': target['target'], \ - 'reason': reason}) + 'reason': reason, \ + 'snapshot': snapshot}) bm_end_datetime = datetime.now() bm_sync_git_tag = project_to_create.split(':'+target['target']+':')[-1].replace(':','/')