gitlab_roulette 1.0.1 → 1.1.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/Gemfile.lock +1 -1
- data/bin/console +1 -0
- data/lib/gitlab_roulette/version.rb +1 -1
- metadata +1 -5
- data/Dangerfile +0 -9
- data/danger/plugins/helper.rb +0 -12
- data/danger/plugins/roulette.rb +0 -10
- data/danger/roulette/Dangerfile +0 -95
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 45f174369a6c31888b7f3cedf4e1bd495ed8dce4ac7a7824a3c65c72eb47346d
|
4
|
+
data.tar.gz: f27f1e828800179dfd44bbe26f0d1012bd86827c8585629f9450ddffa13d40f4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e085b139aaaf319915fb7f5da03c5fdd3b64b3f691e88e538892556db69f06eefbadc6a0869b077f3c05cfda24ad287c2eb63e6c18550853469e77bdd973c901
|
7
|
+
data.tar.gz: 3adf52a215947057c817cc2696371c4d04a70deb509c1b1a3a63a074886673cefef61a91491c6dc82601fbe1de1e2a53a9a775f785edadd9709a841efe5e7ae6
|
data/Gemfile.lock
CHANGED
data/bin/console
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: gitlab_roulette
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0
|
4
|
+
version: 1.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Andrei Merfu
|
@@ -90,7 +90,6 @@ extra_rdoc_files: []
|
|
90
90
|
files:
|
91
91
|
- ".gitignore"
|
92
92
|
- CODE_OF_CONDUCT.md
|
93
|
-
- Dangerfile
|
94
93
|
- Gemfile
|
95
94
|
- Gemfile.lock
|
96
95
|
- LICENSE.txt
|
@@ -98,9 +97,6 @@ files:
|
|
98
97
|
- Rakefile
|
99
98
|
- bin/console
|
100
99
|
- bin/setup
|
101
|
-
- danger/plugins/helper.rb
|
102
|
-
- danger/plugins/roulette.rb
|
103
|
-
- danger/roulette/Dangerfile
|
104
100
|
- gitlab_roulette.gemspec
|
105
101
|
- lib/gitlab_roulette.rb
|
106
102
|
- lib/gitlab_roulette/danger/helper.rb
|
data/Dangerfile
DELETED
@@ -1,9 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require_relative 'lib/gitlab_roulette/gitlab_danger'
|
4
|
-
require_relative 'lib/gitlab_roulette/danger/request_helper'
|
5
|
-
|
6
|
-
danger.import_plugin('danger/plugins/helper.rb')
|
7
|
-
danger.import_plugin('danger/plugins/roulette.rb')
|
8
|
-
|
9
|
-
danger.import_dangerfile(path: 'danger/roulette')
|
data/danger/plugins/helper.rb
DELETED
@@ -1,12 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require_relative '../../lib/gitlab_roulette/danger/helper'
|
4
|
-
|
5
|
-
module Danger
|
6
|
-
# Common helper functions for our danger scripts. See Gitlab::Danger::Helper
|
7
|
-
# for more details
|
8
|
-
class Helper < Plugin
|
9
|
-
# Put the helper code somewhere it can be tested
|
10
|
-
include GitlabRoulette::Danger::Helper
|
11
|
-
end
|
12
|
-
end
|
data/danger/plugins/roulette.rb
DELETED
data/danger/roulette/Dangerfile
DELETED
@@ -1,95 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require 'digest/md5'
|
4
|
-
|
5
|
-
MESSAGE = <<MARKDOWN
|
6
|
-
## Reviewer roulette
|
7
|
-
|
8
|
-
Changes that require review have been detected! A merge request is normally
|
9
|
-
reviewed by both a reviewer and a maintainer in its primary category (e.g.
|
10
|
-
~frontend or ~backend), and by a maintainer in all other categories.
|
11
|
-
MARKDOWN
|
12
|
-
|
13
|
-
CATEGORY_TABLE_HEADER = <<MARKDOWN
|
14
|
-
|
15
|
-
To spread load more evenly across eligible reviewers, Danger has randomly picked
|
16
|
-
a candidate for each review slot. Feel free to override this selection if you
|
17
|
-
think someone else would be better-suited, or the chosen person is unavailable.
|
18
|
-
|
19
|
-
Once you've decided who will review this merge request, mention them as you
|
20
|
-
normally would! Danger does not (yet?) automatically notify them for you.
|
21
|
-
|
22
|
-
| Category | Reviewer | Maintainer |
|
23
|
-
| -------- | -------- | ---------- |
|
24
|
-
MARKDOWN
|
25
|
-
|
26
|
-
UNKNOWN_FILES_MESSAGE = <<MARKDOWN
|
27
|
-
|
28
|
-
These files couldn't be categorised, so Danger was unable to suggest a reviewer.
|
29
|
-
Please consider creating a merge request to
|
30
|
-
[add support](https://gitlab.com/gitlab-org/gitlab/blob/master/lib/gitlab/danger/helper.rb)
|
31
|
-
for them.
|
32
|
-
MARKDOWN
|
33
|
-
|
34
|
-
NO_REVIEWER = 'No reviewer available'.freeze
|
35
|
-
NO_MAINTAINER = 'No maintainer available'.freeze
|
36
|
-
|
37
|
-
def spin_for_category(team, project, category, branch_name)
|
38
|
-
puts "team = #{team}\n project=#{project}\n category=#{category}\n branch_name=#{branch_name}\n"
|
39
|
-
random = roulette.new_random(branch_name)
|
40
|
-
labels = gitlab.mr_labels
|
41
|
-
puts "labels = #{labels}"
|
42
|
-
|
43
|
-
reviewers, traintainers, maintainers =
|
44
|
-
%i[reviewer? traintainer? maintainer?].map do |kind|
|
45
|
-
team.select do |member|
|
46
|
-
member.public_send(kind, project, category, labels) # rubocop:disable GitlabSecurity/PublicSend
|
47
|
-
end
|
48
|
-
end
|
49
|
-
|
50
|
-
# TODO: take CODEOWNERS into account?
|
51
|
-
# https://gitlab.com/gitlab-org/gitlab/issues/26723
|
52
|
-
|
53
|
-
puts "reviewers = #{reviewers}\n maintainers=#{maintainers}\n"
|
54
|
-
# Make traintainers have triple the chance to be picked as a reviewer
|
55
|
-
reviewer = roulette.spin_for_person(reviewers + traintainers + traintainers, random: random)
|
56
|
-
maintainer = roulette.spin_for_person(maintainers, random: random)
|
57
|
-
|
58
|
-
"| #{helper.label_for_category(category)} | #{reviewer&.markdown_name || NO_REVIEWER} | #{maintainer&.markdown_name || NO_MAINTAINER} |"
|
59
|
-
end
|
60
|
-
|
61
|
-
changes = helper.changes_by_category
|
62
|
-
|
63
|
-
# Ignore any files that are known but uncategorized. Prompt for any unknown files
|
64
|
-
changes.delete(:none)
|
65
|
-
categories = changes.keys - [:unknown]
|
66
|
-
|
67
|
-
# Ensure to spin for database reviewer/maintainer when ~database is applied (e.g. to review SQL queries)
|
68
|
-
categories << :database if gitlab.mr_labels.include?('database') && !categories.include?(:database)
|
69
|
-
|
70
|
-
# Single codebase MRs are reviewed using a slightly different process, so we
|
71
|
-
# disable the review roulette for such MRs.
|
72
|
-
# CSS Clean up MRs are reviewed using a slightly different process, so we
|
73
|
-
# disable the review roulette for such MRs.
|
74
|
-
if changes.any? && !gitlab.mr_labels.include?('single codebase') && !gitlab.mr_labels.include?('CSS cleanup')
|
75
|
-
# Strip leading and trailing CE/EE markers
|
76
|
-
canonical_branch_name =
|
77
|
-
roulette.canonical_branch_name(gitlab.mr_json['source_branch'])
|
78
|
-
|
79
|
-
team =
|
80
|
-
begin
|
81
|
-
roulette.project_team(helper.project_name)
|
82
|
-
rescue => err
|
83
|
-
warn("Reviewer roulette failed to load team data: #{err.message}")
|
84
|
-
[]
|
85
|
-
end
|
86
|
-
|
87
|
-
project = helper.project_name
|
88
|
-
unknown = changes.fetch(:unknown, [])
|
89
|
-
|
90
|
-
rows = categories.map { |category| spin_for_category(team, project, category, canonical_branch_name) }
|
91
|
-
|
92
|
-
markdown(MESSAGE)
|
93
|
-
markdown(CATEGORY_TABLE_HEADER + rows.join("\n")) unless rows.empty?
|
94
|
-
markdown(UNKNOWN_FILES_MESSAGE + helper.markdown_list(unknown)) unless unknown.empty?
|
95
|
-
end
|