diff options
author | Douglas Barbosa Alexandre <dbalexandre@gmail.com> | 2019-04-09 16:56:59 +0300 |
---|---|---|
committer | Douglas Barbosa Alexandre <dbalexandre@gmail.com> | 2019-04-09 16:56:59 +0300 |
commit | 58d4099c1469dba9ff850733ba29da11f6eeb158 (patch) | |
tree | 1b3f599bbf7f1e3490a1036d2a9941318ab78af9 /danger/roulette/Dangerfile | |
parent | 2347b04e179b3ce7ce88f4a8a41396af64a5df96 (diff) | |
parent | 28531ab43666b5fdf37e0a70db3bcbf7d3f92183 (diff) |
Merge branch 'stable-reviewer-roulette' into 'master'
Stable reviewer roulette
Closes #57766
See merge request gitlab-org/gitlab-ce!27117
Diffstat (limited to 'danger/roulette/Dangerfile')
-rw-r--r-- | danger/roulette/Dangerfile | 21 |
1 files changed, 17 insertions, 4 deletions
diff --git a/danger/roulette/Dangerfile b/danger/roulette/Dangerfile index 81ee0397bdc..e6820f49ee2 100644 --- a/danger/roulette/Dangerfile +++ b/danger/roulette/Dangerfile @@ -1,5 +1,7 @@ # frozen_string_literal: true +require 'digest/md5' + MESSAGE = <<MARKDOWN ## Reviewer roulette @@ -29,17 +31,22 @@ Please consider creating a merge request to for them. MARKDOWN -def spin(team, project, category) +def spin(team, project, category, branch_name) + rng = Random.new(Digest::MD5.hexdigest(branch_name).to_i(16)) + reviewers = team.select { |member| member.reviewer?(project, category) } traintainers = team.select { |member| member.traintainer?(project, category) } maintainers = team.select { |member| member.maintainer?(project, category) } # TODO: filter out people who are currently not in the office + # https://gitlab.com/gitlab-org/gitlab-ce/issues/57652 + # # TODO: take CODEOWNERS into account? + # https://gitlab.com/gitlab-org/gitlab-ce/issues/57653 # Make traintainers have triple the chance to be picked as a reviewer - reviewer = (reviewers + traintainers + traintainers).sample - maintainer = maintainers.sample + reviewer = (reviewers + traintainers + traintainers).sample(random: rng) + maintainer = maintainers.sample(random: rng) "| #{helper.label_for_category(category)} | #{reviewer&.markdown_name} | #{maintainer&.markdown_name} |" end @@ -65,6 +72,12 @@ categories = changes.keys - [:unknown] # CSS Clean up MRs are reviewed using a slightly different process, so we # disable the review roulette for such MRs. if changes.any? && !gitlab.mr_labels.include?('single codebase') && !gitlab.mr_labels.include?('CSS cleanup') + # Strip leading and trailing CE/EE markers + canonical_branch_name = gitlab + .mr_json['source_branch'] + .gsub(/^[ce]e-/, '') + .gsub(/-[ce]e$/, '') + team = begin helper.project_team @@ -79,7 +92,7 @@ if changes.any? && !gitlab.mr_labels.include?('single codebase') && !gitlab.mr_l project = helper.project_name unknown = changes.fetch(:unknown, []) - rows = categories.map { |category| spin(team, project, category) } + rows = categories.map { |category| spin(team, project, category, canonical_branch_name) } markdown(MESSAGE) markdown(CATEGORY_TABLE_HEADER + rows.join("\n")) unless rows.empty? |