diff --git a/app/controllers/projects/settings/ci_cd_controller.rb b/app/controllers/projects/settings/ci_cd_controller.rb index 8ac83edef8d263eb586f4989babbf9918ffc38b7..f76278a12a4100023f3741663492d86173a912c4 100644 --- a/app/controllers/projects/settings/ci_cd_controller.rb +++ b/app/controllers/projects/settings/ci_cd_controller.rb @@ -5,6 +5,8 @@ module Settings class CiCdController < Projects::ApplicationController include RunnerSetupScripts + NUMBER_OF_RUNNERS_PER_PAGE = 20 + before_action :authorize_admin_pipeline! before_action :define_variables before_action do @@ -108,13 +110,13 @@ def define_variables end def define_runners_variables - @project_runners = @project.runners.ordered + @project_runners = @project.runners.ordered.page(params[:project_page]).per(NUMBER_OF_RUNNERS_PER_PAGE).with_tags @assignable_runners = current_user .ci_owned_runners .assignable_for(project) .ordered - .page(params[:page]).per(20) + .page(params[:specific_page]).per(NUMBER_OF_RUNNERS_PER_PAGE) @shared_runners = ::Ci::Runner.instance_type.active diff --git a/app/views/projects/runners/_runner.html.haml b/app/views/projects/runners/_runner.html.haml index 74b6e981c008a028e0732772006571f9728a0fff..1a3ba69018468a7f8b0c57f2b9428f77d5c6cd49 100644 --- a/app/views/projects/runners/_runner.html.haml +++ b/app/views/projects/runners/_runner.html.haml @@ -37,8 +37,8 @@ - if runner.description.present? %p.runner-description = runner.description - - if runner.tag_list.present? + - if runner.tags.present? %p - - runner.tag_list.sort.each do |tag| + - runner.tags.map(&:name).sort.each do |tag| %span.badge.badge-primary = tag diff --git a/app/views/projects/runners/_specific_runners.html.haml b/app/views/projects/runners/_specific_runners.html.haml index d7fe141e802f16310977f92adbd516c70f78ea67..e02e2cc784a0206b4e5c9cbdf55edf9ceb12a3cd 100644 --- a/app/views/projects/runners/_specific_runners.html.haml +++ b/app/views/projects/runners/_specific_runners.html.haml @@ -17,9 +17,10 @@ %h4.underlined-title= _('Runners activated for this project') %ul.bordered-list.activated-specific-runners = render partial: 'projects/runners/runner', collection: @project_runners, as: :runner + = paginate @project_runners, theme: "gitlab", param_name: "project_page", params: { expand_runners: true, anchor: 'js-runners-settings' } - if @assignable_runners.any? %h4.underlined-title= _('Available specific runners') %ul.bordered-list.available-specific-runners = render partial: 'projects/runners/runner', collection: @assignable_runners, as: :runner - = paginate @assignable_runners, theme: "gitlab", :params => { :anchor => '#js-runners-settings' } + = paginate @assignable_runners, theme: "gitlab", param_name: "specific_page", :params => { :anchor => 'js-runners-settings'} diff --git a/app/views/projects/settings/ci_cd/show.html.haml b/app/views/projects/settings/ci_cd/show.html.haml index 31669a11b8e7e411417dcc863c6aab672170b403..f6ecb92310036039e0ff125d73ef1783c6c26a65 100644 --- a/app/views/projects/settings/ci_cd/show.html.haml +++ b/app/views/projects/settings/ci_cd/show.html.haml @@ -33,7 +33,7 @@ = render_if_exists 'projects/settings/ci_cd/protected_environments', expanded: expanded -%section.settings.no-animate#js-runners-settings{ class: ('expanded' if expanded), data: { qa_selector: 'runners_settings_content' } } +%section.settings.no-animate#js-runners-settings{ class: ('expanded' if expanded || params[:expand_runners]), data: { qa_selector: 'runners_settings_content' } } .settings-header %h4 = _("Runners") diff --git a/changelogs/unreleased/jivanvl-add-pagination-specific-runners.yml b/changelogs/unreleased/jivanvl-add-pagination-specific-runners.yml new file mode 100644 index 0000000000000000000000000000000000000000..4f5a60c7ff6695978d43b5428380a14d5437a4b5 --- /dev/null +++ b/changelogs/unreleased/jivanvl-add-pagination-specific-runners.yml @@ -0,0 +1,5 @@ +--- +title: Paginate project_runners in ci_cd settings +merge_request: 45830 +author: +type: fixed diff --git a/spec/features/runners_spec.rb b/spec/features/runners_spec.rb index 6e18de3be7ba29836e0b04a93f6c2d051317921f..9697e10c3d18c9dfb1f83ad130f281208de70a21 100644 --- a/spec/features/runners_spec.rb +++ b/spec/features/runners_spec.rb @@ -122,6 +122,19 @@ end end + context 'when multiple runners are configured' do + let!(:specific_runner) { create(:ci_runner, :project, projects: [project]) } + let!(:specific_runner_2) { create(:ci_runner, :project, projects: [project]) } + + it 'adds pagination to the runner list' do + stub_const('Projects::Settings::CiCdController::NUMBER_OF_RUNNERS_PER_PAGE', 1) + + visit project_runners_path(project) + + expect(find('.pagination')).not_to be_nil + end + end + context 'when a specific runner exists in another project' do let(:another_project) { create(:project) } let!(:specific_runner) { create(:ci_runner, :project, projects: [another_project]) }