| 1 |
{% extends "base.html" %} |
| 2 |
{% import "repo_tabs.html" as m %} |
| 3 |
{% block title %}Images · {{ repo.owner }}/{{ repo.name }}{% endblock %} |
| 4 |
{% block bodyattrs %} data-repo="{{ repo.url }}"{% endblock %} |
| 5 |
{% block tabs %}{% call m::tabs(repo, "images") %}{% endblock %} |
| 6 |
{% block content %} |
| 7 |
<div class="head"><h1>Images <small>{{ images.len() }}</small></h1></div> |
| 8 |
<p class="small mute">The runner images (root file systems) this repository's jobs ran on in the last {{ days }} days, named by their BLAKE3 as <code>sandbox</code> blocks pin them (<code>rootfs "cas://blob/…"</code>). A runner without one fetches it from the hub, when the hub keeps it.</p> |
| 9 |
{% if images.is_empty() %}<p class="empty">No jobs ran on a pinned image in the last {{ days }} days.</p>{% else %} |
| 10 |
<div class="table"><table> |
| 11 |
<tr><th>Image</th><th>Architecture</th><th>Size</th><th>On the hub</th><th>Jobs</th><th>Last used</th></tr> |
| 12 |
{% for i in images %} |
| 13 |
<tr> |
| 14 |
<td>{% if i.hashed %}<code title="{{ i.image }}">{{ i.image|short }}</code>{% else %}<code>{{ i.image }}</code>{% endif %}</td> |
| 15 |
{% if let Some((size, arch)) = i.kept %}<td class="small">{% if arch.is_empty() %}<span class="mute">unknown</span>{% else %}{{ arch }}{% endif %}</td><td class="small">{{ size|bytes }}</td><td><span class="sig sig-valid">✔</span> kept</td>{% else %}<td class="small mute">unknown</td><td class="small mute">unknown</td><td><span class="sig sig-unsigned">○</span> <span class="small mute">runners only</span></td>{% endif %} |
| 16 |
<td>{{ i.jobs }}</td> |
| 17 |
<td class="small"><time title="{{ i.last_ms|when_i }}">{{ i.last_ms|ago_i }}</time></td> |
| 18 |
</tr> |
| 19 |
{% endfor %} |
| 20 |
</table></div> |
| 21 |
{% endif %} |
| 22 |
{% endblock %} |