gitlab-dangerfiles 3.8.0 → 3.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/danger/plugins/internal/helper.rb +14 -3
- data/lib/danger/plugins/roulette.rb +13 -8
- data/lib/danger/rules/changes_size/Dangerfile +2 -0
- data/lib/danger/rules/metadata/Dangerfile +0 -4
- data/lib/gitlab/dangerfiles/category.rb +4 -4
- data/lib/gitlab/dangerfiles/teammate.rb +4 -4
- data/lib/gitlab/dangerfiles/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5759d8762183090115e7cb10b4b2d7244735d3225b53966c8feaf28e9d9eee7e
|
4
|
+
data.tar.gz: f49d06c663430072bad4c4f05b8bd1f509ca2c1a095bd1e499e3870fbe061fc9
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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
|
-
|
30
|
-
|
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 [
|
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|
|
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 :
|
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
|
177
|
-
# Reject
|
178
|
-
team_mr_author&.
|
179
|
-
team_mr_author&.
|
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
|
-
|
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
|
-
|
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
|
|
@@ -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
|
-
|
18
|
-
|
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
|
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
|
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
|
59
|
-
return false unless category == :
|
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
|
65
|
-
return false unless category == :
|
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
|
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.
|
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-
|
11
|
+
date: 2023-05-02 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake
|