Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGitLab Bot <gitlab-bot@gitlab.com>2021-09-28 03:09:32 +0300
committerGitLab Bot <gitlab-bot@gitlab.com>2021-09-28 03:09:32 +0300
commit7263b05461ba2a52c7d74d74ab132a75cc85b691 (patch)
tree1833d868e9a5ad8c8b0c48d52b05cf1d019a6d11
parentd48053f82eb84fa23138840b11ce30ad1828f8c0 (diff)
Add latest changes from gitlab-org/gitlab@master
-rw-r--r--db/migrate/20210910192921_add_report_type_into_approval_project_rules.rb11
-rw-r--r--db/migrate/20210921191010_add_report_type_index_into_approval_project_rules.rb15
-rw-r--r--db/post_migrate/20210910194952_update_report_type_for_existing_approval_project_rules.rb39
-rw-r--r--db/schema_migrations/202109101929211
-rw-r--r--db/schema_migrations/202109101949521
-rw-r--r--db/schema_migrations/202109211910101
-rw-r--r--db/structure.sql5
-rw-r--r--spec/migrations/20210910194952_update_report_type_for_existing_approval_project_rules_spec.rb48
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