| 1 |
{% extends "base.html" %} |
| 2 |
{% import "repo_tabs.html" as m %} |
| 3 |
{% block title %}Build artifacts · {{ repo.owner }}/{{ repo.name }}{% endblock %} |
| 4 |
{% block bodyattrs %} data-repo="{{ repo.url }}"{% endblock %} |
| 5 |
{% block tabs %}{% call m::tabs(repo, "artifacts") %}{% endblock %} |
| 6 |
{% block content %} |
| 7 |
<div class="head"><h1>Build artifacts <small>{{ artifacts.len() }}</small></h1></div> |
| 8 |
<p class="small mute">What this repository's OxygenFlow jobs kept (the <code>artifact</code> blocks of a job's <code>output</code>), newest first{% if artifacts.len() as i64 == limit %}, the latest {{ limit }}{% endif %}. Each run's page has its own; a release can attach one as an asset.</p> |
| 9 |
{% if artifacts.is_empty() %}<p class="empty">No artifacts yet. A job keeps a file with an <code>output { artifact "NAME" { path "/src/…" } }</code> block in <code>.flow/pipeline.kdl</code>.</p>{% else %} |
| 10 |
<div class="table"><table> |
| 11 |
<tr><th>Artifact</th><th>Run</th><th>Job</th><th>Size</th><th>BLAKE3</th><th>Made</th></tr> |
| 12 |
{% for a in artifacts %} |
| 13 |
<tr> |
| 14 |
<td><a href="{{ repo.url }}/flow/{{ a.run_number }}/artifacts/{{ a.job|urlencode }}/{{ a.name|urlencode }}" title="{{ a.path }}">{{ a.name }}</a></td> |
| 15 |
<td><a href="{{ repo.url }}/flow/{{ a.run_number }}">#{{ a.run_number }}</a> <span class="small mute">{{ a.bookmark }}</span></td> |
| 16 |
<td>{{ a.job }}</td> |
| 17 |
<td class="small">{{ a.size|bytes }}</td> |
| 18 |
<td><code class="small" title="{{ a.content }}">{{ a.content|short }}</code></td> |
| 19 |
<td class="small"><time title="{{ a.created_ms|when_i }}">{{ a.created_ms|ago_i }}</time></td> |
| 20 |
</tr> |
| 21 |
{% endfor %} |
| 22 |
</table></div> |
| 23 |
{% endif %} |
| 24 |
{% endblock %} |