From d6d24f574f74bba619176729da2ad1d12b6d95b3 Mon Sep 17 00:00:00 2001 From: "allison.browne" Date: Fri, 13 Nov 2020 09:35:45 -0500 Subject: [PATCH 1/7] Split merge pipelines and merge trains chackboxes Split settings for pipelines for merge results and serge trains --- ...e_request_merge_options_settings.html.haml | 1 + ...01112195322_reseed_merge_trains_enabled.rb | 19 +++++++ db/schema_migrations/20201112195322 | 1 + .../pipelines_for_merged_results/index.md | 2 +- .../merge_trains/index.md | 3 +- ee/app/controllers/ee/projects_controller.rb | 9 ++- ee/app/models/ee/project.rb | 3 +- ee/app/models/ee/project_ci_cd_setting.rb | 2 +- .../_merge_pipelines_settings.html.haml | 4 +- .../projects/_merge_trains_settings.html.haml | 12 ++++ ...ed-results-and-merge-train-check-boxes.yml | 5 ++ .../controllers/projects_controller_spec.rb | 43 ++++++++++++++ .../user_merges_immediately_spec.rb | 1 + .../two_merge_requests_on_train_spec.rb | 1 + ..._adds_merge_request_to_merge_train_spec.rb | 1 + ...merge_train_when_pipeline_succeeds_spec.rb | 2 + .../user_manages_merge_pipelines_spec.rb | 2 +- .../user_manages_merge_trains_spec.rb | 56 +++++++++++++++++++ ee/spec/models/project_ci_cd_setting_spec.rb | 29 ++++++---- .../merge_request_poll_widget_entity_spec.rb | 1 + ...ain_when_pipeline_succeeds_service_spec.rb | 8 ++- .../auto_merge/merge_train_service_spec.rb | 17 +++++- .../merge_trains/check_status_service_spec.rb | 1 + .../create_pipeline_service_spec.rb | 17 +++++- .../refresh_merge_request_service_spec.rb | 15 +++++ .../reseed_merge_trains_enabled_spec.rb | 28 ++++++++++ 26 files changed, 254 insertions(+), 29 deletions(-) create mode 100644 db/migrate/20201112195322_reseed_merge_trains_enabled.rb create mode 100644 db/schema_migrations/20201112195322 create mode 100644 ee/app/views/projects/_merge_trains_settings.html.haml create mode 100644 ee/changelogs/unreleased/244831-split-pipelines-for-merged-results-and-merge-train-check-boxes.yml create mode 100644 ee/spec/features/projects/settings/user_manages_merge_trains_spec.rb create mode 100644 spec/migrations/reseed_merge_trains_enabled_spec.rb diff --git a/app/views/projects/_merge_request_merge_options_settings.html.haml b/app/views/projects/_merge_request_merge_options_settings.html.haml index 047b4dafbfc40f..8951f2ed22fb34 100644 --- a/app/views/projects/_merge_request_merge_options_settings.html.haml +++ b/app/views/projects/_merge_request_merge_options_settings.html.haml @@ -4,6 +4,7 @@ %b= s_('ProjectSettings|Merge options') %p.text-secondary= s_('ProjectSettings|Additional merge request capabilities that influence how and when merges will be performed') = render_if_exists 'projects/merge_pipelines_settings', form: form + = render_if_exists 'projects/merge_trains_settings', form: form .form-check.mb-2 = form.check_box :resolve_outdated_diff_discussions, class: 'form-check-input' = form.label :resolve_outdated_diff_discussions, class: 'form-check-label' do diff --git a/db/migrate/20201112195322_reseed_merge_trains_enabled.rb b/db/migrate/20201112195322_reseed_merge_trains_enabled.rb new file mode 100644 index 00000000000000..777c59d16b1fe1 --- /dev/null +++ b/db/migrate/20201112195322_reseed_merge_trains_enabled.rb @@ -0,0 +1,19 @@ +# frozen_string_literal: true + +class ReseedMergeTrainsEnabled < ActiveRecord::Migration[6.0] + include Gitlab::Database::MigrationHelpers + + DOWNTIME = false + + disable_ddl_transaction! + + def up + update_column_in_batches(:project_ci_cd_settings, :merge_trains_enabled, true) do |table, query| + query.where(table[:merge_pipelines_enabled].eq(true)) + end + end + + def down + # no-op + end +end diff --git a/db/schema_migrations/20201112195322 b/db/schema_migrations/20201112195322 new file mode 100644 index 00000000000000..ba4c7e9d50f238 --- /dev/null +++ b/db/schema_migrations/20201112195322 @@ -0,0 +1 @@ +644bf793b3b62330bfb1f4dc406e6dd01cbcf4651ebfd2873fb551c757c8a3b4 \ No newline at end of file diff --git a/doc/ci/merge_request_pipelines/pipelines_for_merged_results/index.md b/doc/ci/merge_request_pipelines/pipelines_for_merged_results/index.md index 2330bdb4c7cd0a..9c6fbba1337672 100644 --- a/doc/ci/merge_request_pipelines/pipelines_for_merged_results/index.md +++ b/doc/ci/merge_request_pipelines/pipelines_for_merged_results/index.md @@ -56,7 +56,7 @@ To enable pipelines for merged results for your project: 1. [Configure your CI/CD configuration file](../index.md#configuring-pipelines-for-merge-requests) so that the pipeline or individual jobs run for merge requests. 1. Visit your project's **Settings > General** and expand **Merge requests**. -1. Check **Enable merge trains and pipelines for merged results**. +1. Check **Enable merged results pipelines.**. 1. Click **Save changes**. CAUTION: **Caution:** diff --git a/doc/ci/merge_request_pipelines/pipelines_for_merged_results/merge_trains/index.md b/doc/ci/merge_request_pipelines/pipelines_for_merged_results/merge_trains/index.md index c5d9901164536b..306ae196cb4cd7 100644 --- a/doc/ci/merge_request_pipelines/pipelines_for_merged_results/merge_trains/index.md +++ b/doc/ci/merge_request_pipelines/pipelines_for_merged_results/merge_trains/index.md @@ -83,7 +83,8 @@ To enable merge trains for your project: 1. [Configure your CI/CD configuration file](../../index.md#configuring-pipelines-for-merge-requests) so that the pipeline or individual jobs run for merge requests. 1. Visit your project's **Settings > General** and expand **Merge requests**. -1. Check **Enable merge trains and pipelines for merged results**. +1. Check **Enable merged results pipelines.**. +1. Check **Enable merge trains.**. 1. Click **Save changes**. CAUTION: **Caution:** diff --git a/ee/app/controllers/ee/projects_controller.rb b/ee/app/controllers/ee/projects_controller.rb index b65a32350fa5d1..7c9fddfec79c51 100644 --- a/ee/app/controllers/ee/projects_controller.rb +++ b/ee/app/controllers/ee/projects_controller.rb @@ -88,9 +88,8 @@ def project_params_ee group_with_project_templates_id ] - if allow_merge_pipelines_params? - attrs << %i[merge_pipelines_enabled] - end + attrs << %i[merge_pipelines_enabled] if allow_merge_pipelines_params? + attrs << %i[merge_trains_enabled] if allow_merge_trains_params? attrs += merge_request_rules_params @@ -144,6 +143,10 @@ def allow_merge_pipelines_params? project&.feature_available?(:merge_pipelines) end + def allow_merge_trains_params? + project&.feature_available?(:merge_trains) + end + def compliance_framework_params return [] unless current_user.can?(:admin_compliance_framework, project) diff --git a/ee/app/models/ee/project.rb b/ee/app/models/ee/project.rb index 9b6070e580686d..f54279b7b4cc01 100644 --- a/ee/app/models/ee/project.rb +++ b/ee/app/models/ee/project.rb @@ -186,7 +186,8 @@ def lock_for_confirmation!(id) to: :import_state, prefix: :mirror, allow_nil: true delegate :merge_pipelines_enabled, :merge_pipelines_enabled=, :merge_pipelines_enabled?, :merge_pipelines_were_disabled?, to: :ci_cd_settings - delegate :merge_trains_enabled?, to: :ci_cd_settings + delegate :merge_trains_enabled, :merge_trains_enabled=, :merge_trains_enabled?, to: :ci_cd_settings + delegate :auto_rollback_enabled, :auto_rollback_enabled=, :auto_rollback_enabled?, to: :ci_cd_settings delegate :closest_gitlab_subscription, to: :namespace delegate :jira_vulnerabilities_integration_enabled?, to: :jira_service, allow_nil: true diff --git a/ee/app/models/ee/project_ci_cd_setting.rb b/ee/app/models/ee/project_ci_cd_setting.rb index 766e1487201bce..f60f3134cd6c65 100644 --- a/ee/app/models/ee/project_ci_cd_setting.rb +++ b/ee/app/models/ee/project_ci_cd_setting.rb @@ -16,7 +16,7 @@ def merge_pipelines_enabled? def merge_trains_enabled? return false if ::Feature.enabled?(:disable_merge_trains, project) - merge_pipelines_enabled? && project.feature_available?(:merge_trains) + merge_pipelines_enabled? && project.feature_available?(:merge_trains) && super end def merge_pipelines_were_disabled? diff --git a/ee/app/views/projects/_merge_pipelines_settings.html.haml b/ee/app/views/projects/_merge_pipelines_settings.html.haml index 112bbfaea0d59d..92de4313cbe943 100644 --- a/ee/app/views/projects/_merge_pipelines_settings.html.haml +++ b/ee/app/views/projects/_merge_pipelines_settings.html.haml @@ -3,9 +3,9 @@ .form-check.builds-feature = form.check_box :merge_pipelines_enabled, class: 'form-check-input js-merge-options-merge-pipelines', data: { qa_selector: 'merged_results_pipeline_checkbox' } = form.label :merge_pipelines_enabled, class: 'form-check-label' do - = s_('ProjectSettings|Enable merge trains and pipelines for merged results') + = s_('ProjectSettings|Enable merged results pipelines.') .text-secondary.mb-2 - = s_('ProjectSettings|Pipelines for merge requests must be enabled in the CI/CD configuration file, or pipelines could be unresolvable or dropped') + = s_('ProjectSettings|If pipelines for merge requests are enabled in the CI/CD configuration file, pipelines validate the combined results of the source and target branches.') = link_to sprite_icon('question-o'), help_page_path('ci/merge_request_pipelines/index.md', anchor: 'configuring-pipelines-for-merge-requests'), diff --git a/ee/app/views/projects/_merge_trains_settings.html.haml b/ee/app/views/projects/_merge_trains_settings.html.haml new file mode 100644 index 00000000000000..42100fffb24b08 --- /dev/null +++ b/ee/app/views/projects/_merge_trains_settings.html.haml @@ -0,0 +1,12 @@ +- return unless merge_trains_available? + +.form-check.builds-feature2 + = form.check_box :merge_trains_enabled, class: 'form-check-input js-merge-options-merge-trains' + = form.label :merge_trains_enabled, class: 'form-check-label' do + = s_('ProjectSettings|Enable merge trains.') + .text-secondary.mb-2 + = s_('ProjectSettings|When approved for merge, merge requests are queued and pipelines validate the combined results of the source and target branches before merge.') + = link_to sprite_icon('question-o'), + help_page_path('ci/merge_request_pipelines/pipelines_for_merged_results/merge_trains/index.md', + anchor: 'merge-trains'), + target: '_blank' diff --git a/ee/changelogs/unreleased/244831-split-pipelines-for-merged-results-and-merge-train-check-boxes.yml b/ee/changelogs/unreleased/244831-split-pipelines-for-merged-results-and-merge-train-check-boxes.yml new file mode 100644 index 00000000000000..19b29eeb86d2b9 --- /dev/null +++ b/ee/changelogs/unreleased/244831-split-pipelines-for-merged-results-and-merge-train-check-boxes.yml @@ -0,0 +1,5 @@ +--- +title: Split 'Pipelines for merged results' and 'Merge Train' check boxes +merge_request: 46357 +author: +type: changed diff --git a/ee/spec/controllers/projects_controller_spec.rb b/ee/spec/controllers/projects_controller_spec.rb index 87327a424ea46c..42cf314761884a 100644 --- a/ee/spec/controllers/projects_controller_spec.rb +++ b/ee/spec/controllers/projects_controller_spec.rb @@ -311,6 +311,49 @@ end end + context 'when merge_trains_enabled param is specified' do + let(:params) { { merge_trains_enabled: true } } + + let(:request) do + put :update, params: { namespace_id: project.namespace, id: project, project: params } + end + + before do + stub_licensed_features(merge_pipelines: true) + stub_licensed_features(merge_trains: true) + end + + it 'updates the attribute' do + request + + expect(project.reload.merge_trains_enabled).to be_truthy + end + + context 'when feature flag is disabled' do + before do + stub_feature_flags(merge_trains: false) + end + + it 'does not update the attribute' do + request + + expect(project.reload.merge_trains_enabled).to be_falsy + end + end + + context 'when license is not sufficient' do + before do + stub_licensed_features(merge_trains: false) + end + + it 'does not update the attribute' do + request + + expect(project.reload.merge_trains_enabled).to be_falsy + end + end + end + context 'when auto_rollback_enabled param is specified' do let(:params) { { auto_rollback_enabled: true } } diff --git a/ee/spec/features/merge_request/user_merges_immediately_spec.rb b/ee/spec/features/merge_request/user_merges_immediately_spec.rb index 7875658725f59f..15cdad90e71ddf 100644 --- a/ee/spec/features/merge_request/user_merges_immediately_spec.rb +++ b/ee/spec/features/merge_request/user_merges_immediately_spec.rb @@ -19,6 +19,7 @@ before_all do project.add_maintainer(user) project.update!(merge_pipelines_enabled: true) + project.update!(merge_trains_enabled: true) merge_request.all_pipelines.first.succeed! merge_request.update_head_pipeline end diff --git a/ee/spec/features/merge_trains/two_merge_requests_on_train_spec.rb b/ee/spec/features/merge_trains/two_merge_requests_on_train_spec.rb index 2bcaa939c3eef5..aec74e9b86244d 100644 --- a/ee/spec/features/merge_trains/two_merge_requests_on_train_spec.rb +++ b/ee/spec/features/merge_trains/two_merge_requests_on_train_spec.rb @@ -33,6 +33,7 @@ project.add_maintainer(maintainer_2) stub_licensed_features(merge_pipelines: true, merge_trains: true) project.update!(merge_pipelines_enabled: true) + project.update!(merge_trains_enabled: true) stub_ci_pipeline_yaml_file(YAML.dump(ci_yaml)) head_pipeline = double('Ci::Pipeline') diff --git a/ee/spec/features/merge_trains/user_adds_merge_request_to_merge_train_spec.rb b/ee/spec/features/merge_trains/user_adds_merge_request_to_merge_train_spec.rb index 9a03490f05eb12..e0023b1f189b21 100644 --- a/ee/spec/features/merge_trains/user_adds_merge_request_to_merge_train_spec.rb +++ b/ee/spec/features/merge_trains/user_adds_merge_request_to_merge_train_spec.rb @@ -21,6 +21,7 @@ stub_licensed_features(merge_pipelines: true, merge_trains: true) project.add_maintainer(user) project.update!(merge_pipelines_enabled: true) + project.update!(merge_trains_enabled: true) merge_request.all_pipelines.first.succeed! merge_request.update_head_pipeline stub_ci_pipeline_yaml_file(YAML.dump(ci_yaml)) diff --git a/ee/spec/features/merge_trains/user_adds_to_merge_train_when_pipeline_succeeds_spec.rb b/ee/spec/features/merge_trains/user_adds_to_merge_train_when_pipeline_succeeds_spec.rb index 724f139eb422f3..5ce99883d3e1d5 100644 --- a/ee/spec/features/merge_trains/user_adds_to_merge_train_when_pipeline_succeeds_spec.rb +++ b/ee/spec/features/merge_trains/user_adds_to_merge_train_when_pipeline_succeeds_spec.rb @@ -19,6 +19,8 @@ stub_licensed_features(merge_pipelines: true, merge_trains: true) project.add_maintainer(user) project.update!(merge_pipelines_enabled: true) + project.update!(merge_trains_enabled: true) + merge_request.update_head_pipeline sign_in(user) diff --git a/ee/spec/features/projects/settings/user_manages_merge_pipelines_spec.rb b/ee/spec/features/projects/settings/user_manages_merge_pipelines_spec.rb index 566a47981d7c61..f1f4be779cc80e 100644 --- a/ee/spec/features/projects/settings/user_manages_merge_pipelines_spec.rb +++ b/ee/spec/features/projects/settings/user_manages_merge_pipelines_spec.rb @@ -23,7 +23,7 @@ before do visit edit_project_path(project) - check('Enable merge trains and pipelines for merged results') + check('Enable merged results pipelines.') end it 'sees enabled merge pipeline checkbox' do diff --git a/ee/spec/features/projects/settings/user_manages_merge_trains_spec.rb b/ee/spec/features/projects/settings/user_manages_merge_trains_spec.rb new file mode 100644 index 00000000000000..988a731ef45130 --- /dev/null +++ b/ee/spec/features/projects/settings/user_manages_merge_trains_spec.rb @@ -0,0 +1,56 @@ +# frozen_string_literal: true + +require 'spec_helper' + +RSpec.describe 'User manages merge pipelines option', :js do + let(:project) { create(:project) } + let(:user) { create(:user) } + + before do + stub_licensed_features(merge_pipelines: true) + stub_licensed_features(merge_trains: true) + + project.add_maintainer(user) + sign_in(user) + end + + it 'sees unchecked merge pipeline checkbox' do + visit edit_project_path(project) + + expect(page.find('#project_merge_trains_enabled')).not_to be_checked + end + + context 'when user enabled the checkbox' do + before do + visit edit_project_path(project) + + check('Enable merge trains.') + end + + it 'sees enabled merge pipeline checkbox' do + expect(page.find('#project_merge_trains_enabled')).to be_checked + end + end + + context 'when license is insufficient' do + before do + stub_licensed_features(merge_pipelines: false) + stub_licensed_features(merge_trains: false) + end + + it 'does not see the checkbox' do + expect(page).not_to have_css('#project_merge_trains_enabled') + end + end + + context 'when feature flag is disabled' do + before do + stub_feature_flags(merge_pipelines: false) + stub_feature_flags(merge_trains: false) + end + + it 'does not see the checkbox' do + expect(page).not_to have_css('#project_merge_trains_enabled') + end + end +end diff --git a/ee/spec/models/project_ci_cd_setting_spec.rb b/ee/spec/models/project_ci_cd_setting_spec.rb index 53082defe0ab1f..297d4b6cda724b 100644 --- a/ee/spec/models/project_ci_cd_setting_spec.rb +++ b/ee/spec/models/project_ci_cd_setting_spec.rb @@ -3,6 +3,8 @@ require 'spec_helper' RSpec.describe ProjectCiCdSetting do + using RSpec::Parameterized::TableSyntax + before do stub_feature_flags(disable_merge_trains: false) end @@ -47,25 +49,30 @@ end describe '#merge_trains_enabled?' do - subject { project.merge_trains_enabled? } + subject(:result) { project.merge_trains_enabled? } let(:project) { create(:project) } - context 'when Merge trains (EEP) is available' do - before do - stub_licensed_features(merge_pipelines: true, merge_trains: true) - project.merge_pipelines_enabled = true - end - - it { is_expected.to be_truthy } + where(:merge_pipelines_enabled, :merge_trains_enabled, :feature_avalible, :expected_result) do + true | true | true | true + true | false | true | false + false | false | true | false + true | true | false | false + true | false | false | false + false | false | false | false end - context 'when Merge trains (EEP) is unavailable' do + with_them do before do - stub_licensed_features(merge_trains: false) + stub_licensed_features(merge_pipelines: feature_avalible, merge_trains: feature_avalible) end - it { is_expected.to be_falsy } + it 'returns merge trains avalibility' do + project.update(merge_pipelines_enabled: merge_pipelines_enabled) + project.ci_cd_settings.update(merge_trains_enabled: merge_trains_enabled) + + expect(result).to eq(expected_result) + end end end diff --git a/ee/spec/serializers/merge_request_poll_widget_entity_spec.rb b/ee/spec/serializers/merge_request_poll_widget_entity_spec.rb index 2e80517bd8a1c0..7f88f2b1873d0b 100644 --- a/ee/spec/serializers/merge_request_poll_widget_entity_spec.rb +++ b/ee/spec/serializers/merge_request_poll_widget_entity_spec.rb @@ -25,6 +25,7 @@ before do stub_licensed_features(merge_pipelines: true, merge_trains: true) project.update!(merge_pipelines_enabled: true) + project.update!(merge_trains_enabled: true) end it 'has merge train entity' do diff --git a/ee/spec/services/auto_merge/add_to_merge_train_when_pipeline_succeeds_service_spec.rb b/ee/spec/services/auto_merge/add_to_merge_train_when_pipeline_succeeds_service_spec.rb index 30a7f28925735d..a905a92e4ee2d3 100644 --- a/ee/spec/services/auto_merge/add_to_merge_train_when_pipeline_succeeds_service_spec.rb +++ b/ee/spec/services/auto_merge/add_to_merge_train_when_pipeline_succeeds_service_spec.rb @@ -15,12 +15,16 @@ let(:pipeline) { merge_request.reload.all_pipelines.first } + before_all do + project.add_maintainer(user) + project.update!(merge_pipelines_enabled: true) + project.update!(merge_trains_enabled: true) + end + before do stub_feature_flags(ci_disallow_to_create_merge_request_pipelines_in_target_project: false) stub_feature_flags(disable_merge_trains: false) stub_licensed_features(merge_trains: true, merge_pipelines: true) - project.add_maintainer(user) - project.update!(merge_pipelines_enabled: true) allow(AutoMergeProcessWorker).to receive(:perform_async) { } merge_request.update_head_pipeline end diff --git a/ee/spec/services/auto_merge/merge_train_service_spec.rb b/ee/spec/services/auto_merge/merge_train_service_spec.rb index 255bbc43090caa..58f1eb33d57357 100644 --- a/ee/spec/services/auto_merge/merge_train_service_spec.rb +++ b/ee/spec/services/auto_merge/merge_train_service_spec.rb @@ -15,15 +15,18 @@ source_project: project, target_project: project) end - before do + before_all do project.add_maintainer(user) + project.update!(merge_pipelines_enabled: true) + project.update!(merge_trains_enabled: true) + end + before do allow(AutoMergeProcessWorker).to receive(:perform_async) { } stub_feature_flags(ci_disallow_to_create_merge_request_pipelines_in_target_project: false) stub_feature_flags(disable_merge_trains: false) stub_licensed_features(merge_trains: true, merge_pipelines: true) - project.update!(merge_pipelines_enabled: true) end describe '#execute' do @@ -349,7 +352,15 @@ 2.times { is_expected.to be_truthy } end - context 'when merge trains project option is disabled' do + context 'when merge trains flag is disabled' do + before do + project.update!(merge_trains_enabled: false) + end + + it { is_expected.to be_falsy } + end + + context 'when merge train ci setting is disabled' do before do stub_feature_flags(disable_merge_trains: true) end diff --git a/ee/spec/services/merge_trains/check_status_service_spec.rb b/ee/spec/services/merge_trains/check_status_service_spec.rb index a107b2b1e6385a..3511ae58eb0427 100644 --- a/ee/spec/services/merge_trains/check_status_service_spec.rb +++ b/ee/spec/services/merge_trains/check_status_service_spec.rb @@ -12,6 +12,7 @@ stub_feature_flags(disable_merge_trains: false) stub_licensed_features(merge_pipelines: true, merge_trains: true) project.update!(merge_pipelines_enabled: true) + project.update!(merge_trains_enabled: true) end describe '#execute' do diff --git a/ee/spec/services/merge_trains/create_pipeline_service_spec.rb b/ee/spec/services/merge_trains/create_pipeline_service_spec.rb index 3f94ca5148b310..38a49107a3210e 100644 --- a/ee/spec/services/merge_trains/create_pipeline_service_spec.rb +++ b/ee/spec/services/merge_trains/create_pipeline_service_spec.rb @@ -9,11 +9,12 @@ let(:previous_ref) { 'refs/heads/master' } before do + project.add_maintainer(maintainer) + project.update!(merge_pipelines_enabled: true) + project.update!(merge_trains_enabled: true) stub_feature_flags(ci_disallow_to_create_merge_request_pipelines_in_target_project: false) stub_feature_flags(disable_merge_trains: false) - project.add_maintainer(maintainer) stub_licensed_features(merge_pipelines: true, merge_trains: true) - project.update!(merge_pipelines_enabled: true) end describe '#execute' do @@ -35,7 +36,7 @@ end end - context 'when merge trains option is disabled' do + context 'when merge trains flag is disabled' do before do stub_feature_flags(disable_merge_trains: true) end @@ -45,6 +46,16 @@ end end + context 'when merge trains setting is disabled' do + before do + project.update!(merge_trains_enabled: false) + end + + it_behaves_like 'returns an error' do + let(:expected_reason) { 'merge trains is disabled' } + end + end + context 'when merge request is not on a merge train' do let!(:merge_request) do create(:merge_request, diff --git a/ee/spec/services/merge_trains/refresh_merge_request_service_spec.rb b/ee/spec/services/merge_trains/refresh_merge_request_service_spec.rb index 17aae941ebfe7e..600f601f64b8b8 100644 --- a/ee/spec/services/merge_trains/refresh_merge_request_service_spec.rb +++ b/ee/spec/services/merge_trains/refresh_merge_request_service_spec.rb @@ -13,6 +13,7 @@ project.add_maintainer(maintainer) stub_licensed_features(merge_pipelines: true, merge_trains: true) project.update!(merge_pipelines_enabled: true) + project.update!(merge_trains_enabled: true) end describe '#execute' do @@ -96,6 +97,20 @@ end end + context 'when merge trains not enabled' do + before do + project.update!(merge_trains_enabled: false) + end + + it_behaves_like 'drops the merge request from the merge train' do + let(:expected_reason) { 'project disabled merge trains' } + end + + after do + project.update!(merge_pipelines_enabled: true) + end + end + context 'when merge request is not under a mergeable state' do before do merge_request.update!(title: merge_request.wip_title) diff --git a/spec/migrations/reseed_merge_trains_enabled_spec.rb b/spec/migrations/reseed_merge_trains_enabled_spec.rb new file mode 100644 index 00000000000000..e7a314d8ae606c --- /dev/null +++ b/spec/migrations/reseed_merge_trains_enabled_spec.rb @@ -0,0 +1,28 @@ +# frozen_string_literal: true + +require 'spec_helper' +require Rails.root.join('db', 'migrate', '20201112195322_reseed_merge_trains_enabled.rb') + +RSpec.describe ReseedMergeTrainsEnabled do + describe 'migrate' do + let(:project_ci_cd_settings) { table(:project_ci_cd_settings) } + let(:projects) { table(:projects) } + let(:namespaces) { table(:namespaces) } + + context 'when on Gitlab.com' do + before do + namespace = namespaces.create!(name: 'hello', path: 'hello/') + project1 = projects.create!(namespace_id: namespace.id) + project2 = projects.create!(namespace_id: namespace.id) + project_ci_cd_settings.create!(project_id: project1.id, merge_pipelines_enabled: true) + project_ci_cd_settings.create!(project_id: project2.id, merge_pipelines_enabled: false) + end + + it 'updates merge_trains_enabled to true for where merge_pipelines_enabled is true' do + migrate! + + expect(project_ci_cd_settings.where(merge_trains_enabled: true).count).to be(1) + end + end + end +end -- GitLab From 5620887bb4d6746210872ad14b5c83287b380504 Mon Sep 17 00:00:00 2001 From: "allison.browne" Date: Fri, 13 Nov 2020 09:39:55 -0500 Subject: [PATCH 2/7] Doc fixes based on CR --- .../merge_trains/index.md | 16 ++++++++++------ locale/gitlab.pot | 14 ++++++++++---- 2 files changed, 20 insertions(+), 10 deletions(-) diff --git a/doc/ci/merge_request_pipelines/pipelines_for_merged_results/merge_trains/index.md b/doc/ci/merge_request_pipelines/pipelines_for_merged_results/merge_trains/index.md index 306ae196cb4cd7..809b984a74b62e 100644 --- a/doc/ci/merge_request_pipelines/pipelines_for_merged_results/merge_trains/index.md +++ b/doc/ci/merge_request_pipelines/pipelines_for_merged_results/merge_trains/index.md @@ -82,10 +82,13 @@ To enable merge trains for your project: 1. If you are on a self-managed GitLab instance, ensure the [feature flag](#merge-trains-feature-flag) is set correctly. 1. [Configure your CI/CD configuration file](../../index.md#configuring-pipelines-for-merge-requests) so that the pipeline or individual jobs run for merge requests. -1. Visit your project's **Settings > General** and expand **Merge requests**. -1. Check **Enable merged results pipelines.**. -1. Check **Enable merge trains.**. -1. Click **Save changes**. +1. Visit your project's **Settings > General** and expand **Merge requests** +1. Check **Enable merged results pipelines.** +1. Check **Enable merge trains.** +1. Click **Save changes** + +In GitLab 13.5 and earlier, there is only one checkbox, named +**Enable merge trains and pipelines for merged results**. CAUTION: **Caution:** If you select the check box but don't configure your CI/CD to use @@ -202,9 +205,10 @@ for more information. ### Merge Trains feature flag **(PREMIUM ONLY)** Merge trains are automatically enabled when [pipelines for merged results](../index.md#pipelines-for-merged-results) -are enabled. To use pipelines for merged results without using merge trains, you must +are enabled. To use pipelines for merged results without using merge trains, you can enable a [feature flag](../../../../user/feature_flags.md) that blocks the merge trains -feature. +feature or [disable the checkbox in settings](../index.md#enable-merge-trains). + [GitLab administrators with access to the GitLab Rails console](../../../../administration/feature_flags.md) can enable the feature flag to disable merge trains: diff --git a/locale/gitlab.pot b/locale/gitlab.pot index 9b14d4951a8891..8f9b809c5ecd2a 100644 --- a/locale/gitlab.pot +++ b/locale/gitlab.pot @@ -21222,7 +21222,10 @@ msgstr "" msgid "ProjectSettings|Enable 'Delete source branch' option by default" msgstr "" -msgid "ProjectSettings|Enable merge trains and pipelines for merged results" +msgid "ProjectSettings|Enable merge trains." +msgstr "" + +msgid "ProjectSettings|Enable merged results pipelines." msgstr "" msgid "ProjectSettings|Encourage" @@ -21264,6 +21267,9 @@ msgstr "" msgid "ProjectSettings|Global" msgstr "" +msgid "ProjectSettings|If pipelines for merge requests are enabled in the CI/CD configuration file, pipelines validate the combined results of the source and target branches." +msgstr "" + msgid "ProjectSettings|Internal" msgstr "" @@ -21324,9 +21330,6 @@ msgstr "" msgid "ProjectSettings|Pipelines" msgstr "" -msgid "ProjectSettings|Pipelines for merge requests must be enabled in the CI/CD configuration file, or pipelines could be unresolvable or dropped" -msgstr "" - msgid "ProjectSettings|Pipelines must succeed" msgstr "" @@ -21423,6 +21426,9 @@ msgstr "" msgid "ProjectSettings|View and edit files in this project. Non-project members will only have read access" msgstr "" +msgid "ProjectSettings|When approved for merge, merge requests are queued and pipelines validate the combined results of the source and target branches before merge." +msgstr "" + msgid "ProjectSettings|When conflicts arise the user is given the option to rebase" msgstr "" -- GitLab From fe51b81e2313b038dcf971d85620aa6e4ae21bc2 Mon Sep 17 00:00:00 2001 From: "allison.browne" Date: Fri, 13 Nov 2020 10:43:27 -0500 Subject: [PATCH 3/7] Doc lint fix --- .../pipelines_for_merged_results/merge_trains/index.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/doc/ci/merge_request_pipelines/pipelines_for_merged_results/merge_trains/index.md b/doc/ci/merge_request_pipelines/pipelines_for_merged_results/merge_trains/index.md index 809b984a74b62e..6a126ff8b81535 100644 --- a/doc/ci/merge_request_pipelines/pipelines_for_merged_results/merge_trains/index.md +++ b/doc/ci/merge_request_pipelines/pipelines_for_merged_results/merge_trains/index.md @@ -207,8 +207,7 @@ for more information. Merge trains are automatically enabled when [pipelines for merged results](../index.md#pipelines-for-merged-results) are enabled. To use pipelines for merged results without using merge trains, you can enable a [feature flag](../../../../user/feature_flags.md) that blocks the merge trains -feature or [disable the checkbox in settings](../index.md#enable-merge-trains). - +feature or [disable the checkbox in settings](index.md#enable-merge-trains). [GitLab administrators with access to the GitLab Rails console](../../../../administration/feature_flags.md) can enable the feature flag to disable merge trains: -- GitLab From c6b16f8ec741df81b2eb28cf7612eaf03b82ac3e Mon Sep 17 00:00:00 2001 From: "allison.browne" Date: Fri, 13 Nov 2020 16:57:25 -0500 Subject: [PATCH 4/7] Changes based on code review --- ee/app/views/projects/_merge_trains_settings.html.haml | 4 ++-- ee/spec/controllers/projects_controller_spec.rb | 8 ++++---- .../settings/user_manages_merge_trains_spec.rb | 4 ++-- ee/spec/models/project_ci_cd_setting_spec.rb | 10 +++++----- spec/migrations/reseed_merge_trains_enabled_spec.rb | 4 +--- 5 files changed, 14 insertions(+), 16 deletions(-) diff --git a/ee/app/views/projects/_merge_trains_settings.html.haml b/ee/app/views/projects/_merge_trains_settings.html.haml index 42100fffb24b08..311d8e37fa88a4 100644 --- a/ee/app/views/projects/_merge_trains_settings.html.haml +++ b/ee/app/views/projects/_merge_trains_settings.html.haml @@ -1,7 +1,7 @@ - return unless merge_trains_available? -.form-check.builds-feature2 - = form.check_box :merge_trains_enabled, class: 'form-check-input js-merge-options-merge-trains' +.form-check + = form.check_box :merge_trains_enabled, class: 'form-check-input' = form.label :merge_trains_enabled, class: 'form-check-label' do = s_('ProjectSettings|Enable merge trains.') .text-secondary.mb-2 diff --git a/ee/spec/controllers/projects_controller_spec.rb b/ee/spec/controllers/projects_controller_spec.rb index 42cf314761884a..14915b9da45e34 100644 --- a/ee/spec/controllers/projects_controller_spec.rb +++ b/ee/spec/controllers/projects_controller_spec.rb @@ -6,7 +6,7 @@ let_it_be(:user) { create(:user) } let_it_be(:group) { create(:group) } - let(:project) { create(:project) } + let_it_be(:project, reload: true) { create(:project) } let_it_be(:public_project) { create(:project, :public, :repository, namespace: group) } @@ -326,7 +326,7 @@ it 'updates the attribute' do request - expect(project.reload.merge_trains_enabled).to be_truthy + expect(project.merge_trains_enabled).to be_truthy end context 'when feature flag is disabled' do @@ -337,7 +337,7 @@ it 'does not update the attribute' do request - expect(project.reload.merge_trains_enabled).to be_falsy + expect(project.merge_trains_enabled).to be_falsy end end @@ -349,7 +349,7 @@ it 'does not update the attribute' do request - expect(project.reload.merge_trains_enabled).to be_falsy + expect(project.merge_trains_enabled).to be_falsy end end end diff --git a/ee/spec/features/projects/settings/user_manages_merge_trains_spec.rb b/ee/spec/features/projects/settings/user_manages_merge_trains_spec.rb index 988a731ef45130..709f085e4f52c8 100644 --- a/ee/spec/features/projects/settings/user_manages_merge_trains_spec.rb +++ b/ee/spec/features/projects/settings/user_manages_merge_trains_spec.rb @@ -3,8 +3,8 @@ require 'spec_helper' RSpec.describe 'User manages merge pipelines option', :js do - let(:project) { create(:project) } - let(:user) { create(:user) } + let_it_be(:project) { create(:project) } + let_it_be(:user) { create(:user) } before do stub_licensed_features(merge_pipelines: true) diff --git a/ee/spec/models/project_ci_cd_setting_spec.rb b/ee/spec/models/project_ci_cd_setting_spec.rb index 297d4b6cda724b..5bf89529612888 100644 --- a/ee/spec/models/project_ci_cd_setting_spec.rb +++ b/ee/spec/models/project_ci_cd_setting_spec.rb @@ -53,7 +53,7 @@ let(:project) { create(:project) } - where(:merge_pipelines_enabled, :merge_trains_enabled, :feature_avalible, :expected_result) do + where(:merge_pipelines_enabled, :merge_trains_enabled, :feature_available, :expected_result) do true | true | true | true true | false | true | false false | false | true | false @@ -64,12 +64,12 @@ with_them do before do - stub_licensed_features(merge_pipelines: feature_avalible, merge_trains: feature_avalible) + stub_licensed_features(merge_pipelines: feature_available, merge_trains: feature_available) end - it 'returns merge trains avalibility' do - project.update(merge_pipelines_enabled: merge_pipelines_enabled) - project.ci_cd_settings.update(merge_trains_enabled: merge_trains_enabled) + it 'returns merge trains availability' do + project.update!(merge_pipelines_enabled: merge_pipelines_enabled) + project.update!(merge_trains_enabled: merge_trains_enabled) expect(result).to eq(expected_result) end diff --git a/spec/migrations/reseed_merge_trains_enabled_spec.rb b/spec/migrations/reseed_merge_trains_enabled_spec.rb index e7a314d8ae606c..71ef0b47da91d1 100644 --- a/spec/migrations/reseed_merge_trains_enabled_spec.rb +++ b/spec/migrations/reseed_merge_trains_enabled_spec.rb @@ -19,9 +19,7 @@ end it 'updates merge_trains_enabled to true for where merge_pipelines_enabled is true' do - migrate! - - expect(project_ci_cd_settings.where(merge_trains_enabled: true).count).to be(1) + expect { migrate! }.to change(project_ci_cd_settings.where(merge_trains_enabled: true), :count).by(1) end end end -- GitLab From 9fd3f4bf6e42fba2ada5854f796e5e3c95a15172 Mon Sep 17 00:00:00 2001 From: "allison.browne" Date: Mon, 16 Nov 2020 10:16:00 -0500 Subject: [PATCH 5/7] Code review doc fixes Clarify docs for splitting the pipelines from merge results and merge train checkboxes --- .../merge_trains/index.md | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/doc/ci/merge_request_pipelines/pipelines_for_merged_results/merge_trains/index.md b/doc/ci/merge_request_pipelines/pipelines_for_merged_results/merge_trains/index.md index 6a126ff8b81535..d4099cdeafd90f 100644 --- a/doc/ci/merge_request_pipelines/pipelines_for_merged_results/merge_trains/index.md +++ b/doc/ci/merge_request_pipelines/pipelines_for_merged_results/merge_trains/index.md @@ -83,7 +83,7 @@ To enable merge trains for your project: 1. [Configure your CI/CD configuration file](../../index.md#configuring-pipelines-for-merge-requests) so that the pipeline or individual jobs run for merge requests. 1. Visit your project's **Settings > General** and expand **Merge requests** -1. Check **Enable merged results pipelines.** +1. Check **Enable merged results pipelines.** (if not enabled) 1. Check **Enable merge trains.** 1. Click **Save changes** @@ -204,10 +204,13 @@ for more information. ### Merge Trains feature flag **(PREMIUM ONLY)** -Merge trains are automatically enabled when [pipelines for merged results](../index.md#pipelines-for-merged-results) -are enabled. To use pipelines for merged results without using merge trains, you can -enable a [feature flag](../../../../user/feature_flags.md) that blocks the merge trains -feature or [disable the checkbox in settings](index.md#enable-merge-trains). +In [GitLab 13.6 and later](https://gitlab.com/gitlab-org/gitlab/-/issues/244831), +you can [enable or disable merge trains in the project settings](#enable-merge-trains). + +In GitLab 13.5 and earlier, merge trains are automatically enabled when +[pipelines for merged results](../index.md#pipelines-for-merged-results) are enabled. +To use pipelines for merged results without using merge trains, you can enable a +[feature flag](../../../../user/feature_flags.md) that blocks the merge trains feature. [GitLab administrators with access to the GitLab Rails console](../../../../administration/feature_flags.md) can enable the feature flag to disable merge trains: -- GitLab From 6e9535689dee28601792eafefa7f8b6563e60894 Mon Sep 17 00:00:00 2001 From: "allison.browne" Date: Mon, 16 Nov 2020 13:28:30 -0500 Subject: [PATCH 6/7] Code review fixes CR fixes for splitting the pipelines from merge results and merge train checkboxes --- ee/app/models/ee/project_ci_cd_setting.rb | 13 ++++++++++--- ee/spec/controllers/projects_controller_spec.rb | 3 +-- .../merge_request/user_merges_immediately_spec.rb | 3 +-- .../two_merge_requests_on_train_spec.rb | 3 +-- ...user_adds_merge_request_to_merge_train_spec.rb | 3 +-- ..._to_merge_train_when_pipeline_succeeds_spec.rb | 3 +-- .../settings/user_manages_merge_trains_spec.rb | 15 ++++++--------- ee/spec/models/project_ci_cd_setting_spec.rb | 4 ++-- .../merge_request_poll_widget_entity_spec.rb | 3 +-- ...e_train_when_pipeline_succeeds_service_spec.rb | 8 ++------ .../auto_merge/merge_train_service_spec.rb | 7 ++----- .../merge_trains/check_status_service_spec.rb | 3 +-- .../merge_trains/create_pipeline_service_spec.rb | 3 +-- .../refresh_merge_request_service_spec.rb | 3 +-- 14 files changed, 31 insertions(+), 43 deletions(-) diff --git a/ee/app/models/ee/project_ci_cd_setting.rb b/ee/app/models/ee/project_ci_cd_setting.rb index f60f3134cd6c65..46fc61ddec2e15 100644 --- a/ee/app/models/ee/project_ci_cd_setting.rb +++ b/ee/app/models/ee/project_ci_cd_setting.rb @@ -14,9 +14,10 @@ def merge_pipelines_enabled? # This feature flag is never meant to be enabled for the entire instance. # See more context in https://gitlab.com/gitlab-org/gitlab/issues/200037 def merge_trains_enabled? - return false if ::Feature.enabled?(:disable_merge_trains, project) - - merge_pipelines_enabled? && project.feature_available?(:merge_trains) && super + super && + merge_pipelines_enabled? && + project.feature_available?(:merge_trains) && + !merge_trains_disabled?(project) end def merge_pipelines_were_disabled? @@ -26,5 +27,11 @@ def merge_pipelines_were_disabled? def auto_rollback_enabled? super && ::Gitlab::Ci::Features.auto_rollback_available?(project) end + + private + + def merge_trains_disabled?(project) + ::Feature.enabled?(:disable_merge_trains, project) + end end end diff --git a/ee/spec/controllers/projects_controller_spec.rb b/ee/spec/controllers/projects_controller_spec.rb index 14915b9da45e34..0e276f793c9d5e 100644 --- a/ee/spec/controllers/projects_controller_spec.rb +++ b/ee/spec/controllers/projects_controller_spec.rb @@ -319,8 +319,7 @@ end before do - stub_licensed_features(merge_pipelines: true) - stub_licensed_features(merge_trains: true) + stub_licensed_features(merge_pipelines: true, merge_trains: true) end it 'updates the attribute' do diff --git a/ee/spec/features/merge_request/user_merges_immediately_spec.rb b/ee/spec/features/merge_request/user_merges_immediately_spec.rb index 15cdad90e71ddf..886aea05fc50cb 100644 --- a/ee/spec/features/merge_request/user_merges_immediately_spec.rb +++ b/ee/spec/features/merge_request/user_merges_immediately_spec.rb @@ -18,8 +18,7 @@ before_all do project.add_maintainer(user) - project.update!(merge_pipelines_enabled: true) - project.update!(merge_trains_enabled: true) + project.update!(merge_pipelines_enabled: true, merge_trains_enabled: true) merge_request.all_pipelines.first.succeed! merge_request.update_head_pipeline end diff --git a/ee/spec/features/merge_trains/two_merge_requests_on_train_spec.rb b/ee/spec/features/merge_trains/two_merge_requests_on_train_spec.rb index aec74e9b86244d..972118837123e3 100644 --- a/ee/spec/features/merge_trains/two_merge_requests_on_train_spec.rb +++ b/ee/spec/features/merge_trains/two_merge_requests_on_train_spec.rb @@ -32,8 +32,7 @@ project.add_maintainer(maintainer_1) project.add_maintainer(maintainer_2) stub_licensed_features(merge_pipelines: true, merge_trains: true) - project.update!(merge_pipelines_enabled: true) - project.update!(merge_trains_enabled: true) + project.update!(merge_pipelines_enabled: true, merge_trains_enabled: true) stub_ci_pipeline_yaml_file(YAML.dump(ci_yaml)) head_pipeline = double('Ci::Pipeline') diff --git a/ee/spec/features/merge_trains/user_adds_merge_request_to_merge_train_spec.rb b/ee/spec/features/merge_trains/user_adds_merge_request_to_merge_train_spec.rb index e0023b1f189b21..21d7448a5b750e 100644 --- a/ee/spec/features/merge_trains/user_adds_merge_request_to_merge_train_spec.rb +++ b/ee/spec/features/merge_trains/user_adds_merge_request_to_merge_train_spec.rb @@ -20,8 +20,7 @@ stub_feature_flags(disable_merge_trains: false) stub_licensed_features(merge_pipelines: true, merge_trains: true) project.add_maintainer(user) - project.update!(merge_pipelines_enabled: true) - project.update!(merge_trains_enabled: true) + project.update!(merge_pipelines_enabled: true, merge_trains_enabled: true) merge_request.all_pipelines.first.succeed! merge_request.update_head_pipeline stub_ci_pipeline_yaml_file(YAML.dump(ci_yaml)) diff --git a/ee/spec/features/merge_trains/user_adds_to_merge_train_when_pipeline_succeeds_spec.rb b/ee/spec/features/merge_trains/user_adds_to_merge_train_when_pipeline_succeeds_spec.rb index 5ce99883d3e1d5..6fffa77908bf58 100644 --- a/ee/spec/features/merge_trains/user_adds_to_merge_train_when_pipeline_succeeds_spec.rb +++ b/ee/spec/features/merge_trains/user_adds_to_merge_train_when_pipeline_succeeds_spec.rb @@ -18,8 +18,7 @@ stub_feature_flags(disable_merge_trains: false) stub_licensed_features(merge_pipelines: true, merge_trains: true) project.add_maintainer(user) - project.update!(merge_pipelines_enabled: true) - project.update!(merge_trains_enabled: true) + project.update!(merge_pipelines_enabled: true, merge_trains_enabled: true) merge_request.update_head_pipeline diff --git a/ee/spec/features/projects/settings/user_manages_merge_trains_spec.rb b/ee/spec/features/projects/settings/user_manages_merge_trains_spec.rb index 709f085e4f52c8..be03debaa379b9 100644 --- a/ee/spec/features/projects/settings/user_manages_merge_trains_spec.rb +++ b/ee/spec/features/projects/settings/user_manages_merge_trains_spec.rb @@ -2,19 +2,18 @@ require 'spec_helper' -RSpec.describe 'User manages merge pipelines option', :js do +RSpec.describe 'User manages merge trains option', :js do let_it_be(:project) { create(:project) } let_it_be(:user) { create(:user) } before do - stub_licensed_features(merge_pipelines: true) - stub_licensed_features(merge_trains: true) + stub_licensed_features(merge_pipelines: true, merge_trains: true) project.add_maintainer(user) sign_in(user) end - it 'sees unchecked merge pipeline checkbox' do + it 'sees unchecked merge trains checkbox' do visit edit_project_path(project) expect(page.find('#project_merge_trains_enabled')).not_to be_checked @@ -27,15 +26,14 @@ check('Enable merge trains.') end - it 'sees enabled merge pipeline checkbox' do + it 'sees enabled merge trains checkbox' do expect(page.find('#project_merge_trains_enabled')).to be_checked end end context 'when license is insufficient' do before do - stub_licensed_features(merge_pipelines: false) - stub_licensed_features(merge_trains: false) + stub_licensed_features(merge_pipelines: false, merge_trains: false) end it 'does not see the checkbox' do @@ -45,8 +43,7 @@ context 'when feature flag is disabled' do before do - stub_feature_flags(merge_pipelines: false) - stub_feature_flags(merge_trains: false) + stub_feature_flags(merge_pipelines: false, merge_trains: false) end it 'does not see the checkbox' do diff --git a/ee/spec/models/project_ci_cd_setting_spec.rb b/ee/spec/models/project_ci_cd_setting_spec.rb index 5bf89529612888..b19fcf789d1fa7 100644 --- a/ee/spec/models/project_ci_cd_setting_spec.rb +++ b/ee/spec/models/project_ci_cd_setting_spec.rb @@ -57,6 +57,7 @@ true | true | true | true true | false | true | false false | false | true | false + false | true | true | false true | true | false | false true | false | false | false false | false | false | false @@ -68,8 +69,7 @@ end it 'returns merge trains availability' do - project.update!(merge_pipelines_enabled: merge_pipelines_enabled) - project.update!(merge_trains_enabled: merge_trains_enabled) + project.update!(merge_pipelines_enabled: merge_pipelines_enabled, merge_trains_enabled: merge_trains_enabled) expect(result).to eq(expected_result) end diff --git a/ee/spec/serializers/merge_request_poll_widget_entity_spec.rb b/ee/spec/serializers/merge_request_poll_widget_entity_spec.rb index 7f88f2b1873d0b..7087b25be9b852 100644 --- a/ee/spec/serializers/merge_request_poll_widget_entity_spec.rb +++ b/ee/spec/serializers/merge_request_poll_widget_entity_spec.rb @@ -24,8 +24,7 @@ before do stub_licensed_features(merge_pipelines: true, merge_trains: true) - project.update!(merge_pipelines_enabled: true) - project.update!(merge_trains_enabled: true) + project.update!(merge_pipelines_enabled: true, merge_trains_enabled: true) end it 'has merge train entity' do diff --git a/ee/spec/services/auto_merge/add_to_merge_train_when_pipeline_succeeds_service_spec.rb b/ee/spec/services/auto_merge/add_to_merge_train_when_pipeline_succeeds_service_spec.rb index a905a92e4ee2d3..c817ef0d96b57d 100644 --- a/ee/spec/services/auto_merge/add_to_merge_train_when_pipeline_succeeds_service_spec.rb +++ b/ee/spec/services/auto_merge/add_to_merge_train_when_pipeline_succeeds_service_spec.rb @@ -15,13 +15,9 @@ let(:pipeline) { merge_request.reload.all_pipelines.first } - before_all do - project.add_maintainer(user) - project.update!(merge_pipelines_enabled: true) - project.update!(merge_trains_enabled: true) - end - before do + project.add_maintainer(user) + project.update!(merge_pipelines_enabled: true, merge_trains_enabled: true) stub_feature_flags(ci_disallow_to_create_merge_request_pipelines_in_target_project: false) stub_feature_flags(disable_merge_trains: false) stub_licensed_features(merge_trains: true, merge_pipelines: true) diff --git a/ee/spec/services/auto_merge/merge_train_service_spec.rb b/ee/spec/services/auto_merge/merge_train_service_spec.rb index 58f1eb33d57357..ade9e6d5a7cdc7 100644 --- a/ee/spec/services/auto_merge/merge_train_service_spec.rb +++ b/ee/spec/services/auto_merge/merge_train_service_spec.rb @@ -15,13 +15,10 @@ source_project: project, target_project: project) end - before_all do + before do project.add_maintainer(user) - project.update!(merge_pipelines_enabled: true) - project.update!(merge_trains_enabled: true) - end + project.update!(merge_pipelines_enabled: true, merge_trains_enabled: true) - before do allow(AutoMergeProcessWorker).to receive(:perform_async) { } stub_feature_flags(ci_disallow_to_create_merge_request_pipelines_in_target_project: false) diff --git a/ee/spec/services/merge_trains/check_status_service_spec.rb b/ee/spec/services/merge_trains/check_status_service_spec.rb index 3511ae58eb0427..5dac93ddc8507b 100644 --- a/ee/spec/services/merge_trains/check_status_service_spec.rb +++ b/ee/spec/services/merge_trains/check_status_service_spec.rb @@ -11,8 +11,7 @@ before do stub_feature_flags(disable_merge_trains: false) stub_licensed_features(merge_pipelines: true, merge_trains: true) - project.update!(merge_pipelines_enabled: true) - project.update!(merge_trains_enabled: true) + project.update!(merge_pipelines_enabled: true, merge_trains_enabled: true) end describe '#execute' do diff --git a/ee/spec/services/merge_trains/create_pipeline_service_spec.rb b/ee/spec/services/merge_trains/create_pipeline_service_spec.rb index 38a49107a3210e..bd6550ba6b281a 100644 --- a/ee/spec/services/merge_trains/create_pipeline_service_spec.rb +++ b/ee/spec/services/merge_trains/create_pipeline_service_spec.rb @@ -10,8 +10,7 @@ before do project.add_maintainer(maintainer) - project.update!(merge_pipelines_enabled: true) - project.update!(merge_trains_enabled: true) + project.update!(merge_pipelines_enabled: true, merge_trains_enabled: true) stub_feature_flags(ci_disallow_to_create_merge_request_pipelines_in_target_project: false) stub_feature_flags(disable_merge_trains: false) stub_licensed_features(merge_pipelines: true, merge_trains: true) diff --git a/ee/spec/services/merge_trains/refresh_merge_request_service_spec.rb b/ee/spec/services/merge_trains/refresh_merge_request_service_spec.rb index 600f601f64b8b8..e96526f14e5000 100644 --- a/ee/spec/services/merge_trains/refresh_merge_request_service_spec.rb +++ b/ee/spec/services/merge_trains/refresh_merge_request_service_spec.rb @@ -12,8 +12,7 @@ stub_feature_flags(disable_merge_trains: false) project.add_maintainer(maintainer) stub_licensed_features(merge_pipelines: true, merge_trains: true) - project.update!(merge_pipelines_enabled: true) - project.update!(merge_trains_enabled: true) + project.update!(merge_pipelines_enabled: true, merge_trains_enabled: true) end describe '#execute' do -- GitLab From e195991855c559b9d5ba26afb90edba5c0560c76 Mon Sep 17 00:00:00 2001 From: "allison.browne" Date: Tue, 17 Nov 2020 08:37:31 -0500 Subject: [PATCH 7/7] Add rel: 'noopener noreferer' for target: _blank links --- ee/app/views/projects/_merge_pipelines_settings.html.haml | 3 ++- ee/app/views/projects/_merge_trains_settings.html.haml | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/ee/app/views/projects/_merge_pipelines_settings.html.haml b/ee/app/views/projects/_merge_pipelines_settings.html.haml index 92de4313cbe943..5dfa50a0271c6e 100644 --- a/ee/app/views/projects/_merge_pipelines_settings.html.haml +++ b/ee/app/views/projects/_merge_pipelines_settings.html.haml @@ -9,4 +9,5 @@ = link_to sprite_icon('question-o'), help_page_path('ci/merge_request_pipelines/index.md', anchor: 'configuring-pipelines-for-merge-requests'), - target: '_blank' + target: '_blank', + rel: 'noopener noreferer' diff --git a/ee/app/views/projects/_merge_trains_settings.html.haml b/ee/app/views/projects/_merge_trains_settings.html.haml index 311d8e37fa88a4..af187b89d66879 100644 --- a/ee/app/views/projects/_merge_trains_settings.html.haml +++ b/ee/app/views/projects/_merge_trains_settings.html.haml @@ -9,4 +9,5 @@ = link_to sprite_icon('question-o'), help_page_path('ci/merge_request_pipelines/pipelines_for_merged_results/merge_trains/index.md', anchor: 'merge-trains'), - target: '_blank' + target: '_blank', + rel: 'noopener noreferer' -- GitLab