42 lines
1.3 KiB
Ruby
42 lines
1.3 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
# rubocop:disable Style/SignalException
|
|
|
|
DEFAULT_BRANCH = 'master'
|
|
|
|
THROUGHPUT_LABELS = [
|
|
'Community contribution',
|
|
'security',
|
|
'bug',
|
|
'feature',
|
|
'feature::addition',
|
|
'feature::maintenance',
|
|
'tooling',
|
|
'tooling::pipelines',
|
|
'tooling::workflow',
|
|
'documentation'
|
|
].freeze
|
|
|
|
if gitlab.mr_body.size < 5
|
|
fail "Please provide a proper merge request description."
|
|
end
|
|
|
|
if (THROUGHPUT_LABELS & gitlab.mr_labels).empty?
|
|
warn 'Please add a [merge request type](https://about.gitlab.com/handbook/engineering/metrics/#work-type-classification) 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 || (helper.security_mr? && gitlab.branch_for_base == DEFAULT_BRANCH)
|
|
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 != DEFAULT_BRANCH && !has_pick_into_stable_label && !helper.security_mr?
|
|
warn "Most of the time, merge requests should target `#{DEFAULT_BRANCH}`. Otherwise, please set the relevant `Pick into X.Y` label."
|
|
end
|