debian-mirror-gitlab/tooling/danger/product_intelligence.rb

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

62 lines
2.2 KiB
Ruby
Raw Normal View History

2021-09-04 01:27:46 +05:30
# frozen_string_literal: true
# rubocop:disable Style/SignalException
module Tooling
module Danger
module ProductIntelligence
2022-01-26 12:08:38 +05:30
APPROVED_LABEL = 'product intelligence::approved'
REVIEW_LABEL = 'product intelligence::review pending'
2022-06-21 17:19:12 +05:30
CHANGED_FILES_MESSAGE = <<~MSG
For the following files, a review from the [Data team and Product Intelligence team](https://gitlab.com/groups/gitlab-org/growth/product-intelligence/engineers/-/group_members?with_inherited_permissions=exclude) is recommended
Please check the ~"product intelligence" [Service Ping guide](https://docs.gitlab.com/ee/development/service_ping/) or the [Snowplow guide](https://docs.gitlab.com/ee/development/snowplow/).
For MR review guidelines, see the [Service Ping review guidelines](https://docs.gitlab.com/ee/development/service_ping/review_guidelines.html) or the [Snowplow review guidelines](https://docs.gitlab.com/ee/development/snowplow/review_guidelines.html).
%<changed_files>s
MSG
2022-01-26 12:08:38 +05:30
2021-09-04 01:27:46 +05:30
WORKFLOW_LABELS = [
2022-01-26 12:08:38 +05:30
APPROVED_LABEL,
REVIEW_LABEL
2021-09-04 01:27:46 +05:30
].freeze
2022-06-21 17:19:12 +05:30
def check!
# exit if not matching files or if no product intelligence labels
product_intelligence_paths_to_review = helper.changes_by_category[:product_intelligence]
labels_to_add = missing_labels
return if product_intelligence_paths_to_review.empty? || skip_review?
warn format(CHANGED_FILES_MESSAGE, changed_files: helper.markdown_list(product_intelligence_paths_to_review)) unless has_approved_label?
helper.labels_to_add.concat(labels_to_add) unless labels_to_add.empty?
end
private
2021-09-04 01:27:46 +05:30
def missing_labels
2022-01-26 12:08:38 +05:30
return [] unless helper.ci?
2021-09-04 01:27:46 +05:30
labels = []
labels << 'product intelligence' unless helper.mr_has_labels?('product intelligence')
2022-01-26 12:08:38 +05:30
labels << REVIEW_LABEL unless has_workflow_labels?
2021-09-04 01:27:46 +05:30
labels
end
2022-01-26 12:08:38 +05:30
def has_approved_label?
helper.mr_labels.include?(APPROVED_LABEL)
end
def skip_review?
helper.mr_has_labels?('growth experiment')
end
2021-12-11 22:18:48 +05:30
def has_workflow_labels?
(WORKFLOW_LABELS & helper.mr_labels).any?
2021-09-04 01:27:46 +05:30
end
end
end
end