diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2021-09-28 03:09:32 +0300 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2021-09-28 03:09:32 +0300 |
commit | 7263b05461ba2a52c7d74d74ab132a75cc85b691 (patch) | |
tree | 1833d868e9a5ad8c8b0c48d52b05cf1d019a6d11 | |
parent | d48053f82eb84fa23138840b11ce30ad1828f8c0 (diff) |
Add latest changes from gitlab-org/gitlab@master
8 files changed, 120 insertions, 1 deletions
diff --git a/db/migrate/20210910192921_add_report_type_into_approval_project_rules.rb b/db/migrate/20210910192921_add_report_type_into_approval_project_rules.rb new file mode 100644 index 00000000000..4b147034657 --- /dev/null +++ b/db/migrate/20210910192921_add_report_type_into_approval_project_rules.rb @@ -0,0 +1,11 @@ +# frozen_string_literal: true + +class AddReportTypeIntoApprovalProjectRules < Gitlab::Database::Migration[1.0] + def up + add_column :approval_project_rules, :report_type, :integer, limit: 2 + end + + def down + remove_column :approval_project_rules, :report_type + end +end diff --git a/db/migrate/20210921191010_add_report_type_index_into_approval_project_rules.rb b/db/migrate/20210921191010_add_report_type_index_into_approval_project_rules.rb new file mode 100644 index 00000000000..c03c463b9bb --- /dev/null +++ b/db/migrate/20210921191010_add_report_type_index_into_approval_project_rules.rb @@ -0,0 +1,15 @@ +# frozen_string_literal: true + +class AddReportTypeIndexIntoApprovalProjectRules < Gitlab::Database::Migration[1.0] + disable_ddl_transaction! + + INDEX_NAME = 'index_approval_project_rules_report_type' + + def up + add_concurrent_index :approval_project_rules, :report_type, name: INDEX_NAME + end + + def down + remove_concurrent_index_by_name :approval_project_rules, name: INDEX_NAME + end +end diff --git a/db/post_migrate/20210910194952_update_report_type_for_existing_approval_project_rules.rb b/db/post_migrate/20210910194952_update_report_type_for_existing_approval_project_rules.rb new file mode 100644 index 00000000000..537c235edab --- /dev/null +++ b/db/post_migrate/20210910194952_update_report_type_for_existing_approval_project_rules.rb @@ -0,0 +1,39 @@ +# frozen_string_literal: true + +class UpdateReportTypeForExistingApprovalProjectRules < Gitlab::Database::Migration[1.0] + def up + # 1. We only want to consider when rule_type is set to :report_approver (i.e., 2): + # enum rule_type: { + # regular: 0, + # code_owner: 1, # currently unused + # report_approver: 2, + # any_approver: 3 + # } + # 2. Also we want to change only the folowing names and respective values: + # DEFAULT_NAME_FOR_LICENSE_REPORT = 'License-Check' + # DEFAULT_NAME_FOR_VULNERABILITY_REPORT = 'Vulnerability-Check' + # DEFAULT_NAME_FOR_COVERAGE = 'Coverage-Check' + # enum report_type: { + # vulnerability: 1, + # license_scanning: 2, + # code_coverage: 3 + # } + + execute <<~SQL + UPDATE approval_project_rules + SET report_type = converted_values.report_type + FROM + ( values + (1, 'Vulnerability-Check'), + (2, 'License-Check'), + (3, 'Coverage-Check') + ) AS converted_values(report_type, name) + WHERE approval_project_rules.name = converted_values.name + AND approval_project_rules.rule_type = 2; + SQL + end + + def down + # no-op + end +end diff --git a/db/schema_migrations/20210910192921 b/db/schema_migrations/20210910192921 new file mode 100644 index 00000000000..d593bca14ac --- /dev/null +++ b/db/schema_migrations/20210910192921 @@ -0,0 +1 @@ +48b5f8e614117ac5f1e7af4ab85a8835c3b3b34103154565dd7ef6f541dd3c37
\ No newline at end of file diff --git a/db/schema_migrations/20210910194952 b/db/schema_migrations/20210910194952 new file mode 100644 index 00000000000..2af73174c34 --- /dev/null +++ b/db/schema_migrations/20210910194952 @@ -0,0 +1 @@ +b805a0d3143f968343694ec864b38ba4991931131e8a5082dcd719420328a3ef
\ No newline at end of file diff --git a/db/schema_migrations/20210921191010 b/db/schema_migrations/20210921191010 new file mode 100644 index 00000000000..c01a8f41437 --- /dev/null +++ b/db/schema_migrations/20210921191010 @@ -0,0 +1 @@ +8fa4dbfc075036ca379f153e97b7afd2b7600d129f7fb5294dcf4574be9dd7d1
\ No newline at end of file diff --git a/db/structure.sql b/db/structure.sql index 5074890d5b8..326b81e5e77 100644 --- a/db/structure.sql +++ b/db/structure.sql @@ -10462,7 +10462,8 @@ CREATE TABLE approval_project_rules ( rule_type smallint DEFAULT 0 NOT NULL, scanners text[], vulnerabilities_allowed smallint DEFAULT 0 NOT NULL, - severity_levels text[] DEFAULT '{}'::text[] NOT NULL + severity_levels text[] DEFAULT '{}'::text[] NOT NULL, + report_type smallint ); CREATE TABLE approval_project_rules_groups ( @@ -24243,6 +24244,8 @@ CREATE INDEX index_approval_project_rules_on_rule_type ON approval_project_rules CREATE INDEX index_approval_project_rules_protected_branches_pb_id ON approval_project_rules_protected_branches USING btree (protected_branch_id); +CREATE INDEX index_approval_project_rules_report_type ON approval_project_rules USING btree (report_type); + CREATE UNIQUE INDEX index_approval_project_rules_users_1 ON approval_project_rules_users USING btree (approval_project_rule_id, user_id); CREATE INDEX index_approval_project_rules_users_2 ON approval_project_rules_users USING btree (user_id); diff --git a/spec/migrations/20210910194952_update_report_type_for_existing_approval_project_rules_spec.rb b/spec/migrations/20210910194952_update_report_type_for_existing_approval_project_rules_spec.rb new file mode 100644 index 00000000000..46a6d8d92ec --- /dev/null +++ b/spec/migrations/20210910194952_update_report_type_for_existing_approval_project_rules_spec.rb @@ -0,0 +1,48 @@ +# frozen_string_literal: true + +require 'spec_helper' +require_migration!('update_report_type_for_existing_approval_project_rules') + +RSpec.describe UpdateReportTypeForExistingApprovalProjectRules, :migration do + using RSpec::Parameterized::TableSyntax + + let(:group) { table(:namespaces).create!(name: 'user', path: 'user') } + let(:project) { table(:projects).create!(namespace_id: group.id) } + let(:approval_project_rule) { table(:approval_project_rules).create!(name: rule_name, rule_type: rule_type, project_id: project.id) } + let(:rule_type) { 2 } + let(:rule_name) { 'Vulnerability-Check' } + + context 'with rule_type set to :report_approver' do + where(:rule_name, :report_type) do + [ + ['Vulnerability-Check', 1], + ['License-Check', 2], + ['Coverage-Check', 3] + ] + end + + with_them do + context "with names associated with report type" do + it 'updates report_type' do + expect { migrate! }.to change { approval_project_rule.reload.report_type }.from(nil).to(report_type) + end + end + end + end + + context 'with rule_type set to another value (e.g., :regular)' do + let(:rule_type) { 0 } + + it 'does not update report_type' do + expect { migrate! }.not_to change { approval_project_rule.reload.report_type } + end + end + + context 'with the rule name set to another value (e.g., Test Rule)' do + let(:rule_name) { 'Test Rule'} + + it 'does not update report_type' do + expect { migrate! }.not_to change { approval_project_rule.reload.report_type } + end + end +end |