Skip to content
Snippets Groups Projects
Commit a986341a authored by Sincheol (David) Kim's avatar Sincheol (David) Kim
Browse files

Merge branch '354040-paginate-shared-runners-ci-cd-projects' into 'master'

Paginate shared runners in CI/CD settings

See merge request !104564



Merged-by: default avatarSincheol (David) Kim <dkim@gitlab.com>
Approved-by: default avatarArtur Fedorov <afedorov@gitlab.com>
Approved-by: Kassio Borges's avatarKassio Borges <kborges@gitlab.com>
Approved-by: Nick Leonard's avatarNick Leonard <nleonard@gitlab.com>
Approved-by: default avatarKushal Pandya <kushalspandya@gmail.com>
Approved-by: default avatarSincheol (David) Kim <dkim@gitlab.com>
Approved-by: default avatarAleksandr Lyubenkov <alyubenkov@gitlab.com>
Co-authored-by: Miguel Rincon's avatarMiguel Rincon <mrincon@gitlab.com>
parents c8ff28ea 759dab2c
No related branches found
No related tags found
1 merge request!104564Paginate shared runners in CI/CD settings
Pipeline #702614649 passed
......@@ -122,9 +122,9 @@ def define_runners_variables
.page(params[:specific_page]).per(NUMBER_OF_RUNNERS_PER_PAGE)
.with_tags
@shared_runners = ::Ci::Runner.instance_type.active.with_tags
@shared_runners_count = @shared_runners.count(:all)
active_shared_runners = ::Ci::Runner.instance_type.active
@shared_runners_count = active_shared_runners.count(:all)
@shared_runners = active_shared_runners.page(params[:shared_runners_page]).per(NUMBER_OF_RUNNERS_PER_PAGE).with_tags
@group_runners = ::Ci::Runner.belonging_to_parent_group_of_project(@project.id).with_tags
end
......
......@@ -6,5 +6,7 @@
= _('This GitLab instance does not provide any shared runners yet. Instance administrators can register shared runners in the admin area.')
- else
%h5.gl-mt-6.gl-mb-0 #{_('Available shared runners:')} #{@shared_runners_count}
%ul.bordered-list.available-shared-runners
= render partial: 'projects/runners/runner', collection: @shared_runners, as: :runner
%div{ data: { testid: 'available-shared-runners' } }
%ul.bordered-list
= render partial: 'projects/runners/runner', collection: @shared_runners, as: :runner
= paginate @shared_runners, theme: "gitlab", param_name: "shared_runners_page", params: { expand_runners: true, anchor: 'js-runners-settings' }
......@@ -42,13 +42,24 @@
let_it_be(:project_runner) { create(:ci_runner, :project, projects: [other_project]) }
let_it_be(:shared_runner) { create(:ci_runner, :instance) }
it 'sets assignable project runners only' do
before do
group.add_maintainer(user)
end
get :show, params: { namespace_id: project.namespace, project_id: project }
subject { get :show, params: { namespace_id: project.namespace, project_id: project } }
it 'sets assignable project runners only' do
subject
expect(assigns(:assignable_runners)).to contain_exactly(project_runner)
end
it 'sets shared runners' do
subject
expect(assigns(:shared_runners_count)).to be(1)
expect(assigns(:shared_runners)).to contain_exactly(shared_runner)
end
end
context 'prevents N+1 queries for tags' do
......
......@@ -117,11 +117,27 @@
it 'user sees CI/CD setting page' do
visit project_runners_path(project)
expect(page.find('.available-shared-runners')).to have_content(shared_runner.display_name)
within '[data-testid="available-shared-runners"]' do
expect(page).to have_content(shared_runner.display_name)
end
end
context 'when multiple shared runners are configured' do
let!(:shared_runner_2) { create(:ci_runner, :instance) }
it 'adds pagination to the shared runner list' do
stub_const('Projects::Settings::CiCdController::NUMBER_OF_RUNNERS_PER_PAGE', 1)
visit project_runners_path(project)
within '[data-testid="available-shared-runners"]' do
expect(find('.pagination')).not_to be_nil
end
end
end
end
context 'when multiple runners are configured' do
context 'when multiple project runners are configured' do
let!(:project_runner_2) { create(:ci_runner, :project, projects: [project]) }
it 'adds pagination to the runner list' do
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment