index.html.haml 6.5 KB
Newer Older
1
- breadcrumb_title _('Runners')
2
- @no_container = true
3

Valery Sizov's avatar
Valery Sizov committed
4
%div{ class: container_class }
5 6 7 8 9 10 11 12
  .row
    .col-sm-6
      .bs-callout
        %p
          = (_"A 'Runner' is a process which runs a job. You can set up as many Runners as you need.")
          %br
          = _('Runners can be placed on separate users, servers, even on your local machine.')
          %br
13

14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
        %div
          %span= _('Each Runner can be in one of the following states:')
          %ul
            %li
              %span.badge.badge-success shared
              \-
              = _('Runner runs jobs from all unassigned projects')
            %li
              %span.badge.badge-success group
              \-
              = _('Runner runs jobs from all unassigned projects in its group')
            %li
              %span.badge.badge-info specific
              \-
              = _('Runner runs jobs from assigned projects')
            %li
              %span.badge.badge-warning locked
              \-
              = _('Runner cannot be assigned to other projects')
            %li
              %span.badge.badge-danger paused
              \-
              = _('Runner will not receive any new jobs')
37

38 39 40 41 42 43
    .col-sm-6
      .bs-callout
        = render partial: 'ci/runner/how_to_setup_runner',
                 locals: { registration_token: Gitlab::CurrentSettings.runners_registration_token,
                           type: 'shared',
                           reset_token_url: reset_registration_token_admin_application_settings_path }
44

45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79
  .row
    .col-sm-9
      = form_tag admin_runners_path, id: 'runners-search', method: :get, class: 'filter-form js-filter-form' do
        .filtered-search-wrapper
          .filtered-search-box
            = dropdown_tag(custom_icon('icon_history'),
              options: { wrapper_class: 'filtered-search-history-dropdown-wrapper',
              toggle_class: 'filtered-search-history-dropdown-toggle-button',
              dropdown_class: 'filtered-search-history-dropdown',
              content_class: 'filtered-search-history-dropdown-content',
              title: _('Recent searches') }) do
              .js-filtered-search-history-dropdown{ data: { full_path: admin_runners_path } }
            .filtered-search-box-input-container.droplab-dropdown
              .scroll-container
                %ul.tokens-container.list-unstyled
                  %li.input-token
                    %input.form-control.filtered-search{ { id: 'filtered-search-runners', placeholder: _('Search or filter results...') } }
              #js-dropdown-hint.filtered-search-input-dropdown-menu.dropdown-menu.hint-dropdown
                %ul{ data: { dropdown: true } }
                  %li.filter-dropdown-item{ data: { action: 'submit' } }
                    = button_tag class: %w[btn btn-link] do
                      = sprite_icon('search')
                      %span
                        = _('Press Enter or click to search')
                %ul.filter-dropdown{ data: { dynamic: true, dropdown: true } }
                  %li.filter-dropdown-item
                    = button_tag class: %w[btn btn-link] do
                      -# Encapsulate static class name `{{icon}}` inside #{} to bypass
                      -# haml lint's ClassAttributeWithStaticValue
                      %svg
                        %use{ 'xlink:href': "#{'{{icon}}'}" }
                      %span.js-filter-hint
                        {{hint}}
                      %span.js-filter-tag.dropdown-light-content
                        {{tag}}
80

81 82 83 84 85 86
              #js-dropdown-admin-runner-status.filtered-search-input-dropdown-menu.dropdown-menu
                %ul{ data: { dropdown: true } }
                  - Ci::Runner::AVAILABLE_STATUSES.each do |status|
                    %li.filter-dropdown-item{ data: { value: status } }
                      = button_tag class: %w[btn btn-link] do
                        = status.titleize
87

88 89 90 91 92 93
              #js-dropdown-admin-runner-type.filtered-search-input-dropdown-menu.dropdown-menu
                %ul{ data: { dropdown: true } }
                  - Ci::Runner::AVAILABLE_TYPES.each do |runner_type|
                    %li.filter-dropdown-item{ data: { value: runner_type } }
                      = button_tag class: %w[btn btn-link] do
                        = runner_type.titleize
94

95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110
            #js-dropdown-admin-runner-type.filtered-search-input-dropdown-menu.dropdown-menu
              %ul{ data: { dropdown: true } }
                - Ci::Runner::AVAILABLE_TYPES.each do |runner_type|
                  %li.filter-dropdown-item{ data: { value: runner_type } }
                    = button_tag class: %w[btn btn-link] do
                      = runner_type.titleize

            #js-dropdown-runner-tag.filtered-search-input-dropdown-menu.dropdown-menu
              %ul{ data: { dropdown: true } }
                %li.filter-dropdown-item{ data: { value: 'none' } }
                  %button.btn.btn-link
                    = _('No Tag')
                %li.divider.droplab-item-ignore
              %ul.filter-dropdown{ data: { dynamic: true, dropdown: true } }
                %li.filter-dropdown-item
                  %button.btn.btn-link.js-data-value
111 112
                    %span.dropdown-light-content
                      {{name}}
113

114 115 116 117
            = button_tag class: %w[clear-search hidden] do
              = icon('times')
          .filter-dropdown-container
            = render 'sort_dropdown'
118

119 120
    .col-sm-3.text-right-lg
      = _('Runners currently online: %{active_runners_count}') % { active_runners_count: @active_runners_count }
121

122
  - if @runners.any?
123
    .runners-content.content-list
124
      .table-holder
125
        .gl-responsive-table-row.table-row-header{ role: 'row' }
126 127
          .table-section.section-10{ role: 'rowheader' }= _('Type')
          .table-section.section-10{ role: 'rowheader' }= _('Runner token')
128 129
          .table-section.section-20{ role: 'rowheader' }= _('Description')
          .table-section.section-10{ role: 'rowheader' }= _('Version')
130 131 132 133 134 135
          .table-section.section-10{ role: 'rowheader' }= _('IP Address')
          .table-section.section-5{ role: 'rowheader' }= _('Projects')
          .table-section.section-5{ role: 'rowheader' }= _('Jobs')
          .table-section.section-10{ role: 'rowheader' }= _('Tags')
          .table-section.section-10{ role: 'rowheader' }= _('Last contact')
          .table-section.section-10{ role: 'rowheader' }
136

137
        - @runners.each do |runner|
138 139
          = render 'admin/runners/runner', runner: runner
      = paginate @runners, theme: 'gitlab'
140
  - else
141
    .nothing-here-block= _('No runners found')