summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYongqin Liu <yongqin.liu@linaro.org>2020-02-18 21:08:00 +0800
committerYongqin Liu <yongqin.liu@linaro.org>2020-02-18 21:08:00 +0800
commitde69a97b4a872828e5aa45771a6528b2b42001ae (patch)
treec811522effc4343d881b14f9fb9cbf0f8d21ae2d
parentdc7153969c4e4b2f77a243cf6211cf3fe5fba1dd (diff)
lkft: add page to show result for the rc builds
Signed-off-by: Yongqin Liu <yongqin.liu@linaro.org>
-rw-r--r--lkft/lkft_config.py59
-rw-r--r--lkft/templates/lkft-projects.html4
-rw-r--r--lkft/urls.py1
-rw-r--r--lkft/views.py51
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 %}<h1><a href="https://qa-reports.linaro.org/android-lkft/">LKFT Projects</a></h1>{% endblock %}
+{% block headline %}<h1><a href="https://qa-reports.linaro.org/{{group_name}}">{{title_head}}</a></h1>{% endblock %}
{% block content %}
<div>
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):