summaryrefslogtreecommitdiff
path: root/danger/product_analytics/Dangerfile
blob: b2144e7f034772ae98fce4c0c962d08f34dc2d9d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
# frozen_string_literal: true

PRODUCT_ANALYTICS_CHANGED_FILES_MESSAGE = <<~MSG
For the following files, a review from the [Data team and Product Analytics team](https://gitlab.com/groups/gitlab-org/growth/product_analytics/engineers/-/group_members?with_inherited_permissions=exclude) is recommended
Please check the ~"product analytics" [guide](https://docs.gitlab.com/ee/development/product_analytics/usage_ping.html) and reach out to %<product_analytics_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

PRODUCT_ANALYTICS_ENGINEERS_GROUP = '@gitlab-org/growth/product_analytics/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?
              "`#{PRODUCT_ANALYTICS_ENGINEERS_GROUP}`"
            else
              PRODUCT_ANALYTICS_ENGINEERS_GROUP
            end

  warn format(PRODUCT_ANALYTICS_CHANGED_FILES_MESSAGE, changed_files: helper.markdown_list(changed_files), product_analytics_engineers_group: mention)
  warn format(UPDATE_METRICS_DEFINITIONS_MESSAGE) unless helper.changed_files(/usage_ping\.md/).any?

  product_analytics_labels = ['product analytics']
  product_analytics_labels << 'product analytics::review pending' unless helper.mr_has_labels?('product analytics::reviewed')

  markdown(helper.prepare_labels_for_mr(product_analytics_labels))
end