danger: Don't warn for missing labels while adding some

Signed-off-by: Rémy Coutable <remy@rymai.me>
This commit is contained in:
Rémy Coutable 2021-10-25 15:44:29 +02:00
parent cb5df34aa1
commit 7c772bebf6
No known key found for this signature in database
GPG key ID: 4C514D15D07186F1
8 changed files with 38 additions and 19 deletions

View file

@ -17,6 +17,14 @@ end
anything_to_post = status_report.values.any? { |data| data.any? }
if helper.ci? && anything_to_post
return unless helper.ci?
if project_helper.labels_to_add.any?
gitlab.api.update_merge_request(gitlab.mr_json['project_id'],
gitlab.mr_json['iid'],
add_labels: project_helper.labels_to_add.join(','))
end
if anything_to_post
markdown("**If needed, you can retry the [`danger-review` job](#{ENV['CI_JOB_URL']}) that generated this comment.**")
end

View file

@ -66,8 +66,6 @@ if gitlab.mr_labels.include?('database') || db_paths_to_review.any?
end
unless helper.has_database_scoped_labels?
gitlab.api.update_merge_request(gitlab.mr_json['project_id'],
gitlab.mr_json['iid'],
add_labels: 'database::review pending')
project_helper.labels_to_add << 'database::review pending'
end
end

View file

@ -58,9 +58,7 @@ def message_for_feature_flag_with_group!(feature_flag:, mr_group_label:)
return if feature_flag.group_match_mr_label?(mr_group_label)
if mr_group_label.nil?
gitlab.api.update_merge_request(gitlab.mr_json['project_id'],
gitlab.mr_json['iid'],
add_labels: feature_flag.group)
project_helper.labels_to_add << feature_flag.group
else
fail %(`group` is set to ~"#{feature_flag.group}" in #{gitlab.html_link(feature_flag.path)}, which does not match ~"#{mr_group_label}" set on the MR!)
end

View file

@ -13,12 +13,10 @@ MSG
# exit if not matching files or if no product intelligence labels
product_intelligence_paths_to_review = project_helper.changes_by_category[:product_intelligence]
labels = product_intelligence.missing_labels
labels_to_add = product_intelligence.missing_labels
return if product_intelligence_paths_to_review.empty? || labels.empty?
return if product_intelligence_paths_to_review.empty? || labels_to_add.empty?
warn format(CHANGED_FILES_MESSAGE, changed_files: helper.markdown_list(product_intelligence_paths_to_review))
gitlab.api.update_merge_request(gitlab.mr_json['project_id'],
gitlab.mr_json['iid'],
add_labels: labels)
project_helper.labels_to_add.concat(labels_to_add)

View file

@ -19,8 +19,4 @@ labels_to_add = project_helper.changes_by_category.each_with_object([]) do |(cat
memo << label if label && !gitlab.mr_labels.include?(label)
end
if labels_to_add.any?
gitlab.api.update_merge_request(gitlab.mr_json['project_id'],
gitlab.mr_json['iid'],
add_labels: labels_to_add.join(','))
end
project_helper.labels_to_add.concat(labels_to_add) if labels_to_add.any?

View file

@ -18,7 +18,7 @@ if gitlab.mr_body.size < 5
fail "Please provide a proper merge request description."
end
if (TYPE_LABELS & gitlab.mr_labels).empty?
if (TYPE_LABELS & (gitlab.mr_labels + project_helper.labels_to_add)).empty?
warn 'Please add a [merge request type](https://about.gitlab.com/handbook/engineering/metrics/#work-type-classification) to this merge request.'
end

View file

@ -118,6 +118,23 @@ However, you can speed these cycles up somewhat by emptying the
`.gitlab/ci/rails.gitlab-ci.yml` file in your merge request. Just don't forget
to revert the change before merging!
#### Adding labels via Danger
NOTE:
This is currently applicable to the [`gitlab-org/gitlab`](https://gitlab.com/gitlab-org/gitlab)
project only.
Danger is often used to improve MR hygiene by adding labels. Instead of calling the
API directly in your `Dangerfile`, add the labels to the `project_helper.labels_to_add` array.
The main `Dangerfile` will then take care of adding the labels to the MR with a single API call.
#### Shared rules and plugins
If the rule or plugin you implement can be useful for other projects, think about
upstreaming them to the [`gitlab-org/gitlab-dangerfiles`](https://gitlab.com/gitlab-org/gitlab-dangerfiles) project.
#### Enable Danger on a project
To enable the Dangerfile on another existing GitLab project, run the following
extra steps:

View file

@ -22,12 +22,12 @@ module ProjectHelper
ce_ee_vue_templates
ci_templates
datateam
metadata
feature_flag
roulette
sidekiq_queues
specialization_labels
specs
z_metadata
].freeze
MESSAGE_PREFIX = '==>'
@ -189,6 +189,10 @@ def file_lines(filename)
read_file(filename).lines(chomp: true)
end
def labels_to_add
@labels_to_add ||= []
end
private
def read_file(filename)