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 %}