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