From fb444b78aeb04bbd519867ff47db34bd9e76a1c5 Mon Sep 17 00:00:00 2001 From: Steve Abrams <sabrams@gitlab.com> Date: Tue, 18 Apr 2023 11:35:03 -0600 Subject: [PATCH] Skip certain Danger rules for stable branch MRs - Skip database warnings - Skip product intelligence review - Skip data team warnings --- danger/database/Dangerfile | 2 ++ danger/datateam/Dangerfile | 2 ++ danger/product_intelligence/Dangerfile | 2 ++ danger/roulette/Dangerfile | 3 +++ spec/tooling/danger/stable_branch_spec.rb | 22 ++++++++++++++++++++++ tooling/danger/stable_branch.rb | 4 ++-- 6 files changed, 33 insertions(+), 2 deletions(-) diff --git a/danger/database/Dangerfile b/danger/database/Dangerfile index df6ffab7c943a..96134ea66a696 100644 --- a/danger/database/Dangerfile +++ b/danger/database/Dangerfile @@ -45,6 +45,8 @@ geo_migration_created = !git.added_files.grep(%r{\Aee/db/geo/(post_)?migrate/}). format_str = helper.ci? ? SCHEMA_NOT_UPDATED_MESSAGE_FULL : SCHEMA_NOT_UPDATED_MESSAGE_SHORT +return if stable_branch.valid_stable_branch? + if non_geo_migration_created && !non_geo_db_schema_updated warn format(format_str, migrations: 'migrations', schema: helper.html_link("db/structure.sql")) end diff --git a/danger/datateam/Dangerfile b/danger/datateam/Dangerfile index ed2703f31e6f8..3cd0578a068d8 100644 --- a/danger/datateam/Dangerfile +++ b/danger/datateam/Dangerfile @@ -1,3 +1,5 @@ # frozen_string_literal: true +return if stable_branch.valid_stable_branch? + markdown(datateam.build_message) if datateam.impacted? diff --git a/danger/product_intelligence/Dangerfile b/danger/product_intelligence/Dangerfile index 86888fe542e64..b20c56a7b7ce2 100644 --- a/danger/product_intelligence/Dangerfile +++ b/danger/product_intelligence/Dangerfile @@ -1,5 +1,7 @@ # frozen_string_literal: true +return if stable_branch.valid_stable_branch? + product_intelligence.check! product_intelligence.check_affected_scopes! diff --git a/danger/roulette/Dangerfile b/danger/roulette/Dangerfile index 32899c4d74fb0..3256ff25bbf14 100644 --- a/danger/roulette/Dangerfile +++ b/danger/roulette/Dangerfile @@ -104,6 +104,9 @@ categories << :product_intelligence if helper.mr_labels.include?("product intell # Skip Product intelligence reviews for growth experiment MRs categories.delete(:product_intelligence) if helper.mr_labels.include?("growth experiment") +# Skip specialty reviews for stable branch MRs since they have already been merged to the default branch +categories.subtract([:database, :ux, :product_intelligence]) if stable_branch.valid_stable_branch? + if changes.any? random_roulette_spins = roulette.spin(nil, categories, timezone_experiment: false) diff --git a/spec/tooling/danger/stable_branch_spec.rb b/spec/tooling/danger/stable_branch_spec.rb index b0a8ab3c1325c..fc644413a5a45 100644 --- a/spec/tooling/danger/stable_branch_spec.rb +++ b/spec/tooling/danger/stable_branch_spec.rb @@ -351,4 +351,26 @@ it { is_expected.to eq(result) } end end + + describe '#valid_stable_branch?' do + it "returns false when on the default branch" do + allow(fake_helper).to receive(:mr_target_branch).and_return('main') + + expect(stable_branch.valid_stable_branch?).to be(false) + end + + it "returns true when on a stable branch" do + allow(fake_helper).to receive(:mr_target_branch).and_return('15-1-stable-ee') + allow(fake_helper).to receive(:security_mr?).and_return(false) + + expect(stable_branch.valid_stable_branch?).to be(true) + end + + it "returns false when on a stable branch on a security MR" do + allow(fake_helper).to receive(:mr_target_branch).and_return('15-1-stable-ee') + allow(fake_helper).to receive(:security_mr?).and_return(true) + + expect(stable_branch.valid_stable_branch?).to be(false) + end + end end diff --git a/tooling/danger/stable_branch.rb b/tooling/danger/stable_branch.rb index 2751a6f01918d..9deb4838079e0 100644 --- a/tooling/danger/stable_branch.rb +++ b/tooling/danger/stable_branch.rb @@ -85,12 +85,12 @@ def encourage_package_and_qa_execution? !has_flaky_failure_label? end - private - def valid_stable_branch? !!stable_target_branch && !helper.security_mr? end + private + def package_and_test_bridge_and_pipeline_status mr_head_pipeline_id = gitlab.mr_json.dig('head_pipeline', 'id') return unless mr_head_pipeline_id -- GitLab