201 lines
		
	
	
	
		
			8.2 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
			
		
		
	
	
			201 lines
		
	
	
	
		
			8.2 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
| <div class="repo-panel-builds-element">
 | |
|   <div class="feedback-bar" feedback="feedback"></div>
 | |
|   <div class="tab-header-controls">
 | |
|     <button class="btn btn-primary" ng-click="showNewBuildDialog()" ng-if="!repository.trust_enabled">
 | |
|       <i class="fa fa-play"></i> Start New Build
 | |
|     </button>
 | |
|   </div>
 | |
|   <h3 class="tab-header">Repository Builds</h3>
 | |
| 
 | |
|   <div class="co-alert co-alert-info" ng-if="repository.trust_enabled">
 | |
|      Builds cannot be performed on this repository because Quay Content Trust is
 | |
|      enabled, which requires that all operations be signed by a user.
 | |
|   </div>
 | |
| 
 | |
|   <!-- Builds -->
 | |
|   <div class="co-panel" id="repoBuilds">
 | |
|     <!-- Builds header controls -->
 | |
|     <div class="co-panel-heading">
 | |
|         <div class="heading-controls hidden-sm hidden-xs">
 | |
|           <span class="filter-control" filter="options.filter" value="recent">Recent Builds</span>
 | |
|           <span class="filter-control" filter="options.filter" value="48hour">Last 48 Hours</span>
 | |
|           <span class="filter-control" filter="options.filter" value="30day">Last 30 days</span>
 | |
|         </div>
 | |
|         <div class="heading-title">
 | |
|           <i class="fa fa-tasks"></i>
 | |
|           Build History
 | |
|         </div>
 | |
|     </div>
 | |
| 
 | |
|     <!-- Builds list content -->
 | |
|     <div class="panel-body">
 | |
|       <div class="resource-view" resource="buildsResource" error-message="'Could not load build information'">
 | |
| 
 | |
|         <!-- No builds found -->
 | |
|         <div class="empty" ng-if="!fullBuilds.length">
 | |
|           <div class="empty-primary-msg">No matching builds found</div>
 | |
|           <div class="empty-secondary-msg">
 | |
|             Please change the filter above to search for more builds.
 | |
|           </div>
 | |
|         </div>
 | |
| 
 | |
|         <!-- Builds list table -->
 | |
|         <table class="co-table" ng-if="fullBuilds.length">
 | |
|            <thead>
 | |
|             <td class="status-col"></td>
 | |
|             <td ng-class="tablePredicateClass('id', options.predicate, options.reverse)"
 | |
|                 style="min-width: 85px;">
 | |
|               <a ng-click="orderBy('id')">Build ID</a>
 | |
|             </td>
 | |
|             <td class="hidden-xs"
 | |
|                 ng-class="tablePredicateClass('commit_sha', options.predicate, options.reverse)"
 | |
|                 style="min-width: 115px">
 | |
|               <a ng-click="orderBy('commit_sha')">Triggered By</a>
 | |
|             </td>
 | |
|             <td ng-class="tablePredicateClass('started_datetime', options.predicate, options.reverse)" style="min-width: 120px;">
 | |
|               <a ng-click="orderBy('started_datetime')">Date Started</a>
 | |
|             </td>
 | |
|             <td class="hidden-xs"
 | |
|                 ng-class="tablePredicateClass('tags', options.predicate, options.reverse)"
 | |
|                 style="min-width: 66px;">
 | |
|               <a ng-click="orderBy('tags')">Tags</a>
 | |
|             </td>
 | |
|            </thead>
 | |
| 
 | |
|            <tr ng-repeat="build in fullBuilds">
 | |
|              <td><span class="build-state-icon" build="build"></span></td>
 | |
|              <td>
 | |
|               <a href="/repository/{{ repository.namespace }}/{{ repository.name }}/build/{{ build.id }}">{{ build.id.substr(0, 8) }}</a>
 | |
|              </td>
 | |
|              <td class="hidden-xs">
 | |
|                 <div class="triggered-build-description" build="build"></div>
 | |
|              </td>
 | |
|              <td>{{ build.started | amCalendar }}</td>
 | |
|              <td class="hidden-xs">
 | |
|                 <span class="building-tag" ng-repeat="tag in build.building_tags">
 | |
|                   <span class="tag-span"><i class="fa fa-tag"></i>{{ tag }}</span>
 | |
|                 </span>
 | |
|              </td>
 | |
|            </tr>
 | |
|         </table>
 | |
|       </div>
 | |
|     </div>
 | |
|   </div> <!-- /Builds -->
 | |
| 
 | |
|   <!-- Build Triggers -->
 | |
|   <div class="co-panel" ng-if="repository.can_admin && TriggerService.getTypes().length && !repository.trust_enabled" id="repoBuildTriggers">
 | |
|     <!-- Builds header controls -->
 | |
|     <div class="co-panel-heading">
 | |
|       <i class="fa fa-flash"></i>
 | |
|       Build Triggers
 | |
| 
 | |
|       <div class="heading-controls hidden-xs">
 | |
|         <!-- Add Build Trigger -->
 | |
|         <div class="dropdown" id="addBuildTrigger">
 | |
|           <button class="btn btn-primary dropdown-toggle" data-toggle="dropdown">
 | |
|             Create Build Trigger
 | |
|             <b class="caret"></b>
 | |
|           </button>
 | |
|           <ul class="dropdown-menu dropdown-menu-right pull-right">
 | |
|             <li ng-repeat="type in TriggerService.getTypes()" ng-if="TriggerService.isEnabled(type)">
 | |
|               <a href="{{ TriggerService.getRedirectUrl(type, repository.namespace, repository.name) }}" target="{{ TriggerService.getMetadata(type).is_external ? '' : '_self' }}">
 | |
|                 <i class="fa fa-lg" ng-class="TriggerService.getMetadata(type).icon"></i>
 | |
|                 {{ TriggerService.getTitle(type) }}
 | |
|               </a>
 | |
|             </li>
 | |
|           </ul>
 | |
|         </div>
 | |
|       </div>
 | |
|     </div>
 | |
| 
 | |
|     <!-- Builds list content -->
 | |
|     <div class="panel-body">
 | |
|       <div class="resource-view" resource="triggersResource" error-message="'Could not load build triggers'">
 | |
|         <!-- No Triggers defined -->
 | |
|         <div class="empty" ng-if="!triggers.length">
 | |
|           <div class="empty-primary-msg">No build triggers defined</div>
 | |
|           <div class="empty-secondary-msg">
 | |
|             Build triggers invoke builds whenever the triggered condition is met (source control push, webhook, etc)
 | |
|           </div>
 | |
|         </div>
 | |
| 
 | |
|         <!-- Triggers list -->
 | |
|         <table class="cor-table" ng-if="triggers.length">
 | |
|           <thead>
 | |
|             <td>Trigger Name</td>
 | |
|             <td>Dockerfile Location</td>
 | |
|             <td>Context Location</td>
 | |
|             <td>Branches/Tags</td>
 | |
|             <td>Pull Robot</td>
 | |
|             <td class="options-col"></td>
 | |
|           </thead>
 | |
| 
 | |
|           <tr ng-repeat="trigger in triggers | filter:{'is_active':false}">
 | |
|             <td colspan="5" style="text-align: center">
 | |
|               This build trigger has not had its setup completed:
 | |
|               <a ng-click="deleteTrigger(trigger)">Delete Trigger</a>
 | |
|             </td>
 | |
|           </tr>
 | |
| 
 | |
|           <tr ng-repeat="trigger in triggers | filter:{'is_active':true}">
 | |
|             <td><div class="trigger-description" trigger="trigger"></div></td>
 | |
|             <td>{{ trigger.config.dockerfile_path || '/Dockerfile' }}</td>
 | |
|             <td>{{ trigger.config.context  || '/' }}</td>
 | |
|             <td>{{ trigger.config.branchtag_regex || 'All' }}</td>
 | |
|             <td>
 | |
|               <span class="entity-reference" entity="trigger.pull_robot" ng-if="trigger.pull_robot"></span>
 | |
|               <span class="empty" ng-if="!trigger.pull_robot">(None)</span>
 | |
|             </td>
 | |
|             <td>
 | |
|               <span class="cor-options-menu">
 | |
|                 <span ng-if="trigger.config.credentials" class="cor-option" option-click="showTriggerCredentialsModal(trigger)">
 | |
|                   <i class="fa fa-unlock-alt"></i> View Credentials
 | |
|                 </span>
 | |
|                 <span class="cor-option" option-click="askRunTrigger(trigger)"
 | |
|                       ng-class="trigger.can_invoke ? '' : 'disabled'">
 | |
|                   <i class="fa fa-chevron-right"></i> Run Trigger Now
 | |
|                 </span>
 | |
|                 <span class="cor-option" option-click="askDeleteTrigger(trigger)">
 | |
|                   <i class="fa fa-times"></i> Delete Trigger
 | |
|                 </span>
 | |
|               </span>
 | |
|             </td>
 | |
|           </tr>
 | |
|         </table>
 | |
| 
 | |
| 
 | |
|       </div>
 | |
|     </div>
 | |
|   </div> <!-- /Build Triggers -->
 | |
| 
 | |
|   <!-- Dialogs -->
 | |
| 
 | |
|   <!-- Trigger Credentials dialog -->
 | |
|   <div class="trigger-credentials-dialog" trigger="triggerCredentialsModalTrigger" counter="triggerCredentialsModalCounter"></div>
 | |
| 
 | |
|   <!-- Delete Tag Confirm -->
 | |
|   <div class="cor-confirm-dialog"
 | |
|        dialog-context="deleteTriggerInfo"
 | |
|        dialog-action="deleteTrigger(info.trigger, callback)"
 | |
|        dialog-title="Delete Build Trigger"
 | |
|        dialog-action-title="Delete Trigger">
 | |
|     Are you sure you want to delete this build trigger? No further builds will be automatically
 | |
|     started.
 | |
|   </div>
 | |
| 
 | |
|   <!-- Dockerfile build dialog -->
 | |
|   <div class="dockerfile-build-dialog"
 | |
|        show-now="showBuildDialogCounter"
 | |
|        repository="repository"
 | |
|        build-started="handleBuildStarted(build)">
 | |
|   </div>
 | |
| 
 | |
|   <!-- Manual trigger dialog -->
 | |
|   <div class="manual-trigger-build-dialog"
 | |
|        repository="repository"
 | |
|        trigger="currentStartTrigger"
 | |
|        counter="showTriggerStartDialogCounter"
 | |
|        build-started="handleBuildStarted(build)"></div>
 | |
| 
 | |
|   <!-- /Dialogs -->
 | |
| </div>
 |