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 +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
|