[zorg] r179197 - Added special build.html template file to llvmlab so that links in properties render as html links.

Michael Gottesman mgottesman at apple.com
Wed Apr 10 11:23:21 PDT 2013


Author: mgottesman
Date: Wed Apr 10 13:23:21 2013
New Revision: 179197

URL: http://llvm.org/viewvc/llvm-project?rev=179197&view=rev
Log:
Added special build.html template file to llvmlab so that links in properties render as html links.

Added:
    zorg/trunk/buildbot/llvmlab/master/templates/
    zorg/trunk/buildbot/llvmlab/master/templates/build.html

Added: zorg/trunk/buildbot/llvmlab/master/templates/build.html
URL: http://llvm.org/viewvc/llvm-project/zorg/trunk/buildbot/llvmlab/master/templates/build.html?rev=179197&view=auto
==============================================================================
--- zorg/trunk/buildbot/llvmlab/master/templates/build.html (added)
+++ zorg/trunk/buildbot/llvmlab/master/templates/build.html Wed Apr 10 13:23:21 2013
@@ -0,0 +1,246 @@
+{% extends "layout.html" %}
+{% import 'forms.html' as forms %}
+{% from "change_macros.html" import change with context %}
+
+{% block content %}
+
+<h1>
+Builder <a href="{{ path_to_builder }}">{{ b.getBuilder().getName() }}</a>
+Build #{{ b.getNumber() }}
+</h1>
+
+<div class="column">
+
+{% if not b.isFinished() %}
+  <h2>Build In Progress:</h2>
+
+  {% if when_time %}
+    <p>ETA: {{ when_time }} [{{ when }}]</p>
+  {% endif %}
+
+  {{ current_step }}
+  
+  {% if authz.advertiseAction('stopBuild', request) %}
+    <h2>Stop Build</h2>
+    {{ forms.stop_build(build_url+"/stop", authz, on_all=False, short=False, label='This Build') }}
+  {% endif %}
+{% else %}
+  <h2>Results:</h2>
+
+  <p class="{{ result_css }} result">   
+    {{ b.getText()|join(' ')|capitalize }}
+  </p>
+   
+  {% if b.getTestResults() %}
+    <h3><a href="{{ tests_link }}"/></h3>
+  {% endif %}
+{% endif %}
+
+<h2>
+{% if sourcestamps|count == 1 %}
+SourceStamp:
+{% else %}
+SourceStamps:
+{% endif %}
+</h2>
+
+{% for ss in sourcestamps %}
+<h3>{{ ss.codebase }}</h3>
+    <table class="info" width="100%">
+    {% set ss_class = cycler('alt','') %}
+
+    {% if ss.project %}
+      <tr class="{{ ss_class.next() }}"><td class="left">Project</td><td>{{ ss.project|projectlink }}</td></tr>
+    {% endif %}
+
+    {% if ss.repository %}
+      <tr class="{{ ss_class.next() }}"><td class="left">Repository</td><td>{{ ss.repository|repolink }}</td></tr>
+    {% endif %}
+
+    {% if ss.branch %}
+      <tr class="{{ ss_class.next() }}"><td class="left">Branch</td><td>{{ ss.branch|e }}</td></tr>
+    {% endif %}
+
+    {% if ss.revision %}
+      <tr class="{{ ss_class.next() }}"><td class="left">Revision</td><td>{{ ss.revision|revlink(ss.repository) }}</td></tr>
+    {% endif %}
+
+    {% if got_revisions[ss.codebase] %}
+      <tr class="{{ ss_class.next() }}"><td class="left">Got Revision</td><td>{{ got_revisions[ss.codebase]|revlink(ss.repository) }}</td></tr>
+    {% endif %}
+
+    {% if ss.patch %}
+      <tr class="{{ ss_class.next() }}"><td class="left">Patch</td><td>YES</td></tr>
+    {% endif %}
+
+    {% if ss.changes %}
+      <tr class="{{ ss_class.next() }}"><td class="left">Changes</td><td><a href="#changes-{{ ss.codebase }}">{{ ss.changes|count }} change{{ 's' if ss.changes|count > 1 else '' }}</a></td></tr>
+    {% endif %}
+
+    {% if not ss.branch and not ss.revision and not ss.patch and not ss.changes %}
+      <tr class="{{ ss_class.next() }}"><td class="left" colspan="2">Build of most recent revision</td></tr>
+    {% endif %}
+    </table>
+{% endfor %}
+
+{#
+ # TODO: turn this into a table, or some other sort of definition-list
+ # that doesn't take up quite so much vertical space
+ #}
+   
+<h2>BuildSlave:</h2>
+  
+{% if slave_url %}  
+  <a href="{{ slave_url|e }}">{{ b.getSlavename()|e }}</a>
+{% else %}
+  {{ b.getSlavename()|e }} 
+{% endif %}
+
+<h2>Reason:</h2>
+<p>
+{{ b.getReason()|e }}
+</p>
+
+<h2>Steps and Logfiles:</h2>
+
+{#
+ # TODO:
+ #       urls = self.original.getURLs()
+ #       ex_url_class = "BuildStep external"
+ #       for name, target in urls.items():
+ #           text.append('[<a href="%s" class="%s">%s</a>]' %
+ #                       (target, ex_url_class, html.escape(name)))
+ #}
+
+<ol>
+{% for s in steps %}
+  <li>
+    <div class="{{ s.css_class }} result">
+      <a href="{{ s.link }}">{{ s.name }}</a> 
+      {{ s.text }} <span style="float:right">{{ '( ' + s.time_to_run + ' )' if s.time_to_run else '' }}</span>
+    </div>
+
+    <ol>
+      {% set item_class = cycler('alt', '') %}
+      {% for l in s.logs %}
+        <li class="{{ item_class.next() }}"><a href="{{ l.link }}">{{ l.name }}</a></li>
+      {% else %}
+        <li class="{{ item_class.next() }}">- no logs -</li>
+      {% endfor %}
+    
+      {% for u in s.urls %}
+        <li class="{{ item_class.next() }}"><a href="{{ u.url }}">{{ u.logname }}</a></li>
+      {% endfor %}
+    </ol>  
+  </li>
+{% endfor %}
+</ol>
+
+</div>
+<div class="column">
+
+<h2>Build Properties:</h2>
+
+<table class="info" width="100%">
+<tr><th>Name</th><th>Value</th><th>Source</th></tr>
+
+{% for p in properties %}
+{% if p.source != "Force Build Form" %}
+  <tr class="{{ loop.cycle('alt', '') }}">
+    <td class="left">{{ p.name|e }}</td>
+    {% if p.short_value %}
+        <td>{{ p.short_value|e }} .. [property value too long]</td>
+    {% else %}
+        {% if p.value is not mapping %}
+	    {% if p.value[:4] == "http" %} 
+              <td>{{ p.value|e|replace(" ", "%20")|urlize(200)|replace("%20"," ") }}</td>
+	    {% else %}
+              <td>{{ p.value|e }}</td>
+	    {% endif %}
+        {% else %}
+            <td>
+                <table class="info" width="100%">
+                    {%- for key, value in p.value.items() recursive %}
+                        <tr><td>{{ key|e }}</td><td>{{ value|e }}</td></tr>
+                    {% endfor %}
+                </table>
+            </td>
+        {% endif %}
+    {% endif %}
+    <td>{{ p.source|e }}</td>
+  </tr>
+{% endif %}
+{% endfor %}
+</table>
+<h2>Forced Build Properties:</h2>
+<table class="info" width="100%">
+<tr><th>Name</th><th>Label</th><th>Value</th></tr>
+
+{% for p in properties %}
+    {% if p.source == "Force Build Form" %}
+  <tr class="{{ loop.cycle('alt', '') }}">
+    <td class="left">{{ p.name|e }}</td>
+    <td class="left">
+    {% if p.label %}
+    {{ p.label }}
+    {% endif %}    
+    </td>
+    {% if p.text %}
+    <td><textarea readonly cols="{{p.cols}}" rows="{{p.rows}}">{{ p.text|e }}</textarea></td>
+    {% else %}
+    <td>{{ p.value|e }}</td>
+    {% endif %}
+  </tr>
+  {% endif %}    
+{% endfor %}
+</table>
+
+<h2>Responsible Users:</h2>
+
+{% if responsible_users %}
+  <ol>
+  {% for u in responsible_users %}
+     <li class="{{ loop.cycle('alt', '') }}">{{ u|user }}</li>
+  {% endfor %}
+  </ol>
+{% else %}
+  <p>no responsible users</p>
+{% endif %}
+
+<h2>Timing:</h2>
+<table class="info" width="100%">
+  <tr class="alt"><td class="left">Start</td><td>{{ start }}</td></tr>
+{% if end %}
+  <tr><td class="left">End</td><td>{{ end }}</td></tr>
+{% endif %}
+  <tr {{ 'class="alt"' if end else '' }}><td class="left">Elapsed</td><td>{{ elapsed }}</td></tr>
+</table>
+
+  {% if authz.advertiseAction('forceBuild', request) %}
+    <h3>Resubmit Build:</h3>
+    {{ forms.rebuild_build(build_url+"/rebuild", authz, exactly, sourcestamps[0]) }}
+  {% endif %}
+
+</div>
+
+<br style="clear:both"/>
+  
+{% if has_changes %}
+    <div class="column">
+      <h2>All Changes:</h2>
+        {% for ss in sourcestamps %}
+            {% if ss.changes %}
+            <h3 id="changes-{{ ss.codebase }}"> {{ ss.codebase }}:</h3>
+            <ol>
+                  {% for c in ss.changes %}
+                    <li><h3>Change #{{ c.number }}</h3>
+                      {{ change(c.asDict()) }}
+                    </li>
+                  {% endfor %}
+            </ol>
+            {% endif %}
+        {% endfor %}
+    </div>
+{% endif %}
+
+{% endblock %}





More information about the llvm-commits mailing list