{% extends "base.html" %} {% import "repo_tabs.html" as m %} {% block title %}Run #{{ run.number }} · Flow · {{ repo.owner }}/{{ repo.name }}{% endblock %} {% block bodyattrs %} data-repo="{{ repo.url }}"{% if run.live() %} data-flow-live="{{ repo.url }}/flow/{{ run.number }}/live"{% endif %}{% endblock %} {% block tabs %}{% call m::tabs(repo, "flow") %}{% endblock %} {% block mainclass %} class="wide"{% endblock %} {% block content %}
{% if run.bookmark.is_empty() %}change{% else %}{{ run.bookmark }}{% endif %} at {{ run.state|short }} · {{ run.started_by() }} · {{ duration }}{% if !run.pipeline_hash.is_empty() %} · pipeline {{ run.pipeline_hash|short }}{% endif %} · .flow/pipeline.kdl · all runs
{{ run.error }}Run flow check locally to see the same problems.
{{ l.j.receipt_hash|short }}{% endif %}{% if !l.artifacts.is_empty() %} · {{ l.artifacts.len()|plural("artifact", "artifacts") }}{% endif %}{{ a.blob|short }}{% if !releases.is_empty() %} {% endif %}{% for line in l.lines %}{{ line.t / 1000 }}.{{ "{:01}"|format(line.t % 1000 / 100) }}s{{ line.text }}
{% endfor %}
{% if l.j.status == "queued" && !l.j.waiting.is_empty() %}Waiting: {{ l.j.waiting }}.
{% else if l.lines.is_empty() && l.j.status == "queued" %}Waiting for a runner{% if !l.j.depends_on().is_empty() %} and for {{ l.j.depends_on().join(", ") }}{% endif %}.
{% endif %} {% if l.lines.is_empty() && l.j.status == "skipped" %}Skipped: a job it depends on did not pass.
{% endif %}