| 1 | <!DOCTYPE html> |
| 2 | <html> |
| 3 | <head> |
| 4 | @include 'layout/head.html' |
| 5 | @css '/css/ci.css' |
| 6 | </head> |
| 7 | <body> |
| 8 | @include 'layout/header.html' |
| 9 | |
| 10 | <div class="content"> |
| 11 | @include 'layout/repo_menu.html' |
| 12 | |
| 13 | <div class="ci-run-header"> |
| 14 | <h1>CI Run #@{ci_run.id}</h1> |
| 15 | <span class="ci-status-badge @{ci_run.status_css_class()}">@{ci_run.status}</span> |
| 16 | @if repo.user_id == ctx.user.id |
| 17 | <form class="ci-restart-form" method="POST" action="/@repo.user_name/@repo.name/ci/@{ci_run.id}/restart"> |
| 18 | <button type="submit" class="ci-restart-btn">⟳ Restart</button> |
| 19 | </form> |
| 20 | @end |
| 21 | </div> |
| 22 | |
| 23 | <div class="ci-run-info"> |
| 24 | <span>Branch: <b>@{ci_run.branch}</b></span> |
| 25 | <span>Commit: <code>@{ci_run.commit_hash}</code></span> |
| 26 | <span>Started: @{ci_run.created_relative()}</span> |
| 27 | <span>Duration: @{ci_run.duration()}</span> |
| 28 | </div> |
| 29 | |
| 30 | @for job in ci_run.jobs |
| 31 | <div class="ci-job"> |
| 32 | <div class="ci-job-header @{job.status_css_class()}"> |
| 33 | <b>@job.name</b> |
| 34 | <span class="ci-status-badge @{job.status_css_class()}">@job.status</span> |
| 35 | </div> |
| 36 | |
| 37 | <div class="ci-steps"> |
| 38 | @for step in job.steps |
| 39 | <div class="ci-step"> |
| 40 | <div class="ci-step-header @{step.status_css_class()}"> |
| 41 | <span class="ci-step-icon">@{step.status_icon()}</span> |
| 42 | <b>@step.name</b> |
| 43 | <code class="ci-step-cmd">@step.command</code> |
| 44 | </div> |
| 45 | @if step.output.len > 0 |
| 46 | <pre class="ci-step-output">@step.output</pre> |
| 47 | @end |
| 48 | </div> |
| 49 | @end |
| 50 | </div> |
| 51 | </div> |
| 52 | @end |
| 53 | </div> |
| 54 | |
| 55 | @include 'layout/footer.html' |
| 56 | </body> |
| 57 | </html> |
| 58 | |