From: Junghyun Kim Date: Tue, 25 Apr 2017 10:03:38 +0000 (+0900) Subject: sync to snapdiff package. X-Git-Tag: submit/trunk/20190927.012743~463^2~1 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=refs%2Fchanges%2F39%2F126939%2F1;p=services%2Fjenkins-scripts.git sync to snapdiff package. Change-Id: Ie75daabc6d1c61ba3802040091adba7101df74b4 Signed-off-by: Junghyun Kim --- diff --git a/job_sync_snapdiff.py b/job_sync_snapdiff.py index ae7bad9..bea5627 100755 --- a/job_sync_snapdiff.py +++ b/job_sync_snapdiff.py @@ -46,14 +46,14 @@ def search_last_build(build_url, release_name, released=False): res = requests.get(build_url) if res.status_code != 200: print 'access build_url: %s , error: %s' % (build_url, res.status_code) - return + return "" soup = bs4.BeautifulSoup(res.text) pattern_re = '^%s_[0-9]{8}.[0-9]+/$' % release_name pattern = re.compile(pattern_re) builds = [i.text for i in soup.find_all(href=pattern)] if not builds: print "Not find the any snapshot in %s, skip" % build_url - return + return "" if released: last_build = builds[-1] @@ -98,7 +98,7 @@ def _get_name(url): name = url[:-1].split('/')[-1] return name or url -def generate_diff(old_url, new_url, repo, name, style='repo'): +def generate_diff(old_url, new_url, repo, name, snap_diff_name, style='repo'): """Generate repo or image diff. :param old_url: old repo url. @@ -107,13 +107,13 @@ def generate_diff(old_url, new_url, repo, name, style='repo'): :param name: diff prefix name. """ sync_out = os.path.join(os.getenv('WORKSPACE'), 'outdir') - reports = os.path.join(sync_out, 'builddata', 'reports', repo) + reports = os.path.join(sync_out, 'builddata', 'reports', snap_diff_name, repo) diff_name = '-'.join([name, _get_buildid(old_url), _get_buildid(new_url)]) snapdiff.diff_to_dist(old_url, new_url, reports, style=style, diff_name=diff_name) return '%s.html' % diff_name -def sync_world(template_name, repo_name, repo_path, kwargs): +def sync_world(template_name, repo_name, repo_path, snap_diff_name, kwargs): """Sync repo and image diff. :param template_name: template we will use generate sumary index. @@ -125,7 +125,7 @@ def sync_world(template_name, repo_name, repo_path, kwargs): template = env.get_template(template_name) content = template.render(kwargs) sync_out = os.path.join(os.getenv('WORKSPACE'), 'outdir') - reports = os.path.join(sync_out, 'builddata', 'reports', repo_name) + reports = os.path.join(sync_out, 'builddata', 'reports', snap_diff_name, repo_name) if not os.path.exists(reports): return with open(os.path.join(reports, 'index.html'), 'w') as index_file_p: @@ -156,14 +156,22 @@ def main(): context = {'id': content[0]['buildid']} context['repo'] = [] - # generate current and last repo diff - last_repo_base = get_last_build(url_pub_base, repo_path, release_name) + # if last build is selected, use it. + last_repo_base = "" + if "selected_snapshot" in content[0]: + selected_snapshot = content[0]["selected_snapshot"] + last_repo_base = os.path.join(url_pub_base, repo_path[:repo_path.rfind('/')], selected_snapshot) + else: + # generate current and last repo diff + last_repo_base = get_last_build(url_pub_base, repo_path, release_name) + snap_diff_name = "diff" if last_repo_base: last_repo_url = os.path.join(last_repo_base, 'repos', repo_name, 'packages') + snap_diff_name = '_'.join(['diff', _get_buildid(last_repo_url), _get_buildid(current_repo_url)]) last_current = generate_diff(last_repo_url, current_repo_url, - repo_name, 'last_current') + repo_name, 'last_current', snap_diff_name) last_id = _get_buildid(last_repo_url) context['repo'].append(('last_build', last_id, last_current)) @@ -174,23 +182,24 @@ def main(): daily_repo_base, weekly_repo_base = get_released_build(releases_url, repo_path, release_name) - if daily_repo_base: - daily_repo_url = os.path.join(daily_repo_base, - 'repos', repo_name, 'packages') - if requests.get(daily_repo_url).status_code == 200: - daily_current = generate_diff(daily_repo_url, current_repo_url, - repo_name, 'daily_current') - daily_id = _get_buildid(daily_repo_url) - context['repo'].append(('daily_build', daily_id, daily_current)) - - if weekly_repo_base: - weekly_repo_url = os.path.join(weekly_repo_base, - 'repos', repo_name, 'packages') - if requests.get(weekly_repo_url).status_code == 200: - weekly_current = generate_diff(weekly_repo_url, current_repo_url, - repo_name, 'weekly_current') - weekly_id = _get_buildid(weekly_repo_url) - context['repo'].append(('weekly_build', weekly_id, weekly_current)) + + daily_repo_url = os.path.join(daily_repo_base, + 'repos', repo_name, 'packages') + weekly_repo_url = os.path.join(weekly_repo_base, + 'repos', repo_name, 'packages') + if (daily_repo_base and + requests.get(daily_repo_url).status_code == 200): + daily_current = generate_diff(daily_repo_url, current_repo_url, + repo_name, 'daily_current', snap_diff_name) + daily_id = _get_buildid(daily_repo_url) + context['repo'].append(('daily_build', daily_id, daily_current)) + + if (weekly_repo_base and + requests.get(weekly_repo_url).status_code == 200): + weekly_current = generate_diff(weekly_repo_url, current_repo_url, + repo_name, 'weekly_current', snap_diff_name) + weekly_id = _get_buildid(weekly_repo_url) + context['repo'].append(('weekly_build', weekly_id, weekly_current)) # generate image diff context['images'] = {} @@ -215,6 +224,7 @@ def main(): requests.get(last_image_url).status_code == 200): name = generate_diff(last_image_url, current_image_url, repo_name, item['name']+'_last_current', + snap_diff_name, style='image') context['images'][item['name']].append(('last_build', last_id, name)) @@ -222,6 +232,7 @@ def main(): requests.get(daily_image_url).status_code == 200): name = generate_diff(daily_image_url, current_image_url, repo_name, item['name']+'_daily_current', + snap_diff_name, style='image') context['images'][item['name']].append(('daily_build', daily_id, name)) @@ -229,6 +240,7 @@ def main(): requests.get(weekly_image_url).status_code == 200): name = generate_diff(weekly_image_url, current_image_url, repo_name, item['name']+'_weekly_current', + snap_diff_name, style='image') context['images'][item['name']].append(('weekly_build', weekly_id, name)) @@ -238,7 +250,7 @@ def main(): context['images'].pop(item['name']) # sync all - return sync_world('index.html', repo_name, repo_path, context) + return sync_world('index.html', repo_name, repo_path, snap_diff_name, context) if __name__ == '__main__': sys.exit(main())