{% if !run.priority.is_empty() %}<pclass="small"><spanclass="tag tag-urgent"title="Runners take it before any other">{{ run.priority }}</span> {{ run.priority_note }}</p>{% endif %}
13
{% if can_expedite %}<formclass="inline"method="post"action="{{ repo.url }}/flow/{{ run.number }}/expedite"title="Runners take an urgent run's jobs before any other's"><inputtype="hidden"name="_csrf"value="{{ shell.csrf }}"><inputtype="text"name="reason"size="22"maxlength="200"placeholder="why it is urgent"required><buttontype="submit"class="small">EXPEDITE</button></form>{% endif %}
{% if can_cancel %}<formclass="inline"method="post"action="{{ repo.url }}/flow/{{ run.number }}/cancel"data-confirm="Cancel run #{{ run.number }}? Jobs still running are stopped."><inputtype="hidden"name="_csrf"value="{{ shell.csrf }}"><buttontype="submit"class="small danger-btn">CANCEL</button></form>{% endif %}
<sectionclass="panel"><divclass="strip bad">The pipeline is not valid, so nothing ran.</div><preclass="snippet">{{ run.error }}</pre><pclass="small mute">Run <code>flow check</code> locally to see the same problems.</p></section>
{% if !approvals.is_empty() %}<sectionclass="panel approvals"aria-label="Approvals">
23
<h2>Approvals</h2>
24
<ulclass="plain">{% for a in approvals %}<liclass="approval st-{{ a.state }}"><strong>{{ a.job }}</strong>
25
{% if a.state == "waiting" %}waits for approval by someone with the <em>{{ a.by }}</em> role{% if a.others_only %}, other than {{ run.actor }}{% endif %}.
{% if can_rerun && l.j.done() %}<formclass="tiny inline job-rerun"method="post"action="{{ repo.url }}/flow/{{ run.number }}/jobs/{{ l.j.name }}/rerun"><inputtype="hidden"name="_csrf"value="{{ shell.csrf }}"><buttontype="submit"class="small"title="Run {{ l.j.name }} again in this run, with the jobs that depend on it; what it depends on keeps its results">RE-RUN THIS JOB</button></form>{% endif %}
{% if !l.artifacts.is_empty() %}<ulclass="flow-artifacts small">{% for a in l.artifacts %}<li><ahref="{{ repo.url }}/flow/{{ run.number }}/artifacts/{{ l.j.name }}/{{ a.name }}">{{ a.name }}</a><spanclass="mute">{{ a.path }} · {{ a.size|bytes }} · blob <codetitle="{{ a.blob }}">{{ a.blob|short }}</code></span>{% if l.j.status != "passed" %} <spanclass="warn"title="Kept with when "always": the job did not pass, so its receipt does not name this file">· from a job that did not pass, not in its receipt</span>{% endif %}{% if !releases.is_empty() && l.j.status == "passed" %} <formclass="tiny inline"method="post"action="{{ repo.url }}/flow/{{ run.number }}/artifacts/{{ l.j.name }}/{{ a.name }}/attach"><inputtype="hidden"name="_csrf"value="{{ shell.csrf }}"><selectname="release"aria-label="Release to attach {{ a.name }} to">{% for r in releases %}<optionvalue="{{ r.id }}">{{ r.tag }}</option>{% endfor %}</select><button>Attach to release</button></form>{% endif %}</li>{% endfor %}</ul>{% endif %}
{% if !f.output.is_empty() %}<preclass="flow-log">{{ f.output }}</pre>{% endif %}
58
</details>{% endfor %}
59
{% if t.broken() > l.failures.len() as i64 %}<pclass="small mute">and {{ t.broken() - l.failures.len() as i64 }} more failures; the junit artifact has them all.</p>{% endif %}