mc-core
Version:
Deployments made simple
226 lines (199 loc) • 12.7 kB
HTML
<h1 style="margin-bottom: 0;margin-top: 39px;">Pipeline Execution #{{ execution.id }}</h1>
<h4 style="margin-top: 0;color: #aaa;font-weight: normal;margin-bottom: 30px;">{{ project.name }} » {{ execution.pipeline_config_name }}</h4>
<div class="row">
<div class="col-md-4">
<div class="panel panel-default">
<div class="panel-heading">
Pipeline Details
</div>
<table class="table">
<tbody>
<tr>
<th>Status</th>
<td ng-if="execution.status === 'created'"><i class="fa fa-circle text-info pulse"></i> <span>Created</span></td>
<td ng-if="execution.status === 'queued'"><i class="fa fa-circle text-info pulse"></i> <span>Queued</span></td>
<td ng-if="execution.status === 'running'"><i class="fa fa-circle text-info pulse"></i> <span>Running</span></td>
<td ng-if="execution.status === 'succeeded'"><i class="fa fa-circle text-success"></i> <span class="text-success">Succeeded</span></td>
<td ng-if="execution.status === 'failed'"><i class="fa fa-circle text-danger"></i> <span class="text-danger">Failed</span></td>
</tr>
<tr>
<th>Created by</th>
<!--<td><i class="fa fa-github"></i> GitHub Webhook</td>-->
<td><i class="octicon octicon-person"></i> Andy Fleming</td>
</tr>
<tr>
<th>Created</th>
<td>{{ execution.created_at | amTimeAgo }}<br><small class="text-muted">{{ execution.created_at | amDateFormat: 'dddd, MMM D, YYYY, h:mma' }}</small></td>
</tr>
<tr ng-if="execution.finished_at !== null && execution.finished_at !== ''">
<th>Finished At</th>
<td>{{ execution.finished_at | amTimeAgo }}<br><small class="text-muted">{{ execution.finished_at | amDateFormat: 'dddd, MMM D, YYYY, h:mma' }}</small></td>
</tr>
<tr ng-if="execution.finished_at !== null && execution.finished_at !== ''">
<th>Total Time</th>
<td>{{ execution.finished_at | amDifference : execution.started_at : 'minutes' : true | number : 1 }} minutes</td>
</tr>
</tbody>
</table>
</div>
</div>
<div class="col-md-8">
<div class="panel panel-default">
<div class="panel-heading">
Steps
</div>
<table class="table">
<tbody><tr>
<td>Step</td>
<td>Status</td>
<td>Name</td>
</tr>
<tr ng-repeat="stage in execution.stageExecutions">
<td class="text-muted">{{ stage.stage_num }}</td>
<!-- status: "created", "running", "awaiting_confirmation", "failed", "succeeded", or "skipped -->
<td class="text-info" ng-if="stage.status === 'created'"><i class="fa fa-asterisk"></i> Created</td><!-- legacy -->
<td class="text-info" ng-if="stage.status === 'waiting'"><i class="fa fa-hourglass-half"></i> Waiting</td>
<td class="text-info" ng-if="stage.status === 'running'"><i class="fa fa-refresh fa-spin"></i> Running</td>
<td class="text-success" ng-if="stage.status === 'succeeded'"><i class="fa fa-check"></i> Succeeded</td>
<td class="text-warning" ng-if="stage.status === 'awaiting_confirmation'"><i class="fa fa-question-circle"></i> Awaiting Confirmation</td>
<td class="text-danger" ng-if="stage.status === 'failed'"><i class="fa fa-times"></i> Failed</td>
<td class="text-muted" ng-if="stage.status === 'skipped'"><i class="fa fa-long-arrow-right"></i> Skipped</td>
<td>{{ execution.stageConfigsById[stage.stage_config_id].name }}<br><small class="text-muted">GitHub › Clone Repository</small></td>
</tr>
<!-- Examples -->
<!--
<tr>
<td class="text-muted">1</td>
<td class="text-success"><i class="fa fa-check"></i> Succeeded</td>
<td>Clone Repo<br><small class="text-muted">GitHub › Clone Repository</small></td>
</tr>
<tr>
<td class="text-muted">2</td>
<td class="text-success"><i class="fa fa-check"></i> Succeeded</td>
<td>Pause for a few seconds<br><small class="text-muted">Mission Control › Pause Execution</small></td>
</tr>
<tr>
<td class="text-muted">3</td>
<td class="text-success"><i class="fa fa-check"></i> Succeeded</td>
<td>Grab template.json<br><small class="text-muted">Mission Control › Copy File(s) to Workspace</small></td>
</tr>
<tr>
<td class="text-muted">4</td>
<td class="text-success"><i class="fa fa-check"></i> Succeeded</td>
<td>Build Server AMI<br><small class="text-muted">Packer › Run</small></td>
</tr>
<tr>
<td class="text-muted">5</td>
<td class="text-success"><i class="fa fa-check"></i> Succeeded</td>
<td>Pause for another few seconds<br><small class="text-muted">Mission Control › Pause Execution</small></td>
</tr>
-->
</tbody></table>
</div><!-- end of steps panel -->
<div class="panel panel-default">
<div class="panel-heading">
Pipeline Logs
</div>
<table class="table">
<tbody><tr>
<th class="text-center" style="width: 60px;">Step</th>
<th class="text-center">Time</th>
<th>Title</th>
<th>Options</th>
</tr>
<tr ng-repeat-start="log in execution.logs">
<td class="text-center text-muted" style="vertical-align: middle;">{{ log.stage_num }}</td>
<td class="text-center text-muted" style="vertical-align: middle;">{{ log.logged_at | amDateFormat : 'h:mma' }}</td>
<td style="vertical-align: middle;" class="">{{ log.title }}</td>
<td><a class="btn btn-default btn-sm" ng-click="toggleDetails($event)" ng-if="log.details"><span>Show</span> Details <i class="fa fa-angle-down"></i></a></td>
</tr>
<tr ng-repeat-end ng-if="log.details" class="log-details">
<td colspan="4" ng-bind-html="log.details | unsafe"></td>
</tr>
<!-- TODO: if details/data, show block -->
<!--<tr style="background: rgb(250, 250, 250);">-->
<!--<td colspan="4">-->
<!--</td>-->
<!--</tr>-->
<!-- Example below -->
<!--
<tr>
<td class="text-center text-muted" style="vertical-align: middle;">1</td>
<td class="text-center text-muted" style="vertical-align: middle;">3:47pm</td>
<td style="vertical-align: middle;" class="">Git clone command succeeded.</td>
<td>
<a class="btn btn-sm btn-default view-log-details"><span>View</span><span style="display:none;">Hide</span> Details <i class="fa fa-angle-down"></i></a>
</td>
</tr>
<tr style="display:none;background: #fafafa">
<td colspan="4"><h5>Exit Code and Text:</h5><pre>0 — OK</pre><h5>Output (STDOUT):</h5><pre class="shell-output"></pre><h5>Error Output (STDERR):</h5><pre class="shell-output">Cloning into 'example-service'...
</pre></td>
</tr>
<tr>
<td class="text-center text-muted" style="vertical-align: middle;">2</td>
<td class="text-center text-muted" style="vertical-align: middle;">3:47pm</td>
<td style="vertical-align: middle;" class="">Paused execution for 3 seconds.</td>
<td>
</td>
</tr>
<tr>
<td class="text-center text-muted" style="vertical-align: middle;">3</td>
<td class="text-center text-muted" style="vertical-align: middle;">3:47pm</td>
<td style="vertical-align: middle;" class="">Files copied into workspace</td>
<td>
<a class="btn btn-sm btn-default view-log-details"><span>View</span><span style="display:none;">Hide</span> Details <i class="fa fa-angle-down"></i></a>
</td>
</tr>
<tr style="display:none;background: #fafafa">
<td colspan="4"><pre>File 1 v1 copied into workspace as:
/mission_control/workspaces/pipeline_execution_113/template.json
</pre></td>
</tr>
<tr>
<td class="text-center text-muted" style="vertical-align: middle;">4</td>
<td class="text-center text-muted" style="vertical-align: middle;">3:50pm</td>
<td style="vertical-align: middle;" class="">Packer command succeeded.</td>
<td>
<a class="btn btn-sm btn-default view-log-details"><span style="display: none;">View</span><span style="">Hide</span> Details <i class="fa fa-angle-up"></i></a>
</td>
</tr>
<tr style="background: rgb(250, 250, 250);">
<td colspan="4"><h5>Exit Code and Text:</h5><pre>0 — OK</pre><h5>Output (STDOUT):</h5><pre class="shell-output"><span class="green">amazon-ebs output will be in this color.</span>
<span class="green">==> amazon-ebs: Prevalidating AMI Name...</span>
<span class="green">==> amazon-ebs: Inspecting the source AMI...</span>
<span class="green">==> amazon-ebs: Creating temporary keypair: packer 5616f29c-72b3-bead-2abd-795ba4a2d090</span>
<span class="green">==> amazon-ebs: Creating temporary security group for this instance...</span>
<span class="green">==> amazon-ebs: Authorizing access to port 22 the temporary security group...</span>
<span class="green">==> amazon-ebs: Launching a source AWS instance...</span>
<span class="bright-green"> amazon-ebs: Instance ID: i-e88e443c</span>
<span class="green">==> amazon-ebs: Waiting for instance (i-e88e443c) to become ready...</span>
<span class="green">==> amazon-ebs: Waiting for SSH to become available...</span>
<span class="green">==> amazon-ebs: Connected to SSH!</span>
<span class="green">==> amazon-ebs: Stopping the source instance...</span>
<span class="green">==> amazon-ebs: Waiting for the instance to stop...</span>
<span class="green">==> amazon-ebs: Creating the AMI: packer-example 1444344476</span>
<span class="bright-green"> amazon-ebs: AMI: ami-4da9e628</span>
<span class="green">==> amazon-ebs: Waiting for AMI to become ready...</span>
<span class="green">==> amazon-ebs: Terminating the source AWS instance...</span>
<span class="green">==> amazon-ebs: Cleaning up any extra volumes...</span>
<span class="green">==> amazon-ebs: No volumes to clean up, skipping</span>
<span class="green">==> amazon-ebs: Deleting temporary security group...</span>
<span class="green">==> amazon-ebs: Deleting temporary keypair...</span>
<span class="green">Build 'amazon-ebs' finished.</span>
==> Builds finished. The artifacts of successful builds are:
--> amazon-ebs: AMIs were created:
us-east-1: ami-4da9e628
</pre><h5>Error Output (STDERR):</h5><pre class="shell-output"></pre></td>
</tr>
<tr>
<td class="text-center text-muted" style="vertical-align: middle;">5</td>
<td class="text-center text-muted" style="vertical-align: middle;">3:50pm</td>
<td style="vertical-align: middle;" class="">Paused execution for 3 seconds.</td>
<td>
</td>
</tr>
-->
</tbody></table>
</div>
</div>
</div>