diff options
author | Patrick Steinhardt <psteinhardt@gitlab.com> | 2021-12-17 09:56:50 +0300 |
---|---|---|
committer | Patrick Steinhardt <psteinhardt@gitlab.com> | 2021-12-17 11:01:09 +0300 |
commit | 0fa3cb8bdb7b17a6986494ad633c1b5ba2e5c6a7 (patch) | |
tree | 5baf37054ef693a10cd546b2cb796ce43261def3 /danger/rules/labels/Dangerfile | |
parent | 61471fff6a262bc2c9c5270016f8a677e48638bb (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/Dangerfile | 48 |
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 |