summaryrefslogtreecommitdiff
path: root/danger/metadata/Dangerfile
blob: f2d68e64eb6e5030e463c5bf9ae5b1210883e496 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
# rubocop:disable Style/SignalException

THROUGHPUT_LABELS = [
  'Community contribution',
  'security',
  'bug',
  'feature',
  'backstage'
].freeze

if gitlab.mr_body.size < 5
  fail "Please provide a proper merge request description."
end

if gitlab.mr_labels.empty?
  fail "Please add labels to this merge request."
end

if (THROUGHPUT_LABELS & gitlab.mr_labels).empty?
  warn 'Please add a [throughput label](https://about.gitlab.com/handbook/engineering/management/throughput/#implementation) to this merge request.'
end

unless gitlab.mr_json["assignee"]
  warn "This merge request does not have any assignee yet. Setting an assignee clarifies who needs to take action on the merge request at any given time."
end

has_milestone = !gitlab.mr_json["milestone"].nil?

unless has_milestone
  warn "This merge request does not refer to an existing milestone.", sticky: false
end

has_pick_into_stable_label = gitlab.mr_labels.find { |label| label.start_with?('Pick into') }

if gitlab.branch_for_base != "master" && !has_pick_into_stable_label
  warn "Most of the time, merge requests should target `master`. Otherwise, please set the relevant `Pick into X.Y` label."
end

if gitlab.mr_json['title'].length > 72
  warn 'The title of this merge request is longer than 72 characters and ' \
    'would violate our commit message rules when using the Squash on Merge ' \
    'feature. Please consider adjusting the title, or rebase the ' \
    "commits manually and don't use Squash on Merge."
end