diff options
Diffstat (limited to 'danger/product_intelligence/Dangerfile')
-rw-r--r-- | danger/product_intelligence/Dangerfile | 39 |
1 files changed, 31 insertions, 8 deletions
diff --git a/danger/product_intelligence/Dangerfile b/danger/product_intelligence/Dangerfile index ec432544977..5fd5b962993 100644 --- a/danger/product_intelligence/Dangerfile +++ b/danger/product_intelligence/Dangerfile @@ -1,8 +1,9 @@ # frozen_string_literal: true +# rubocop:disable Style/SignalException 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. +Please check the ~"product intelligence" [guide](https://docs.gitlab.com/ee/development/usage_ping.html) and reach out to %<engineers_group>s group for a review. %<changed_files>s @@ -16,21 +17,41 @@ MSG ENGINEERS_GROUP = '@gitlab-org/growth/product-intelligence/engineers' +UPDATE_DICTIONARY_MESSAGE = <<~MSG + When updating metrics definitions, please update [Metrics Dictionary](https://docs.gitlab.com/ee/development/usage_ping/dictionary.html) + + ```shell + bundle exec rake gitlab:usage_data:generate_metrics_dictionary + ``` +MSG + +all_changed_files = helper.all_changed_files + 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' + 'spec/frontend/tracking_spec.js', + 'generator_templates/usage_metric_definition/metric_definition.yml', + 'lib/generators/rails/usage_metric_definition_generator.rb', + 'spec/lib/generators/usage_metric_definition_generator_spec.rb', + 'config/metrics/schema.json' ] -usage_data_changed_files = helper.changed_files(/usage_data/) -snowplow_events_changed_files = git.modified_files & tracking_files +tracking_changed_files = all_changed_files & tracking_files +usage_data_changed_files = all_changed_files.grep(%r{(usage_data)}) +metrics_changed_files = all_changed_files.grep(%r{((ee/)?config/metrics/.*\.yml)}) +dictionary_changed_file = all_changed_files.grep(%r{(doc/development/usage_ping/dictionary.md)}) -changed_files = (usage_data_changed_files + snowplow_events_changed_files) +snowplow_changed_files = all_changed_files.select do |file| + helper.changed_lines(file).grep(%r{Gitlab::Tracking\.event}).any? +end + +matching_changed_files = usage_data_changed_files + tracking_changed_files + metrics_changed_files + dictionary_changed_file + snowplow_changed_files -if changed_files.any? +if matching_changed_files.any? mention = if helper.draft_mr? "`#{ENGINEERS_GROUP}`" @@ -38,8 +59,10 @@ if changed_files.any? 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? + warn format(CHANGED_FILES_MESSAGE, changed_files: helper.markdown_list(matching_changed_files), engineers_group: mention) + warn format(UPDATE_METRICS_DEFINITIONS_MESSAGE) if usage_data_changed_files.any? + + fail format(UPDATE_DICTIONARY_MESSAGE) if metrics_changed_files.any? && dictionary_changed_file.empty? labels = ['product intelligence'] labels << 'product intelligence::review pending' unless helper.mr_has_labels?('product intelligence::approved') |