gitlab_roulette 1.0.1 → 1.1.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: 4a95ba8eb6a186d841f06c39f8e8e8e802f827f8b4c80b52431b0116a3706974
4
- data.tar.gz: a27d73f5e631d4e079a32a6a40080ab91b9022988710fb4fbd7575523b0c64a5
3
+ metadata.gz: 45f174369a6c31888b7f3cedf4e1bd495ed8dce4ac7a7824a3c65c72eb47346d
4
+ data.tar.gz: f27f1e828800179dfd44bbe26f0d1012bd86827c8585629f9450ddffa13d40f4
5
5
  SHA512:
6
- metadata.gz: 77a089247d88190d1b948f43489efa78129aa2f35bfc39bc5dcf036086ceb263c45e2a32b706ebf03d137dfadb9927bdf9f88aa33f6dad425ef66abad3d15c62
7
- data.tar.gz: 6c335455cf9b888ca47e917fe3ba0a55255cae9019bcd0b5f5d5663dffb99066b110a97c2adaba83bb43383fdbe63c245605f29c76ace8887a7ddb2e6d749899
6
+ metadata.gz: e085b139aaaf319915fb7f5da03c5fdd3b64b3f691e88e538892556db69f06eefbadc6a0869b077f3c05cfda24ad287c2eb63e6c18550853469e77bdd973c901
7
+ data.tar.gz: 3adf52a215947057c817cc2696371c4d04a70deb509c1b1a3a63a074886673cefef61a91491c6dc82601fbe1de1e2a53a9a775f785edadd9709a841efe5e7ae6
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- gitlab_roulette (1.0.1)
4
+ gitlab_roulette (1.1.0)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
data/bin/console CHANGED
@@ -2,6 +2,7 @@
2
2
 
3
3
  require "bundler/setup"
4
4
  require "gitlab_roulette"
5
+ require "danger"
5
6
 
6
7
  # You can add fixtures and/or initialization code here to make experimenting
7
8
  # with your gem easier. You can also use a different console, if you like.
@@ -1,3 +1,3 @@
1
1
  module GitlabRoulette
2
- VERSION = "1.0.1"
2
+ VERSION = "1.1.0"
3
3
  end
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.1
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')
@@ -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
@@ -1,10 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require_relative '../../lib/gitlab_roulette/danger/roulette'
4
-
5
- module Danger
6
- class Roulette < Plugin
7
- # Put the helper code somewhere it can be tested
8
- include GitlabRoulette::Danger::Roulette
9
- end
10
- end
@@ -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