1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
{% extends "_base.html" %}
{% block title %}ci · {{ repo }} · {{ run.sha_short() }}{% endblock %}
{% block nav %}
{% include "_nav.html" %}
{% endblock %}
{% block fullpage %}
<nav class="repo-section-nav">
{% include "_repo_section_nav.html" %}
<span class="repo-position">
<a class="ci-commit-link" href="/{{ repo }}/commits/{{ run.sha }}">{{ run.sha_short() }}</a>
<span class="repo-meta-dot">·</span>
<span>{{ run.branch_short() }}</span>
<span class="repo-meta-dot">·</span>
<span class="ci-state-label {{ run.state_class() }}"><span class="ci-status-dot {{ run.state_class() }}"></span> {{ run.state() }}</span>
</span>
</nav>
<div class="repo-body">
<article class="ci-detail">
<div class="ci-meta">
{% if run.is_terminal() %}
queued <time title="{{ run.queued_iso() }}">{{ run.queued_relative() }}</time>
<span class="repo-meta-dot">·</span>
ran <span title="started {{ run.started_iso() }}\nfinished {{ run.finished_iso() }}">{{ run.duration_display() }}</span>
{% elif run.has_started() %}
queued <time title="{{ run.queued_iso() }}">{{ run.queued_relative() }}</time>
<span class="repo-meta-dot">·</span>
started <time title="{{ run.started_iso() }}">{{ run.started_display() }}</time>
{% else %}
queued <time title="{{ run.queued_iso() }}">{{ run.queued_relative() }}</time>
{% endif %}
</div>
{% for job in jobs %}
<div class="ci-job">
<div class="ci-job-header">
{{ job.job_id }}<span class="repo-meta-dot">·</span>{{ job.duration_display() }}{% if let Some(code) = job.exit_code_filter_nonzero() %}<span class="repo-meta-dot">·</span>exit {{ code }}{% endif %}
<span class="repo-meta-dot">·</span>
<span class="ci-state-label {{ job.state_class() }}"><span class="ci-status-dot {{ job.state_class() }}"></span> {{ job.state }}</span>
</div>
{% for sh in job.sh_events %}
<div class="ci-sh">
<div class="ci-sh-cmd">
{{ sh.cmd_display() }}
<span class="ci-sh-meta">{{ sh.duration_display() }}{% if sh.exit_code != 0 %} · exit {{ sh.exit_code }}{% endif %}</span>
</div>
{% if !sh.log_content.is_empty() %}
<pre class="ci-sh-log">{{ sh.log_content }}</pre>
{% endif %}
</div>
{% endfor %}
</div>
{% else %}
<div class="ci-empty">no jobs recorded</div>
{% endfor %}
{% if !quire_ci_log.is_empty() %}
<div class="ci-job">
<div class="ci-job-header">quire-ci</div>
<pre class="ci-sh-log">{{ quire_ci_log }}</pre>
</div>
{% endif %}
</article>
</div>
{% endblock %}