Skip to content

Add custom context to p_ci_templates events

What does this MR do and why?

Add custom context to Snowplow event according to the new schema

Screenshots or screen recordings

Screen_Shot_2022-11-07_at_10.36.09_AM

How to set up and validate locally

  1. Manually dispatch an event, something like
[11] pry(main)> label = 'redis_hll_counters.ci_templates.ci_templates_total_unique_counts_monthly'
=> "redis_hll_counters.ci_templates.ci_templates_total_unique_counts_monthly"
[12] pry(main)> name = 'push'
=> "push"
[13] pry(main)> user = User.first
  User Load (1.6ms)  SELECT "users".* FROM "users" ORDER BY "users"."id" ASC LIMIT 1 /*application:console,db_config_name:main,console_hostname:Nikos-MacBook-Pro.local,console_username:niko,line:(pry):18:in `__pry__'*/
=> #<User id:1 @root>
[14] pry(main)> project = Project.first
  Project Load (1.9ms)  SELECT "projects".* FROM "projects" ORDER BY "projects"."id" ASC LIMIT 1 /*application:console,db_config_name:main,console_hostname:Nikos-MacBook-Pro.local,console_username:niko,line:(pry):19:in `__pry__'*/
  Route Load (0.5ms)  SELECT "routes".* FROM "routes" WHERE "routes"."source_id" = 1 AND "routes"."source_type" = 'Project' LIMIT 1 /*application:console,db_config_name:main,console_hostname:Nikos-MacBook-Pro.local,console_username:niko,line:/app/models/concerns/routable.rb:121:in `full_path'*/
=> #<Project id:1 gitlab-org/gitlab-test>>
[15] pry(main)> namespace = project.namespace
 ...
=> #<Group id:22 @gitlab-org>
[16] pry(main)> context = Gitlab::Tracking::ServicePingContext.new(data_source: :redis_hll,
event: event_name).to_context
=> #<SnowplowTracker::SelfDescribingJson:0x00000001379ec9c8
 @data={:data_source=>:redis_hll, :event_name=>"terrafiorm_module"},
 @schema="iglu:com.gitlab/gitlab_service_ping/jsonschema/1-0-0">
[17] pry(main)> Gitlab::Tracking.event(name, 'ci_templates_unique', namespace: namespace,
  project: project, context: [context], user: user,
  Plan Load (1.0ms)  SELECT "plans".* FROM "plans" WHERE "plans"."name" = 'default' LIMIT 1 /*application:console,db_config_name:main,console_hostname:Nikos-MacBook-Pro.local,console_username:niko,line:/app/models/plan.rb:17:in `block in default'*/
=> 2.0
  1. Verify the even in snowplow micro as
POST http://localhost:9091/micro/good
Content-Type: application/json

{
  "contexts": [
    "iglu:com.gitlab/gitlab_service_ping/jsonschema/1-0-0"
  ],  "limit": 1
}

MR acceptance checklist

This checklist encourages us to confirm any changes have been analyzed to reduce risks in quality, performance, reliability, security, and maintainability.

Related to #371803 (closed)

Edited by Niko Belokolodov

Merge request reports