Static Jenkins Site Generator

- Private Jenkins job scraping w/API key
- Added Gilroy font to match main public website
- Link back to ONF website for products
- Add more products

Change-Id: I3ed2dc1e371c564ee483ab83fd110a88d818bca7
diff --git a/templates/project.html b/templates/project.html
new file mode 100644
index 0000000..febda68
--- /dev/null
+++ b/templates/project.html
@@ -0,0 +1,46 @@
+{#
+SPDX-FileCopyrightText: &copy; 2020 Open Networking Foundation <support@opennetworking.org>
+SPDX-License-Identifier: Apache-2.0
+#}
+{% extends "base.html" %}
+{% block title %}ONF Continuous Certification - {{ project_name }}{% endblock %}
+{% block header %}ONF Continuous Certification - {{ project_name }}{% endblock %}
+{% block content %}
+
+<h2>Test Results</h2>
+
+{% for product in products | sort(attribute="product_name")%}
+<strong><a href="{{ product.product_name | replace(" ", "_") }}">{{ product.product_name }}</a></strong>
+{% set groups = product['groups'] %}
+
+<div class="ccresults">
+{% for group_name, jobs in groups.items() %}
+<strong>Version: {{ group_name }}</strong><br/>
+{% for job_name, builds in jobs.items() %}
+<em>Job: {{ job_name }}</em><br/>
+
+{% set timebox = builds | timebox(24,10) %}
+<ul>
+{% for tb in timebox %}
+<li class="{{ tb.result }}">
+  {{ tb.box_start | tsdate }} - {{ tb.outcome }}<br/>
+  {% for build in tb.builds %}
+  {% if "build_url" in build %}
+  <a href="{{ build.build_url }}" class="{{ build.result }}">{{ build.id }}</a>
+  {% else %}
+  <span class="{{ build.result }}">{{ build.id }}</span>
+  {% endif %}
+  {% else %}
+  No Builds
+  {% endfor %}
+</li>
+{% endfor %}
+</ul>
+{% endfor %}
+{% else %}
+No Tests Currently Available
+{% endfor %}
+</div>
+<br/>
+{% endfor %}
+{% endblock %}