Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitaly.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPatrick Steinhardt <psteinhardt@gitlab.com>2021-12-17 09:56:50 +0300
committerPatrick Steinhardt <psteinhardt@gitlab.com>2021-12-17 11:01:09 +0300
commit0fa3cb8bdb7b17a6986494ad633c1b5ba2e5c6a7 (patch)
tree5baf37054ef693a10cd546b2cb796ce43261def3 /danger/rules/labels/Dangerfile
parent61471fff6a262bc2c9c5270016f8a677e48638bb (diff)
danger: Move rules into subdirectory
It's best practice for Danger rules to live in a separate "rules/" directory. Let's move them there, which also allows us to use globs to import all rules.
Diffstat (limited to 'danger/rules/labels/Dangerfile')
-rw-r--r--danger/rules/labels/Dangerfile48
1 files changed, 48 insertions, 0 deletions
diff --git a/danger/rules/labels/Dangerfile b/danger/rules/labels/Dangerfile
new file mode 100644
index 000000000..6bfee7178
--- /dev/null
+++ b/danger/rules/labels/Dangerfile
@@ -0,0 +1,48 @@
+def changelog_entry
+ @changelog_entry ||=
+ begin
+ file = git.added_files.find { |path| path =~ %r{\Achangelogs/unreleased/} }
+
+ YAML.safe_load(File.read(file))
+ rescue
+ # The change log danger file will handle this
+ {}
+ end
+end
+
+required_labels = %w[devops::create]
+required_labels << "group::gitaly" if GITALY_TEAM.include?(gitlab.mr_author)
+
+TYPE_TO_LABEL = {
+ 'added' => %w[type::feature feature::addition],
+ 'fixed' => ['type::bug'],
+ 'changed' => ['type::maintenance'],
+ 'deprecated' => ['type::maintenance'],
+ 'security' => ['security'],
+ 'removed' => ['type::maintenance'],
+ 'performance' => %w[type::maintenance performance],
+ 'other' => ['type::tooling'],
+ nil => []
+}
+
+INHERITABLE_LABELS = TYPE_TO_LABEL.values.flatten + %w[Deliverable]
+
+def inherited_labels
+ gitlab.api
+ .merge_request_closes_issues( gitlab.mr_json['project_id'], gitlab.mr_json['iid'])
+ .flat_map { |i| i.labels }
+ .compact
+ .uniq
+ .select { |label| INHERITABLE_LABELS.include?(label) }
+end
+
+required_labels.concat(TYPE_TO_LABEL[changelog_entry["type"]])
+
+mr_labels = gitlab.mr_labels | required_labels | inherited_labels
+gitlab.api.update_merge_request(
+ gitlab.mr_json['project_id'],
+ gitlab.mr_json['iid'],
+ labels: mr_labels.join(",")
+)
+
+# vim: ft=ruby