2013-12-11 16:42:34 +00:00
{% extends "basebuildpage.html" %}
2013-12-13 17:14:34 +00:00
{% load humanize %}
{% load projecttags %}
2013-12-11 16:42:34 +00:00
2014-03-25 02:50:50 +00:00
{% block parentbreadcrumb %}
{{build.get_sorted_target_list.0.target}} {%if build.target_set.all.count > 1%}(+ {{build.target_set.all.count|add:"-1"}}){%endif%} {{build.machine}} ({{build.completed_on|date:"d/m/y H:i"}})
{% endblock %}
2013-12-11 16:42:34 +00:00
{% block buildinfomain %}
2013-12-13 17:14:34 +00:00
<!-- page title -->
< div class = "row-fluid span10" >
< div class = "page-header" >
2014-03-21 12:35:50 +00:00
< h1 > {{build.target_set.all|join:", "}} {{build.machine}}< / h1 >
2013-12-13 17:14:34 +00:00
< / div >
< / div >
<!-- build result bar -->
< div class = "row-fluid span10 pull-right" >
< div class = "alert {%if build.outcome == build.SUCCEEDED%}alert-success{%elif build.outcome == build.FAILED%}alert-error{%else%}alert-info{%endif%}" >
< div class = "row-fluid lead" >
2014-03-21 12:35:50 +00:00
< span class = "pull-left" > < strong >
{%if build.outcome == build.SUCCEEDED%}Completed{%elif build.outcome == build.FAILED%}Failed{%else%}{%endif%}
< / strong >
{{build.completed_on|date:"d/m/y H:i"}}
< / span >
{% if build.warnings_no or build.errors_no %}
with
{% endif %}
{%if build.outcome == build.SUCCEEDED or build.outcome == build.FAILED %}
{% if build.errors_no %}
< span > < i class = "icon-minus-sign red" > < / i > < strong > < a href = "#errors" class = "error" > {{build.errors_no}} error{{build.errors_no|pluralize}}< / a > < / strong > < / span >
2013-12-13 17:14:34 +00:00
{% endif %}
{% if build.warnings_no %}
2014-03-21 12:35:50 +00:00
{% if build.errors_no %}
and
{% endif %}
< span > < i class = "icon-warning-sign yellow" > < / i > < strong > < a href = "#warnings" class = "warning" > {{build.warnings_no}} warning{{build.warnings_no|pluralize}}< / a > < / strong > < / span >
2013-12-13 17:14:34 +00:00
{% endif %}
2014-03-21 12:35:50 +00:00
< span class = "pull-right" > Build time: < a href = "{% url 'buildtime' build.pk %}" > {{ build.timespent|sectohms }}< / a > < / span >
2013-12-13 17:14:34 +00:00
{%endif%}
< / div >
< / div >
< / div >
2014-03-12 18:47:42 +00:00
{% if build.errors_no %}
< div class = "accordion span10 pull-right" id = "errors" >
< div class = "accordion-group" >
< div class = "accordion-heading" >
< a class = "accordion-toggle error toggle-errors" >
< h2 id = "error-toggle" >
< i class = "icon-minus-sign" > < / i >
{{build.errors_no}} error{{build.errors_no|pluralize}}
< / h2 >
< / a >
< / div >
< div class = "accordion-body collapse in" id = "collapse-errors" >
< div class = "accordion-inner" >
< div class = "span10" >
{% for error in logmessages %}{% if error.level == 2 %}
< div class = "alert alert-error" >
< pre > {{error.message}}< / pre >
< / div >
{% endif %}{% endfor %}
< / div >
< / div >
< / div >
< / div >
< / div >
{% endif %}
2013-12-13 17:14:34 +00:00
{%if build.outcome == build.SUCCEEDED%}
<!-- built images -->
< div class = "row-fluid span10 pull-right" >
2014-03-21 12:35:50 +00:00
{% if hasImages %}
< h2 > Images< / h2 >
{% for target in targets %}
{% if target.target.is_image %}
< div class = "well" style = "background-color:transparent;" >
< h3 > < a href = "{% url 'target' build.pk target.target.pk %}" > {{target.target}}< / a >
< / h3 >
< dl class = "dl-horizontal" >
< dt > Packages included< / dt >
< dd > < a href = "{% url 'packages' build.pk %}" > {{target.npkg}}< / a > < / dd >
< dt > Total package size< / dt >
< dd > {{target.pkgsz|filtered_filesizeformat}}< / dd >
< dt >
2014-03-16 13:09:34 +00:00
< i class = "icon-question-sign get-help" title = "Path to the license manifest, which is a document listing all packages installed in your image and their licenses" > < / i >
2014-03-21 12:35:50 +00:00
License manifest
< / dt >
< dd > < a href = "{% url 'targetpackages' build.pk target.target.pk %}" > < code > {{target.target.license_manifest_path}}< / code > < / a > < / dd >
< dt >
< i class = "icon-question-sign get-help" title = "Image files are stored in <code style='background-color:transparent;color:#FFFFFF;font-weight:normal;border:none;'>/build/tmp/deploy/images/</code>" > < / i >
Image files
< / dt >
< dd >
< ul >
{% for i in target.imageFiles %}
< li > < strong > {{i.path}}< / strong >
({{i.size|filtered_filesizeformat}})< / li >
{% endfor %}
< / ul >
< / dd >
< / dl >
< / div >
{% endif %}
{% endfor %}
{% endif %}
2013-12-13 17:14:34 +00:00
< / div >
{%else%}
<!-- error dump -->
{%endif%}
<!-- build summary -->
< div class = "row-fluid span10 pull-right" >
< h2 > Build summary< / h2 >
< div class = "well span4" style = "margin-left:0px; background-color:transparent;" >
< h4 > < a href = "{%url 'configuration' build.pk%}" > Configuration< / a > < / h4 >
< dl >
< dt > Machine< / dt > < dd > {{build.machine}}< / dd >
2014-03-21 12:35:50 +00:00
< dt > Distro< / dt > < dd > {{build.distro}}< / dd >
< dt > Layers< / dt > {% for i in build.layer_version_build.all|dictsort:"layer.name" %}< dd > {{i.layer.name}}< / dd > {%endfor%}
2013-12-13 17:14:34 +00:00
< / dl >
< / div >
< div class = "well span4" style = "background-color:transparent;" >
< h4 > < a href = "{%url 'tasks' build.pk%}" > Tasks< / a > < / h4 >
< dl >
2014-03-21 12:35:50 +00:00
< dt > Total number of tasks< / dt > < dd > < a href = "{% url 'tasks' build.pk %}" > {{build.task_build.all.count}}< / a > < / dd >
2014-03-16 13:09:34 +00:00
< dt >
Tasks executed
< i class = "icon-question-sign get-help" title = "'Executed' tasks are those that need to be run in order to generate the task output" > < / i >
< / dt >
< dd > < a href = "{% url 'tasks' build.pk %}?filter=task_executed%3A1&count=25&search=&page=1&orderby=order%3A%2B" > {% query build.task_build task_executed=1 order__gt=0 as exectask%}{{exectask.count}}< / a > < / dd >
< dt >
Tasks not executed
< i class = "icon-question-sign get-help" title = "'Not executed' tasks don't need to run because their outcome is provided by another task" > < / i >
< / dt >
< dd > < a href = "{% url 'tasks' build.pk %}?filter=task_executed%3A0&count=25&search=&page=1&orderby=order%3A%2B" > {% query build.task_build task_executed=0 order__gt=0 as noexectask%}{{noexectask.count}}< / a > < / dd >
< dt >
Reuse
< i class = "icon-question-sign get-help" title = "The percentage of 'not executed' tasks over the total number of tasks, which is a measure of the efficiency of your build" > < / i >
< / dt >
< dd >
2014-03-21 12:35:50 +00:00
{% query build.task_build order__gt=0 as texec %}
{% if noexectask.count|multiply:100|divide:texec.count < 0 % }
0
{% else %}
{{noexectask.count|multiply:100|divide:texec.count}}
{% endif %}
%
< / dd >
2013-12-13 17:14:34 +00:00
< / dl >
< / div >
< div class = "well span4" style = "background-color:transparent;" >
< h4 > < a href = "{% url 'recipes' build.pk %}" > Recipes< / a > & < a href = "{% url 'packages' build.pk %}" > Packages< / a > < / h4 >
< dl >
2014-03-21 12:35:50 +00:00
< dt > Recipes built< / dt > < dd > < a href = "{% url 'recipes' build.pk %}" > {{recipecount}}< / a > < / dd >
< dt > Packages built< / dt > < dd > < a href = "{% url 'packages' build.pk %}" > {{build.package_set.all.count}}< / a > < / dd >
2013-12-13 17:14:34 +00:00
< / dl >
< / div >
< / div >
2013-12-11 16:42:34 +00:00
2014-03-12 18:47:42 +00:00
{% if build.warnings_no %}
< div class = "accordion span10 pull-right" id = "warnings" >
< div class = "accordion-group" >
< div class = "accordion-heading" >
< a class = "accordion-toggle warning toggle-warnings" >
< h2 id = "warning-toggle" >
< i class = "icon-warning-sign" > < / i >
{{build.warnings_no}} warning{{build.warnings_no|pluralize}}
< / h2 >
< / a >
< / div >
< div class = "accordion-body collapse" id = "collapse-warnings" >
< div class = "accordion-inner" >
< div class = "span10" >
{% for warning in logmessages %}{% if warning.level == 1 %}
< div class = "alert alert-warning" >
< pre > {{warning.message}}< / pre >
< / div >
{% endif %}{% endfor %}
< / div >
< / div >
< / div >
< / div >
< / div >
{% endif %}
2014-03-31 23:39:13 +00:00
< script type = "text/javascript" >
$(document).ready(function() {
//show warnings section when requested from the previous page
if (location.href.search('#warnings') > -1) {
$('#collapse-warnings').addClass('in');
}
});
< / script >
2013-12-11 16:42:34 +00:00
{% endblock %}