Update CI status report to generate HTML table.

This updates the CI status report so that we generate
a tripleo-jobs.html-table that can be used to include
the CI status results in an external website. The
existing tripleo-jobs.html is still generated like
it was before.

Change-Id: I97285e147e79efbce3c16bf56e5a1eaa1656c1e4
This commit is contained in:
Dan Prince 2015-09-28 10:21:04 -04:00
parent a4f7707364
commit 285357ba90
3 changed files with 21 additions and 11 deletions

5
.gitignore vendored
View File

@ -1,4 +1,5 @@
index.html
result_cache.html
tripleo-jobs.db
tripleo-jobs.html
tripleo-jobs.html-table
*.swp
*~

View File

@ -15,3 +15,4 @@ Tools to help run CI jobs for TripleO. Includes things like:
broker nodes.
* Heat templates to help deploy and maintain test environment nodes
using an undercloud.
* Helper script(s) to generate CI status reports. (tox -ecireport -- -f)

View File

@ -34,7 +34,6 @@ class Job(Base):
url = Column(String)
job_names = [
'gate-tripleo-ironic-overcloud-f21-nonha',
'gate-tripleo-ironic-overcloud-f21puppet-nonha',
'gate-tripleo-ironic-overcloud-f21puppet-ha',
'gate-tripleo-ironic-overcloud-f21puppet-ceph',
@ -105,13 +104,13 @@ def get_data(stop_after):
session.commit()
def gen_html(html_file, stats_hours):
def gen_html(html_file, table_file, stats_hours):
refs_done = []
fp = open(html_file, "w")
fp.write('<html><head/><body><table border="1">')
fp.write("<tr><td/>")
fp = open(table_file, "w")
fp.write('<table border="1">')
fp.write("<tr class='headers'><td>&nbsp;</td>")
for job_name in job_names:
fp.write("<td><b>%s</b></td>" % job_name.replace("gate-tripleo-ironic-", ""))
fp.write("<td class='headers'><b>%s</b></td>" % job_name.replace("gate-tripleo-ironic-", ""))
fp.write("</tr>")
count = 0
for job in session.query(Job).order_by(desc(Job.dt)):
@ -154,7 +153,10 @@ def gen_html(html_file, stats_hours):
job_columns += '</font><br/>'
job_columns += "</td>"
fp.write("<tr><td>")
if (count % 2) == 1:
fp.write("<tr class='tr0'><td>")
else:
fp.write("<tr class='tr1'><td>")
project = ""
if job.zuul_project:
project = job.zuul_project.split("/")[-1]
@ -162,7 +164,13 @@ def gen_html(html_file, stats_hours):
% (this_gerrit_ref.replace(",", "/"), this_gerrit_ref, project))
fp.write(job_columns)
fp.write("</tr>")
fp.write("<table></body></html>")
fp.write("<table>")
fp.close()
with open(html_file, "w") as f:
f.write('<html><head/><body>')
f.write(open(table_file).read())
f.write("<table></body></html>")
def parse_logs(logurl):
if not os.path.isdir("./log"):
@ -193,7 +201,7 @@ def main(args=sys.argv[1:]):
if opts.f:
get_data(opts.n)
gen_html(opts.o, 24)
gen_html(opts.o, "%s-table" % opts.o, 24)
if __name__ == '__main__':
exit(main())