diff options
Diffstat (limited to 'danger/product_intelligence/Dangerfile')
-rw-r--r-- | danger/product_intelligence/Dangerfile | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/danger/product_intelligence/Dangerfile b/danger/product_intelligence/Dangerfile new file mode 100644 index 00000000000..ec432544977 --- /dev/null +++ b/danger/product_intelligence/Dangerfile @@ -0,0 +1,48 @@ +# frozen_string_literal: true + +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" [guide](https://docs.gitlab.com/ee/development/product_analytics/usage_ping.html) and reach out to %<engineers_group>s group for a review. + + +%<changed_files>s + +MSG + +UPDATE_METRICS_DEFINITIONS_MESSAGE = <<~MSG + When adding, changing, or updating metrics, please update the [Event dictionary Usage Ping table](https://about.gitlab.com/handbook/product/product-analytics-guide#event-dictionary). + +MSG + +ENGINEERS_GROUP = '@gitlab-org/growth/product-intelligence/engineers' + +tracking_files = [ + 'lib/gitlab/tracking.rb', + 'spec/lib/gitlab/tracking_spec.rb', + 'app/helpers/tracking_helper.rb', + 'spec/helpers/tracking_helper_spec.rb', + 'app/assets/javascripts/tracking.js', + 'spec/frontend/tracking_spec.js' +] + +usage_data_changed_files = helper.changed_files(/usage_data/) +snowplow_events_changed_files = git.modified_files & tracking_files + +changed_files = (usage_data_changed_files + snowplow_events_changed_files) + +if changed_files.any? + + mention = if helper.draft_mr? + "`#{ENGINEERS_GROUP}`" + else + ENGINEERS_GROUP + end + + warn format(CHANGED_FILES_MESSAGE, changed_files: helper.markdown_list(changed_files), engineers_group: mention) + warn format(UPDATE_METRICS_DEFINITIONS_MESSAGE) unless helper.changed_files(/usage_ping\.md/).any? + + labels = ['product intelligence'] + labels << 'product intelligence::review pending' unless helper.mr_has_labels?('product intelligence::approved') + + markdown(helper.prepare_labels_for_mr(labels)) +end |