Skip to content
Snippets Groups Projects

Reviewer roulette via Danger

Merged Nick Thomas requested to merge 56087-danger-roulette into master
All threads resolved!
Compare and Show latest version
4 files
+ 124
18
Compare changes
  • Side-by-side
  • Inline
Files
4
+ 12
9
@@ -25,16 +25,10 @@ UNKNOWN_FILES_MESSAGE = <<MARKDOWN
These files couldn't be categorised, so Danger was unable to suggest a reviewer.
Please consider creating a merge request to
[add support](https://gitlab.com/gitlab-org/gitlab-ce/blob/master/danger/plugins/helper.rb)
[add support](https://gitlab.com/gitlab-org/gitlab-ce/blob/master/lib/gitlab/danger/helper.rb)
for them.
MARKDOWN
def markdown_name(teammate)
return nil unless teammate
"[#{teammate.name}](https://gitlab.com/#{teammate.gitlab}) (`@#{teammate.gitlab}`)"
end
def spin(team, project, category)
reviewers = team.select { |member| member.reviewer?(project, category) }
maintainers = team.select { |member| member.maintainer?(project, category) }
@@ -45,7 +39,7 @@ def spin(team, project, category)
reviewer = reviewers[rand(reviewers.size)]
maintainer = maintainers[rand(maintainers.size)]
"| #{helper.label_for_category(category)} | #{markdown_name(reviewer)} | #{markdown_name(maintainer)} |"
"| #{helper.label_for_category(category)} | #{reviewer&.markdown_name} | #{maintainer&.markdown_name} |"
end
def build_list(items)
@@ -62,8 +56,17 @@ changes = helper.changes_by_category
categories = changes.keys - [:unknown]
unless changes.empty?
team =
begin
helper.project_team
rescue => err
warn("Reviewer roulette failed to load team data: #{err.message}")
[]
end
# Exclude the MR author from the team for selection purposes
team = helper.project_team.delete_if { |teammate| teammate.gitlab == gitlab.mr_author }
team.delete_if { |teammate| teammate.username == gitlab.mr_author }
project = helper.project_name
unknown = changes.fetch(:unknown, [])
Loading