From de69a97b4a872828e5aa45771a6528b2b42001ae Mon Sep 17 00:00:00 2001 From: Yongqin Liu Date: Tue, 18 Feb 2020 21:08:00 +0800 Subject: lkft: add page to show result for the rc builds Signed-off-by: Yongqin Liu --- lkft/lkft_config.py | 59 +++++++++++++++++++++++++++++---------- lkft/templates/lkft-projects.html | 4 +-- lkft/urls.py | 1 + lkft/views.py | 51 +++++++++++++++++++++++---------- 4 files changed, 83 insertions(+), 32 deletions(-) diff --git a/lkft/lkft_config.py b/lkft/lkft_config.py index 2bffea2..7b4dd92 100644 --- a/lkft/lkft_config.py +++ b/lkft/lkft_config.py @@ -90,24 +90,53 @@ citrigger_lkft = { }, } -def find_citrigger(lkft_pname=""): - if not lkft_pname: - return None - for trigger_name, lkft_pnames in citrigger_lkft.items(): - if lkft_pname in lkft_pnames.keys(): - return trigger_name - return None +citrigger_lkft_rcs = { + # configs for hikey kernels + 'trigger-linux-stable-rc': { + '4.14-q-10gsi-hikey': 'lkft-hikey-4.14-rc', + '4.14-q-10gsi-hikey960': 'lkft-hikey-4.14-rc', + + '4.19-q-10gsi-hikey': 'lkft-hikey-4.19-rc', + '4.19-q-10gsi-hikey960': 'lkft-hikey-4.19-rc', + + '4.4-p-10gsi-hikey': 'lkft-hikey-4.4-rc-p', + '4.4-p-9LCR-hikey': 'lkft-hikey-4.4-rc-p', -def find_cibuild(lkft_pname=""): - if not lkft_pname: - return None - if lkft_pname == 'aosp-master-tracking': - return 'lkft-aosp-master-tracking' - for trigger_name, lkft_pnames in citrigger_lkft.items(): + '4.9-p-10gsi-hikey': 'lkft-hikey-4.9-rc', + '4.9-p-10gsi-hikey960': 'lkft-hikey-4.9-rc', + + '5.4-gki-aosp-master-db845c': 'lkft-db845c-5.4-rc', + }, +} + + +def get_ci_trigger_info(lkft_p_full_name=""): + group_project_names = lkft_p_full_name.split('/') + group_name = group_project_names[0] + lkft_pname = group_project_names[1] + citrigger_info = citrigger_lkft + if group_name == "android-lkft-rc": + citrigger_info = citrigger_lkft_rcs + return (group_name, lkft_pname, citrigger_info) + +def find_trigger_and_build(lkft_p_full_name=""): + if not lkft_p_full_name: + return (None, None) + + (group_name, lkft_pname, citrigger_info) = get_ci_trigger_info(lkft_p_full_name=lkft_p_full_name) + for trigger_name, lkft_pnames in citrigger_info.items(): if lkft_pname in lkft_pnames.keys(): - return lkft_pnames.get(lkft_pname) - return None + return (trigger_name, lkft_pnames.get(lkft_pname)) + return (None, None) + +def find_citrigger(lkft_p_full_name=""): + (trigger_name, build_name) = find_trigger_and_build(lkft_p_full_name) + return trigger_name + +def find_cibuild(lkft_p_full_name=""): + (trigger_name, build_name) = find_trigger_and_build(lkft_p_full_name) + return build_name def get_hardware_from_pname(pname=None, env=''): if not pname: diff --git a/lkft/templates/lkft-projects.html b/lkft/templates/lkft-projects.html index d66ea6c..bb3138a 100644 --- a/lkft/templates/lkft-projects.html +++ b/lkft/templates/lkft-projects.html @@ -1,8 +1,8 @@ {% extends '_layouts/base.html' %} -{% block title %} LKFT Projects {% endblock %} +{% block title %} {{title_head}} {% endblock %} -{% block headline %}

LKFT Projects

{% endblock %} +{% block headline %}

{{title_head}}

{% endblock %} {% block content %}
diff --git a/lkft/urls.py b/lkft/urls.py index 4a07fcf..9c1bebf 100644 --- a/lkft/urls.py +++ b/lkft/urls.py @@ -5,6 +5,7 @@ from . import views basic_pat = '[a-zA-Z0-9][a-zA-Z0-9_.-]+' urlpatterns = [ url(r'^$', views.list_projects, name='home'), + url(r'^rc-projects/.*$', views.list_rc_projects, name='list_rc_projects'), url(r'^projects/.*$', views.list_projects, name='list_projects'), url(r'^builds/.*$', views.list_builds, name='list_builds'), url(r'^jobs/.*$', views.list_jobs, name='list_jobs'), diff --git a/lkft/views.py b/lkft/views.py index 9454857..4d0a7d7 100644 --- a/lkft/views.py +++ b/lkft/views.py @@ -251,8 +251,8 @@ def extract(result_zip_path, failed_testcases_all={}, metadata={}): } -def get_last_trigger_build(lkft_pname=''): - ci_trigger_name = find_citrigger(lkft_pname=lkft_pname) +def get_last_trigger_build(lkft_p_full_name=''): + ci_trigger_name = find_citrigger(lkft_p_full_name=lkft_p_full_name) if not ci_trigger_name: return None return jenkins_api.get_last_build(cijob_name=ci_trigger_name) @@ -399,7 +399,7 @@ def get_project_info(project): project['last_build'] = last_build logger.info("%s: Start to get ci trigger build information for project", project.get('name')) - last_trigger_build = get_last_trigger_build(project.get('name')) + last_trigger_build = get_last_trigger_build(project.get('full_name')) if last_trigger_build: last_trigger_url = last_trigger_build.get('url') last_trigger_build = jenkins_api.get_build_details_with_full_url(build_url=last_trigger_url) @@ -408,7 +408,7 @@ def get_project_info(project): project['last_trigger_build'] = last_trigger_build logger.info("%s: Start to get ci build information for project", project.get('name')) - ci_build_project_name = find_cibuild(lkft_pname=project.get('name')) + ci_build_project_name = find_cibuild(lkft_p_full_name=project.get('full_name')) if ci_build_project_name: ci_build_project = jenkins_api.get_build_details_with_job_url(ci_build_project_name) @@ -464,19 +464,20 @@ def get_project_info(project): logger.info("%s: finished to get information for project", project.get('name')) -@login_required -def list_projects(request): +def get_projects_info(group_name=""): import threading threads = list() + prefix_group = "%s/" % group_name + projects = [] for project in qa_report_api.get_projects(): project_full_name = project.get('full_name') - if not project_full_name.startswith('android-lkft/') \ - or project.get('is_archived'): + if project.get('is_archived'): + continue + if not project_full_name.startswith(prefix_group): continue projects.append(project) - t = threading.Thread(target=get_project_info, args=(project,)) threads.append(t) t.start() @@ -484,25 +485,45 @@ def list_projects(request): for t in threads: t.join() + def get_project_name(item): + return item.get('name') + + sorted_projects = sorted(projects, key=get_project_name) + return sorted_projects + + +def list_group_projects(request, group_name="android-lkft", title_head="LKFT Projects"): + sorted_projects = get_projects_info(group_name=group_name) + bugs = get_lkft_bugs() open_bugs = [] for bug in bugs: if bug.status == 'VERIFIED' or bug.status== 'RESOLVED': continue - else: - open_bugs.append(bug) - - def get_project_name(item): - return item.get('name') + open_bugs.append(bug) - sorted_projects = sorted(projects, key=get_project_name) return render(request, 'lkft-projects.html', { "projects": sorted_projects, 'open_bugs': open_bugs, + 'group_name': group_name, + 'title_head': title_head, } ) +@login_required +def list_rc_projects(request): + group_name = "android-lkft-rc" + title_head = "LKFT RC Projects" + return list_group_projects(request, group_name=group_name, title_head=title_head) + + +@login_required +def list_projects(request): + group_name = "android-lkft" + title_head = "LKFT Projects" + return list_group_projects(request, group_name=group_name, title_head=title_head) + @login_required def list_builds(request): -- cgit v1.2.3