gitlab-dangerfiles 3.8.0 → 3.9.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: fcee2fd2dd96522a7b1a5d1f906bc7fccfa28c9d6e9f61d6843c1fcd22dee884
4
- data.tar.gz: c433e7fd8d3fd698c1eb71e5291f24a191ee2c4a86d376bae6f18b0735352f2a
3
+ metadata.gz: 5759d8762183090115e7cb10b4b2d7244735d3225b53966c8feaf28e9d9eee7e
4
+ data.tar.gz: f49d06c663430072bad4c4f05b8bd1f509ca2c1a095bd1e499e3870fbe061fc9
5
5
  SHA512:
6
- metadata.gz: c014e0cf3905380549a0f088c5685b7e1251643f5bbdd3e5362e4cf3c0ca0c0e4a1456599db66eabd3dad006547b70010716a2ab5b9aa2318e573ced7bd3680d
7
- data.tar.gz: 0311fcec0f9cd30684470739798c5ab9c296d2c3cfb22d7e73a98f2c644b6db373edd752587a134199a366372b877bca4d3f198aed89f133483db45a2d5979e6
6
+ metadata.gz: 3cd96f3ceb33c2a028f62b1f72a16196ee1afa3768f0463783262ce3a4bd1d98d85e9ab905a916c0ad27cf7bfaf2c16608c5d533e07c30b6463807122d711f09
7
+ data.tar.gz: 253aa1b4a8a31c2c323ff05fbad3e2f613b932c82a5f1d61505e92966c1bfe7c593d17bae094f6ebd59b5568433d93d83e443b16df7c75d1b257d1015834a405
@@ -26,8 +26,8 @@ module Danger
26
26
  tooling: '~"maintenance::workflow" / ~"maintenance::pipelines" for CI, Danger',
27
27
  ci_template: '~"ci::templates"',
28
28
  product_intelligence: '~"product intelligence"',
29
- integrations_be: '~"group::integrations" (backend)',
30
- integrations_fe: '~"group::integrations" (frontend)',
29
+ import_integrate_be: '~"group::import and integrate" (backend)',
30
+ import_integrate_fe: '~"group::import and integrate" (frontend)',
31
31
  "Authentication and Authorization": '~"group::authentication and authorization"',
32
32
  Compliance: '~"group::compliance"',
33
33
  }.freeze
@@ -35,6 +35,8 @@ module Danger
35
35
 
36
36
  GITLAB_ORG_GROUP_ID = "9970"
37
37
 
38
+ STABLE_BRANCH_REGEX = %r{\A(?<version>\d+-\d+)-stable-ee\z}
39
+
38
40
  # Allows to set specific rule's configuration by passing a block.
39
41
  #
40
42
  # @yield [c] Yield a Gitlab::Dangerfiles::Config object
@@ -369,6 +371,10 @@ module Danger
369
371
  mr_web_url.include?("/gitlab-org/security/")
370
372
  end
371
373
 
374
+ def stable_branch_mr?
375
+ !!mr_target_branch.match(STABLE_BRANCH_REGEX) && !security_mr?
376
+ end
377
+
372
378
  # @return [Boolean] whether a MR title includes "cherry-pick" or not.
373
379
  def cherry_pick_mr?
374
380
  Gitlab::Dangerfiles::TitleLinting.has_cherry_pick_flag?(mr_title)
@@ -449,11 +455,16 @@ module Danger
449
455
  all_changed_files.grep(regex)
450
456
  end
451
457
 
452
- # @return [Array<String>] the group labels (i.e. +"group::*"+) set on the MR.
458
+ # @return [String] the group label (i.e. +"group::*"+) set on the MR.
453
459
  def group_label
454
460
  mr_labels.find { |label| label.start_with?("group::") }
455
461
  end
456
462
 
463
+ # @return [String] the stage label (i.e. +"devops::*"+) set on the MR.
464
+ def stage_label
465
+ mr_labels.find { |label| label.start_with?("devops::") }
466
+ end
467
+
457
468
  # Accessor for storing labels to add so that other rules can check if labels will be added after Danger
458
469
  # has evaluated all the rules.
459
470
  # For instance, a rule might require a specific label to be set, but another rule could add this label
@@ -52,7 +52,7 @@ module Danger
52
52
  def spin(project = nil, categories = [:none], timezone_experiment: false)
53
53
  project = (project || config_project_name).downcase
54
54
  categories = categories.map { |category| category&.downcase || :none }
55
- categories.reject! { |category| integrations_reject_category?(category, project) }
55
+ categories.reject! { |category| import_and_integrate_reject_category?(category, project) }
56
56
 
57
57
  spins = categories.sort_by(&:to_s).map do |category|
58
58
  including_timezone = INCLUDE_TIMEZONE_FOR_CATEGORY.fetch(category, timezone_experiment)
@@ -96,7 +96,7 @@ module Danger
96
96
  # Fetch an already picked maintainer, or pick one otherwise
97
97
  spin.maintainer = backend_spin&.maintainer || frontend_spin&.maintainer || spin_for_category(project, :backend, timezone_experiment: including_timezone).maintainer
98
98
  end
99
- when :integrations_be, :integrations_fe
99
+ when :import_integrate_be, :import_integrate_fe
100
100
  spin.optional_role = :maintainer
101
101
  when :ux
102
102
  spin.optional_role = :maintainer
@@ -173,10 +173,10 @@ module Danger
173
173
 
174
174
  # @param [String] category name
175
175
  # @return [Boolean]
176
- def integrations_reject_category?(category, project)
177
- # Reject integrations categories if the MR author has reviewing abilities for the category.
178
- team_mr_author&.integrations_be?(project, category, helper.mr_labels) ||
179
- team_mr_author&.integrations_fe?(project, category, helper.mr_labels)
176
+ def import_and_integrate_reject_category?(category, project)
177
+ # Reject Import and Integrate categories if the MR author has reviewing abilities for the category.
178
+ team_mr_author&.import_integrate_be?(project, category, helper.mr_labels) ||
179
+ team_mr_author&.import_integrate_fe?(project, category, helper.mr_labels)
180
180
  end
181
181
 
182
182
  def random
@@ -267,12 +267,17 @@ module Danger
267
267
  rsp = Net::HTTP.get_response(URI.parse(url))
268
268
 
269
269
  if rsp.is_a?(Net::HTTPRedirection)
270
- warnings << "Redirection detected. Stopping."
270
+ if (uri = URI.parse(rsp.header["location"]))
271
+ uri.query = nil
272
+ end
273
+
274
+ warnings << "Redirection detected: #{uri}."
271
275
  return nil
272
276
  end
273
277
 
274
278
  unless rsp.is_a?(Net::HTTPOK)
275
- warnings << "HTTPError: Failed to read #{url}: #{rsp.code}."
279
+ message = rsp.message[0, 30]
280
+ warnings << "HTTPError: Failed to read #{url}: #{rsp.code} #{message}."
276
281
  return nil
277
282
  end
278
283
 
@@ -1,5 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ return if helper.stable_branch_mr?
4
+
3
5
  thresholds = helper.config.code_size_thresholds
4
6
  lines_changed = git.lines_of_code
5
7
 
@@ -5,7 +5,3 @@ fail("Merge request description is too short. Please provide a proper merge requ
5
5
  warn("This merge request does not have any assignee yet. Setting an assignee clarifies who needs to take action on the merge request at any given time.") if helper.mr_assignees.empty?
6
6
 
7
7
  warn("This merge request does not refer to an existing milestone.", sticky: false) if helper.mr_milestone.nil?
8
-
9
- default_branch = ENV['CI_DEFAULT_BRANCH'] || 'main'
10
- has_pick_into_stable_label = helper.mr_labels.find { |label| label.start_with?('Pick into') }
11
- warn("Most of the time, merge requests should target `#{default_branch}`. Otherwise, please set the relevant `Pick into X.Y` label.") if helper.mr_target_branch != default_branch && !has_pick_into_stable_label && !helper.security_mr?
@@ -14,8 +14,8 @@ module Gitlab
14
14
  none: None,
15
15
  test: Test,
16
16
  tooling: Tooling,
17
- integrations_be: IntegrationsBE,
18
- integrations_fe: IntegrationsFE,
17
+ import_integrate_be: ImportIntegrateBE,
18
+ import_integrate_fe: ImportIntegrateFE,
19
19
  ux: UX,
20
20
  }.freeze
21
21
  end
@@ -71,7 +71,7 @@ module Gitlab
71
71
  end
72
72
  end
73
73
 
74
- class IntegrationsBE < Category
74
+ class ImportIntegrateBE < Category
75
75
  private
76
76
 
77
77
  def has_particular_capability?(teammate)
@@ -80,7 +80,7 @@ module Gitlab
80
80
  end
81
81
  end
82
82
 
83
- class IntegrationsFE < Category
83
+ class ImportIntegrateFE < Category
84
84
  private
85
85
 
86
86
  def has_particular_capability?(teammate)
@@ -55,14 +55,14 @@ module Gitlab
55
55
  has_capability?(project, category, :maintainer, labels)
56
56
  end
57
57
 
58
- def integrations_be?(project, category, labels)
59
- return false unless category == :integrations_be
58
+ def import_integrate_be?(project, category, labels)
59
+ return false unless category == :import_integrate_be
60
60
 
61
61
  has_capability?(project, category, :reviewer, labels)
62
62
  end
63
63
 
64
- def integrations_fe?(project, category, labels)
65
- return false unless category == :integrations_fe
64
+ def import_integrate_fe?(project, category, labels)
65
+ return false unless category == :import_integrate_fe
66
66
 
67
67
  has_capability?(project, category, :reviewer, labels)
68
68
  end
@@ -1,5 +1,5 @@
1
1
  module Gitlab
2
2
  module Dangerfiles
3
- VERSION = "3.8.0"
3
+ VERSION = "3.9.0"
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gitlab-dangerfiles
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.8.0
4
+ version: 3.9.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - GitLab
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2023-03-03 00:00:00.000000000 Z
11
+ date: 2023-05-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake