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

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'tooling/danger')
-rw-r--r--tooling/danger/changelog.rb2
-rw-r--r--tooling/danger/product_intelligence.rb57
-rw-r--r--tooling/danger/project_helper.rb41
3 files changed, 43 insertions, 57 deletions
diff --git a/tooling/danger/changelog.rb b/tooling/danger/changelog.rb
index c053d366199..fbf8ae931e2 100644
--- a/tooling/danger/changelog.rb
+++ b/tooling/danger/changelog.rb
@@ -6,7 +6,7 @@ module Tooling
module Danger
module Changelog
NO_CHANGELOG_LABELS = [
- 'tooling',
+ 'type::tooling',
'tooling::pipelines',
'tooling::workflow',
'ci-build',
diff --git a/tooling/danger/product_intelligence.rb b/tooling/danger/product_intelligence.rb
index 848f99eeff5..72fc8deac43 100644
--- a/tooling/danger/product_intelligence.rb
+++ b/tooling/danger/product_intelligence.rb
@@ -9,71 +9,20 @@ module Tooling
'product intelligence::review pending'
].freeze
- 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/index.js',
- 'app/assets/javascripts/tracking/constants.js',
- 'app/assets/javascripts/tracking/get_standard_context.js',
- 'spec/frontend/tracking/get_standard_context_spec.js',
- 'spec/frontend/tracking_spec.js',
- 'generator_templates/usage_metric_definition/metric_definition.yml',
- 'lib/generators/gitlab/usage_metric/usage_metric_generator.rb',
- 'lib/generators/gitlab/usage_metric_definition_generator.rb',
- 'lib/generators/gitlab/usage_metric_definition/redis_hll_generator.rb',
- 'spec/lib/generators/gitlab/usage_metric_generator_spec.rb',
- 'spec/lib/generators/gitlab/usage_metric_definition_generator_spec.rb',
- 'spec/lib/generators/gitlab/usage_metric_definition/redis_hll_generator_spec.rb',
- 'config/metrics/schema.json'
- ].freeze
-
def missing_labels
return [] if !helper.ci? || helper.mr_has_labels?('growth experiment')
labels = []
labels << 'product intelligence' unless helper.mr_has_labels?('product intelligence')
- labels << 'product intelligence::review pending' unless helper.mr_has_labels?(WORKFLOW_LABELS)
+ labels << 'product intelligence::review pending' unless has_workflow_labels?
labels
end
- def matching_changed_files
- tracking_changed_files = all_changed_files & TRACKING_FILES
- usage_data_changed_files = all_changed_files.grep(%r{(usage_data)})
-
- usage_data_changed_files + tracking_changed_files + metrics_changed_files + snowplow_changed_files
- end
-
private
- def all_changed_files
- helper.all_changed_files
- end
-
- def metrics_changed_files
- all_changed_files.grep(%r{((ee/)?config/metrics/.*\.yml)})
- end
-
- def matching_files?(file, extension:, pattern:)
- return unless file.end_with?(extension)
-
- helper.changed_lines(file).grep(pattern).any?
- end
-
- def snowplow_changed_files
- js_patterns = Regexp.union(
- 'Tracking.event',
- /\btrack\(/,
- 'data-track-action'
- )
- all_changed_files.select do |file|
- matching_files?(file, extension: '.rb', pattern: %r{Gitlab::Tracking\.(event|enabled\?|options)$}) ||
- matching_files?(file, extension: '.js', pattern: js_patterns) ||
- matching_files?(file, extension: '.vue', pattern: js_patterns) ||
- matching_files?(file, extension: '.haml', pattern: %r{data: \{ track})
- end
+ def has_workflow_labels?
+ (WORKFLOW_LABELS & helper.mr_labels).any?
end
end
end
diff --git a/tooling/danger/project_helper.rb b/tooling/danger/project_helper.rb
index c552a75bba8..5d338393f90 100644
--- a/tooling/danger/project_helper.rb
+++ b/tooling/danger/project_helper.rb
@@ -22,12 +22,12 @@ module Tooling
ce_ee_vue_templates
ci_templates
datateam
- metadata
feature_flag
roulette
sidekiq_queues
specialization_labels
specs
+ z_metadata
].freeze
MESSAGE_PREFIX = '==>'
@@ -38,10 +38,34 @@ module Tooling
%r{\A((ee|jh)/)?config/feature_flags/} => :feature_flag,
+ %r{doc/api/usage_data.md} => [:product_intelligence],
+
%r{\Adoc/.*(\.(md|png|gif|jpg|yml))\z} => :docs,
%r{\A(CONTRIBUTING|LICENSE|MAINTENANCE|PHILOSOPHY|PROCESS|README)(\.md)?\z} => :docs,
%r{\Adata/whats_new/} => :docs,
+ %r{\A((ee|jh)/)?app/finders/(.+/)?integrations/} => [:integrations_be, :database, :backend],
+ [%r{\A((ee|jh)/)?db/(geo/)?(migrate|post_migrate)/}, %r{(:integrations|:\w+_tracker_data)\b}] => [:integrations_be, :database, :migration],
+ [%r{\A((ee|jh)/)?(app|lib)/.+\.rb}, %r{\b(Integrations::|\.execute_(integrations|hooks))\b}] => [:integrations_be, :backend],
+ %r{\A(
+ ((ee|jh)/)?app/((?!.*clusters)(?!.*alert_management)(?!.*views)(?!.*assets).+/)?integration.+ |
+ ((ee|jh)/)?app/((?!.*search).+/)?project_service.+ |
+ ((ee|jh)/)?app/(models|helpers|workers|services|controllers)/(.+/)?(jira_connect.+|.*hook.+) |
+ ((ee|jh)/)?app/controllers/(.+/)?oauth/jira/.+ |
+ ((ee|jh)/)?app/services/(.+/)?jira.+ |
+ ((ee|jh)/)?app/workers/(.+/)?(propagate_integration.+|irker_worker\.rb) |
+ ((ee|jh)/)?lib/(.+/)?(atlassian|data_builder|hook_data)/.+ |
+ ((ee|jh)/)?lib/(.+/)?.*integration.+ |
+ ((ee|jh)/)?lib/(.+/)?api/v3/github\.rb |
+ ((ee|jh)/)?lib/(.+/)?api/github/entities\.rb
+ )\z}x => [:integrations_be, :backend],
+
+ %r{\A(
+ ((ee|jh)/)?app/(views|assets)/((?!.*clusters)(?!.*alerts_settings).+/)?integration.+ |
+ ((ee|jh)/)?app/(views|assets)/(.+/)?jira_connect.+ |
+ ((ee|jh)/)?app/(views|assets)/((?!.*filtered_search).+/)?hooks?.+
+ )\z}x => [:integrations_fe, :frontend],
+
%r{\A(
app/assets/javascripts/tracking/.*\.js |
spec/frontend/tracking/.*\.js |
@@ -82,6 +106,7 @@ module Tooling
%r{\A((ee|jh)/)?app/finders/} => [:database, :backend],
%r{\Arubocop/cop/migration(/|\.rb)} => :database,
+ %r{\A(\.ruby-version\z|\.nvmrc\z|\.tool-versions\z)} => :tooling,
%r{\A(\.gitlab-ci\.yml\z|\.gitlab\/ci)} => :tooling,
%r{\A\.codeclimate\.yml\z} => :tooling,
%r{\Alefthook.yml\z} => :tooling,
@@ -100,6 +125,7 @@ module Tooling
%r{\A((ee|jh)/)?spec/support/shared_contexts/features/} => :test,
%r{\A((ee|jh)/)?spec/support/helpers/features/} => :test,
+ %r{\A((spec/)?lib/generators/gitlab/usage_metric_)} => [:product_intelligence],
%r{\A((ee|jh)/)?lib/gitlab/usage_data_counters/.*\.yml\z} => [:product_intelligence],
%r{\A((ee|jh)/)?config/metrics/((.*\.yml)|(schema\.json))\z} => [:product_intelligence],
%r{\A((ee|jh)/)?lib/gitlab/usage_data(_counters)?(/|\.rb)} => [:backend, :product_intelligence],
@@ -108,9 +134,16 @@ module Tooling
spec/lib/gitlab/tracking_spec\.rb |
app/helpers/tracking_helper\.rb |
spec/helpers/tracking_helper_spec\.rb |
+ (spec/)?lib/generators/gitlab/usage_metric_\S+ |
+ (spec/)?lib/generators/gitlab/usage_metric_definition/redis_hll_generator(_spec)?\.rb |
lib/generators/rails/usage_metric_definition_generator\.rb |
spec/lib/generators/usage_metric_definition_generator_spec\.rb |
generator_templates/usage_metric_definition/metric_definition\.yml)\z}x => [:backend, :product_intelligence],
+ %r{gitlab/usage_data(_spec)?\.rb} => [:product_intelligence],
+ [%r{\.haml\z}, %r{data: \{ track}] => [:product_intelligence],
+ [%r{\.(rb|haml)\z}, %r{Gitlab::Tracking\.(event|enabled\?|options)$}] => [:product_intelligence],
+ [%r{\.(vue|js)\z}, %r{(Tracking.event|/\btrack\(/|data-track-action)}] => [:product_intelligence],
+
%r{\A((ee|jh)/)?app/(?!assets|views)[^/]+} => :backend,
%r{\A((ee|jh)/)?(bin|config|generator_templates|lib|rubocop)/} => :backend,
%r{\A((ee|jh)/)?spec/migrations} => :database,
@@ -179,6 +212,10 @@ module Tooling
read_file(filename).lines(chomp: true)
end
+ def labels_to_add
+ @labels_to_add ||= []
+ end
+
private
def read_file(filename)
@@ -187,7 +224,7 @@ module Tooling
def ee?
# Support former project name for `dev` and support local Danger run
- %w[gitlab gitlab-ee].include?(ENV['CI_PROJECT_NAME']) || Dir.exist?(File.expand_path('../../../ee', __dir__))
+ %w[gitlab gitlab-ee].include?(ENV['CI_PROJECT_NAME']) || Dir.exist?(File.expand_path('../../ee', __dir__))
end
end
end