-
Notifications
You must be signed in to change notification settings - Fork 45
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
ci_build/: Re-design build-logs webpage
The newly created webpage combines the previous two webpages- info.txt and log/index.html. This web-page combines the results of both the pages and shows them in a better UI/UX with additional features of filtering and searching within the existing logs. The logs are fetched from a JSON file which is created from the logs stored in the log file _site/community.log Closes https://gitlab.com/coala/GSoC/gsoc-2019/issues/145
- Loading branch information
Showing
12 changed files
with
364 additions
and
58 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -9,7 +9,7 @@ packages: | |
- gci | ||
- gsoc | ||
- gamification | ||
- log | ||
- ci_build | ||
- meta_review | ||
- model | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,91 @@ | ||
import re | ||
import json | ||
import os | ||
import sys | ||
|
||
from django.views.generic import TemplateView | ||
|
||
from community.views import get_header_and_footer | ||
from community.git import (get_org_name, | ||
get_owner, | ||
get_deploy_url, | ||
get_upstream_deploy_url) | ||
|
||
|
||
class BuildLogsView(TemplateView): | ||
template_name = 'build_logs.html' | ||
|
||
def get_build_info(self): | ||
data = { | ||
'Org name': get_org_name(), | ||
'Owner': get_owner(), | ||
'Deploy URL': get_deploy_url(), | ||
} | ||
try: | ||
upstream_deploy_url = get_upstream_deploy_url() | ||
data['Upstream deploy URL'] = upstream_deploy_url | ||
except RuntimeError: | ||
data['Upstream deploy URL'] = 'Not found' | ||
return dict(data) | ||
|
||
def get_build_logs(self): | ||
log_lines = [] | ||
log_level_specific_lines = { | ||
'INFO': [], | ||
'DEBUG': [], | ||
'WARNING': [], | ||
'ERROR': [], | ||
'CRITICAL': [] | ||
} | ||
log_file_path = './_site/community.log' | ||
log_file_exists = os.path.isfile(log_file_path) | ||
if log_file_exists: | ||
with open(log_file_path) as log_file: | ||
previous_found_level = None | ||
for line in log_file: | ||
log_lines.append(line) | ||
levels = re.findall(r'\[[A-Z]+]', line) | ||
if levels: | ||
level = levels[0] | ||
level = previous_found_level = level[1:-1] | ||
log_level_specific_lines[level].append(line) | ||
elif previous_found_level: | ||
log_level_specific_lines[previous_found_level].append( | ||
line) | ||
ci_build_jsons = { | ||
'site_path': './_site/ci-build-detailed-logs.json', | ||
'public_path': './public/static/ci-build-detailed-logs.json', | ||
'static_path': './static/ci-build-detailed-logs.json' | ||
} | ||
with open(ci_build_jsons['site_path'], 'w+') as build_logs_file: | ||
data = { | ||
'logs': log_lines, | ||
'logs_level_Specific': log_level_specific_lines | ||
} | ||
json.dump(data, build_logs_file, indent=4) | ||
if os.path.isfile(ci_build_jsons['public_path']): | ||
if sys.platform == 'linux': | ||
os.popen('cp {} {}'.format( | ||
ci_build_jsons['site_path'], | ||
ci_build_jsons['public_path'])) | ||
os.popen('cp {} {}'.format( | ||
ci_build_jsons['site_path'], | ||
ci_build_jsons['static_path'])) | ||
else: | ||
os.popen('copy {} {}'.format( | ||
ci_build_jsons['site_path'], | ||
ci_build_jsons['public_path'])) | ||
os.popen('copy {} {}'.format( | ||
ci_build_jsons['site_path'], | ||
ci_build_jsons['static_path'])) | ||
|
||
return True | ||
else: | ||
return False | ||
|
||
def get_context_data(self, **kwargs): | ||
context = super().get_context_data(**kwargs) | ||
context = get_header_and_footer(context) | ||
context['build_info'] = self.get_build_info() | ||
context['build_logs_stored'] = self.get_build_logs() | ||
return context |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,86 @@ | ||
.build-info-section section, | ||
.build-logs-section section { | ||
min-width: 300px; | ||
width: 80%; | ||
} | ||
|
||
.build-information, | ||
.build-logs { | ||
background-color: black; | ||
padding-left: 10px; | ||
font-weight: bold; | ||
color: white; | ||
} | ||
|
||
.build-information p { | ||
font-size: 1.5em; | ||
margin: 0; | ||
} | ||
|
||
.build-logs { | ||
max-height: 900px; | ||
overflow: scroll; | ||
overflow-x: hidden; | ||
overflow-y: auto; | ||
} | ||
|
||
.build-logs p { | ||
margin: 0; | ||
} | ||
|
||
.build-logs-section .log-chooser { | ||
width: 25%; | ||
min-width: 150px; | ||
border-radius: 100px; | ||
box-shadow: 0px 0px 25px 2px black; | ||
color: #454343; | ||
background-color: #c7da99; | ||
padding-left: 10px; | ||
margin: auto; | ||
margin-right: 0; | ||
} | ||
|
||
.build-logs-section .log-chooser input, | ||
.build-logs-section .log-chooser input:focus:not(.browser-default) { | ||
border-bottom: none; | ||
margin-bottom: 0; | ||
} | ||
|
||
.build-logs-section .small-screen, | ||
.build-logs-section .fa-close { | ||
display: none; | ||
} | ||
|
||
.form-fields { | ||
margin: auto; | ||
margin-right: 0; | ||
width: 60%; | ||
padding-top: 10px; | ||
} | ||
|
||
.search-field { | ||
width: 60%; | ||
min-width: 180px; | ||
} | ||
|
||
.section-header { | ||
display: flex; | ||
align-items: center; | ||
} | ||
|
||
.section-header form { | ||
display: flex; | ||
} | ||
|
||
@media only screen and (max-width: 660px) { | ||
.build-logs-section .search-field { | ||
display: none; | ||
} | ||
.build-logs-section .small-screen { | ||
display: flex; | ||
align-items: center; | ||
margin: auto; | ||
margin-right: 3px; | ||
font-size: 2em; | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.