]> git.ipfire.org Git - pbs.git/blob - src/templates/jobs-detail.html
9d605d5d1cfd5e181eb446721924e7928ba21bcb
[pbs.git] / src / templates / jobs-detail.html
1 {% extends "base.html" %}
2
3 {% block title %}{{ _("Job") }}: {{ job.name }}{% end block %}
4
5 {% block body %}
6 <ul class="breadcrumb">
7 <li>
8 <a href="/">{{ _("Home") }}</a>
9 <span class="divider">/</span>
10 </li>
11 <li>
12 <a href="/packages">{{ _("Packages") }}</a>
13 <span class="divider">/</span>
14 </li>
15 <li>
16 <a href="/package/{{ build.pkg.name }}">{{ build.pkg.name }}</a>
17 <span class="divider">/</span>
18 </li>
19 <li>
20 <a href="/build/{{ build.uuid }}">{{ build.pkg.friendly_version }}</a>
21 <span class="divider">/</span>
22 </li>
23 <li class="active">
24 <a href="/job/{{ job.uuid }}">{{ job.arch }}</a>
25 </li>
26 </ul>
27
28 <div class="btn-group pull-right">
29 <a class="btn dropdown-toggle" data-toggle="dropdown" href="#">
30 {{ _("Actions") }} <span class="caret"></span>
31 </a>
32 <ul class="dropdown-menu">
33 {% if job.state in ("dispatching", "running", "uploading") %}
34 <li>
35 <a href="/job/{{ job.uuid }}/abort">
36 {{ _("Abort job") }}
37 </a>
38 </li>
39 {% elif job.state in ("aborted", "failed") %}
40 <li>
41 <a href="/job/{{ job.uuid }}/schedule?type=rebuild">
42 {{ _("Restart job") }}
43 </a>
44 </li>
45 {% elif job.state == "finished" %}
46 <li>
47 <a href="/job/{{ job.uuid }}/schedule?type=test">
48 {{ _("Schedule test build") }}
49 </a>
50 </li>
51 {% end %}
52 </ul>
53 </div>
54
55
56 <div class="page-header">
57 <h2>
58 {{ _("Build job") }}: {{ job.name }}<br>
59 <small>{{ job.pkg.summary }}</small>
60 </h2>
61 </div>
62
63 {% if job.message %}
64 <div class="alert alert-block">
65 {{ "<br />".join(job.message.splitlines()) }}
66 </div>
67 {% end %}
68
69 {% if job.state == "aborted" and job.aborted_state %}
70 <div class="alert alert-block alert-danger">
71 <span>{{ _("Job has been aborted") }}</span>
72 <p>
73 {{ _("This build job is in an aborted state, because the build process crashed unexpectedly.") }}
74 {{ _("In most cases, there is no log file and you must figure out the issue on your own.") }}
75 </p>
76 <p>
77 {{ _("The error code is:") }}
78
79 {% if job.aborted_state == -11 %}
80 SEGV - {{ _("Segmentation violation") }}
81 {% else %}
82 {{ job.aborted_state }} - {{ _("Unknown") }}
83 {% end %}
84 </p>
85
86 {% if current_user and current_user.is_admin() %}
87 <p>
88 {{ _("You may resubmit the job to try again:") }}
89 <a href="/job/{{ job.uuid }}/schedule?type=rebuild">{{ _("Re-submit build") }}</a>
90 </p>
91 {% end %}
92 </div>
93 {% end %}
94
95 <div class="row">
96 <div class="span7">
97 <div class="well well-large well-white ac">
98 <div class="row-fluid">
99 <div class="span5">
100 {% module JobState(job, cls="lead", show_icon=True) %}
101
102 {% if job.rank %}
103 <p>
104 {{ _("#%s in the build queue") % job.rank }}
105 </p>
106 {% end %}
107
108 <hr>
109
110 <p>
111 <span class="lead">{{ friendly_time(job.duration) }}</span>
112 {% if job.builder %}
113 <br>
114 <a href="/builder/{{ job.builder.name }}">{{ job.builder.name }}</a>
115 {% else %}
116 <span class="muted">{{ _("No builder assigned.") }}</span>
117 {% end %}
118 </p>
119 </div>
120
121 <div class="span7">
122 <p>
123 <strong>{{ _("Created") }}</strong><br>
124 {{ format_date(job.time_created, full_format=True) }}
125 </p>
126 {% if job.time_started %}
127 <p>
128 <strong>{{ _("Started") }}</strong><br>
129 {{ format_date(job.time_started, full_format=True) }}
130 </p>
131 {% end %}
132 {% if job.time_finished %}
133 <p>
134 <strong>{{ _("Finished") }}</strong><br>
135 {{ format_date(job.time_finished, full_format=True) }}
136 </p>
137 {% end %}
138 </div>
139 </div>
140 </div>
141 </div>
142
143 <div class="span5">
144 <h4>{{ _("Build logs") }}</h4>
145 {% if job.logfiles %}
146 {% module LogFilesTable(job, job.logfiles) %}
147 {% else %}
148 <p class="muted">{{ _("No logs available, yet.") }}</p>
149 {% end %}
150
151 {% if job.buildroot %}
152 <hr>
153 <p class="ac">
154 <a href="/job/{{ job.uuid }}/buildroot">{{ _("Buildroot") }}</a>
155 ({{ _("%s package", "%s packages", len(job.buildroot)) % len(job.buildroot) }})
156 </p>
157 {% end %}
158 </div>
159 </div>
160
161 {% if len(job) > 0 %}
162 <hr>
163
164 <h3>
165 {{ _("Package files") }}
166 <small>({{ len(job) }})</small>
167 </h3>
168
169 {% module PackagesTable(job, job) %}
170 {% end %}
171
172 {% if log %}
173 <hr>
174
175 <h3>{{ _("Log") }}</h3>
176
177 {% module Log(log) %}
178 {% end %}
179 {% end block %}