diff --git a/app/controllers/explore/catalog_controller.rb b/app/controllers/explore/catalog_controller.rb index 0c78c1fbdb8c9cfeddc268df450927cdeccff826..4bcddf367b242c9e7530ccd0832efd8481f2a530 100644 --- a/app/controllers/explore/catalog_controller.rb +++ b/app/controllers/explore/catalog_controller.rb @@ -2,8 +2,11 @@ module Explore class CatalogController < Explore::ApplicationController + include ProductAnalyticsTracking + feature_category :pipeline_composition before_action :check_resource_access, only: :show + track_internal_event :index, name: 'unique_users_visiting_ci_catalog' def show; end @@ -20,5 +23,13 @@ def check_resource_access def catalog_resource ::Ci::Catalog::Listing.new(current_user).find_resource(full_path: params[:full_path]) end + + def tracking_namespace_source + current_user.namespace + end + + def tracking_project_source + nil + end end end diff --git a/config/events/unique_users_visiting_ci_catalog.yml b/config/events/unique_users_visiting_ci_catalog.yml new file mode 100644 index 0000000000000000000000000000000000000000..f6abc839688f6c8de2b92fec833d0b798cbbac88 --- /dev/null +++ b/config/events/unique_users_visiting_ci_catalog.yml @@ -0,0 +1,24 @@ +--- +description: Unique self managed and .com users visiting CI/CD Catalog page count on monthly and weekly basis. +category: InternalEventTracking +action: unique_users_visiting_ci_catalog +label_description: +property_description: +value_description: +extra_properties: +identifiers: +product_section: ops +product_stage: verify +product_group: pipeline_authoring +milestone: "16.7" +introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/137564 +distributions: +- ce +- ee +tiers: +- free +- premium +- ultimate +events: + - name: unique_users_visiting_ci_catalog + unique: user.id diff --git a/config/metrics/counts_28d/count_distinct_user_id_from_unique_users_visiting_ci_catalog_28d.yml b/config/metrics/counts_28d/count_distinct_user_id_from_unique_users_visiting_ci_catalog_28d.yml new file mode 100644 index 0000000000000000000000000000000000000000..45e3b6fdb8c41d9922b9bbd7e21446f2f2af90d3 --- /dev/null +++ b/config/metrics/counts_28d/count_distinct_user_id_from_unique_users_visiting_ci_catalog_28d.yml @@ -0,0 +1,28 @@ +--- +key_path: redis_hll_counters.pipeline_authoring.unique_users_visiting_ci_catalog_monthly +description: Unique self managed and .com users visiting CI/CD Catalog page monthly count. +product_section: ops +product_stage: verify +product_group: pipeline_authoring +performance_indicator_type: [] +value_type: number +status: active +milestone: "16.7" +introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/137564 +time_frame: 28d +data_source: internal_events +data_category: optional +instrumentation_class: RedisHLLMetric +distribution: +- ce +- ee +tier: +- free +- premium +- ultimate +options: + events: + - unique_users_visiting_ci_catalog +events: + - name: unique_users_visiting_ci_catalog + unique: user.id diff --git a/config/metrics/counts_7d/count_distinct_user_id_from_unique_users_visiting_ci_catalog_7d.yml b/config/metrics/counts_7d/count_distinct_user_id_from_unique_users_visiting_ci_catalog_7d.yml new file mode 100644 index 0000000000000000000000000000000000000000..1709265b9cefc95883cd36cb9448bcabb1c4205d --- /dev/null +++ b/config/metrics/counts_7d/count_distinct_user_id_from_unique_users_visiting_ci_catalog_7d.yml @@ -0,0 +1,28 @@ +--- +key_path: redis_hll_counters.pipeline_authoring.unique_users_visiting_ci_catalog_weekly +description: Unique self managed and .com users visiting CI/CD Catalog page weekly count. +product_section: ops +product_stage: verify +product_group: pipeline_authoring +performance_indicator_type: [] +value_type: number +status: active +milestone: "16.7" +introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/137564 +time_frame: 7d +data_source: internal_events +data_category: optional +instrumentation_class: RedisHLLMetric +distribution: +- ce +- ee +tier: +- free +- premium +- ultimate +options: + events: + - unique_users_visiting_ci_catalog +events: + - name: unique_users_visiting_ci_catalog + unique: user.id diff --git a/spec/requests/explore/catalog_controller_spec.rb b/spec/requests/explore/catalog_controller_spec.rb index 051379c9641c2952255789a5b0c3ba933ace2afd..e75b0bba5a63aeb0b2b596a68e14983e898ab6df 100644 --- a/spec/requests/explore/catalog_controller_spec.rb +++ b/spec/requests/explore/catalog_controller_spec.rb @@ -3,7 +3,10 @@ require 'spec_helper' RSpec.describe Explore::CatalogController, feature_category: :pipeline_composition do - let_it_be(:catalog_resource) { create(:ci_catalog_resource, state: :published) } + let_it_be(:namespace) { create(:group) } + let_it_be(:project) { create(:project, namespace: namespace) } + let_it_be(:catalog_resource) { create(:ci_catalog_resource, :published, project: project) } + let_it_be(:user) { create(:user) } before_all do @@ -34,17 +37,33 @@ it_behaves_like 'basic get requests', :show context 'when rendering a draft catalog resource' do - it 'responds with 404' do - catalog_resource = create(:ci_catalog_resource, state: :draft) + it 'returns not found error' do + draft_catalog_resource = create(:ci_catalog_resource, state: :draft) - get explore_catalog_path(catalog_resource) + get explore_catalog_path(draft_catalog_resource) expect(response).to have_gitlab_http_status(:not_found) end end + + context 'when rendering a published catalog resource' do + it 'returns success response' do + get explore_catalog_path(catalog_resource) + + expect(response).to have_gitlab_http_status(:success) + end + end end describe 'GET #index' do + let(:subject) { get explore_catalog_index_path } + it_behaves_like 'basic get requests', :index + + it_behaves_like 'internal event tracking' do + let(:namespace) { user.namespace } + let(:project) { nil } + let(:event) { 'unique_users_visiting_ci_catalog' } + end end end