datadog-ci 1.2.0 → 1.3.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (56) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +24 -2
  3. data/lib/datadog/ci/configuration/components.rb +30 -3
  4. data/lib/datadog/ci/contrib/cucumber/formatter.rb +13 -9
  5. data/lib/datadog/ci/contrib/minitest/runnable.rb +5 -1
  6. data/lib/datadog/ci/contrib/minitest/runner.rb +6 -2
  7. data/lib/datadog/ci/contrib/minitest/test.rb +7 -3
  8. data/lib/datadog/ci/contrib/rspec/example.rb +6 -2
  9. data/lib/datadog/ci/contrib/rspec/example_group.rb +5 -1
  10. data/lib/datadog/ci/contrib/rspec/knapsack_pro/runner.rb +6 -2
  11. data/lib/datadog/ci/contrib/rspec/runner.rb +6 -2
  12. data/lib/datadog/ci/ext/environment/providers/appveyor.rb +1 -1
  13. data/lib/datadog/ci/ext/environment/providers/aws_code_pipeline.rb +1 -1
  14. data/lib/datadog/ci/ext/environment/providers/azure.rb +1 -1
  15. data/lib/datadog/ci/ext/environment/providers/bitbucket.rb +1 -1
  16. data/lib/datadog/ci/ext/environment/providers/bitrise.rb +1 -1
  17. data/lib/datadog/ci/ext/environment/providers/buddy.rb +1 -1
  18. data/lib/datadog/ci/ext/environment/providers/buildkite.rb +1 -1
  19. data/lib/datadog/ci/ext/environment/providers/circleci.rb +1 -1
  20. data/lib/datadog/ci/ext/environment/providers/codefresh.rb +1 -1
  21. data/lib/datadog/ci/ext/environment/providers/github_actions.rb +1 -1
  22. data/lib/datadog/ci/ext/environment/providers/gitlab.rb +1 -1
  23. data/lib/datadog/ci/ext/environment/providers/jenkins.rb +1 -1
  24. data/lib/datadog/ci/ext/environment/providers/teamcity.rb +1 -1
  25. data/lib/datadog/ci/ext/environment/providers/travis.rb +1 -1
  26. data/lib/datadog/ci/ext/environment.rb +17 -0
  27. data/lib/datadog/ci/ext/telemetry.rb +120 -0
  28. data/lib/datadog/ci/git/local_repository.rb +116 -25
  29. data/lib/datadog/ci/git/search_commits.rb +20 -1
  30. data/lib/datadog/ci/git/telemetry.rb +37 -0
  31. data/lib/datadog/ci/git/tree_uploader.rb +7 -0
  32. data/lib/datadog/ci/git/upload_packfile.rb +22 -1
  33. data/lib/datadog/ci/test.rb +5 -0
  34. data/lib/datadog/ci/test_optimisation/component.rb +16 -2
  35. data/lib/datadog/ci/test_optimisation/coverage/transport.rb +10 -1
  36. data/lib/datadog/ci/test_optimisation/skippable.rb +24 -0
  37. data/lib/datadog/ci/test_optimisation/telemetry.rb +56 -0
  38. data/lib/datadog/ci/test_visibility/component.rb +95 -235
  39. data/lib/datadog/ci/test_visibility/context.rb +274 -0
  40. data/lib/datadog/ci/test_visibility/{context → store}/global.rb +1 -1
  41. data/lib/datadog/ci/test_visibility/{context → store}/local.rb +1 -1
  42. data/lib/datadog/ci/test_visibility/telemetry.rb +69 -0
  43. data/lib/datadog/ci/test_visibility/transport.rb +8 -9
  44. data/lib/datadog/ci/transport/adapters/net.rb +42 -11
  45. data/lib/datadog/ci/transport/adapters/net_http_client.rb +17 -0
  46. data/lib/datadog/ci/transport/adapters/telemetry_webmock_safe_adapter.rb +28 -0
  47. data/lib/datadog/ci/transport/event_platform_transport.rb +42 -5
  48. data/lib/datadog/ci/transport/http.rb +49 -21
  49. data/lib/datadog/ci/transport/remote_settings_api.rb +39 -1
  50. data/lib/datadog/ci/transport/telemetry.rb +93 -0
  51. data/lib/datadog/ci/utils/identity.rb +20 -0
  52. data/lib/datadog/ci/utils/parsing.rb +2 -1
  53. data/lib/datadog/ci/utils/telemetry.rb +23 -0
  54. data/lib/datadog/ci/version.rb +1 -1
  55. data/lib/datadog/ci.rb +30 -0
  56. metadata +16 -6
@@ -3,6 +3,8 @@
3
3
  require "delegate"
4
4
  require "socket"
5
5
 
6
+ require "datadog/core/utils/time"
7
+
6
8
  require_relative "gzip"
7
9
  require_relative "adapters/net"
8
10
  require_relative "../ext/transport"
@@ -39,27 +41,36 @@ module Datadog
39
41
  backoff: INITIAL_BACKOFF,
40
42
  accept_compressed_response: false
41
43
  )
42
- if compress
43
- headers[Ext::Transport::HEADER_CONTENT_ENCODING] = Ext::Transport::CONTENT_ENCODING_GZIP
44
- payload = Gzip.compress(payload)
45
- end
44
+ response = nil
46
45
 
47
- if accept_compressed_response
48
- headers[Ext::Transport::HEADER_ACCEPT_ENCODING] = Ext::Transport::CONTENT_ENCODING_GZIP
49
- end
46
+ duration_ms = Core::Utils::Time.measure(:float_millisecond) do
47
+ if compress
48
+ headers[Ext::Transport::HEADER_CONTENT_ENCODING] = Ext::Transport::CONTENT_ENCODING_GZIP
49
+ payload = Gzip.compress(payload)
50
+ end
50
51
 
51
- Datadog.logger.debug do
52
- "Sending #{verb} request: host=#{host}; port=#{port}; ssl_enabled=#{ssl}; " \
53
- "compression_enabled=#{compress}; path=#{path}; payload_size=#{payload.size}"
54
- end
52
+ if accept_compressed_response
53
+ headers[Ext::Transport::HEADER_ACCEPT_ENCODING] = Ext::Transport::CONTENT_ENCODING_GZIP
54
+ end
55
55
 
56
- response = ResponseDecorator.new(
57
- perform_http_call(path: path, payload: payload, headers: headers, verb: verb, retries: retries, backoff: backoff)
58
- )
56
+ Datadog.logger.debug do
57
+ "Sending #{verb} request: host=#{host}; port=#{port}; ssl_enabled=#{ssl}; " \
58
+ "compression_enabled=#{compress}; path=#{path}; payload_size=#{payload.size}"
59
+ end
60
+
61
+ response = perform_http_call(path: path, payload: payload, headers: headers, verb: verb, retries: retries, backoff: backoff)
59
62
 
60
- Datadog.logger.debug do
61
- "Received server response: #{response.inspect}"
63
+ Datadog.logger.debug do
64
+ "Received server response: #{response.inspect}"
65
+ end
62
66
  end
67
+ # @type var response: Datadog::CI::Transport::Adapters::Net::Response
68
+ # @type var duration_ms: Float
69
+
70
+ # set some stats about the request
71
+ response.request_compressed = compress
72
+ response.request_size = payload.bytesize
73
+ response.duration_ms = duration_ms
63
74
 
64
75
  response
65
76
  end
@@ -81,7 +92,7 @@ module Datadog
81
92
  )
82
93
  else
83
94
  Datadog.logger.error("Failed to send request after #{MAX_RETRIES} retries")
84
- raise e
95
+ ErrorResponse.new(e)
85
96
  end
86
97
  end
87
98
 
@@ -91,10 +102,27 @@ module Datadog
91
102
  )
92
103
  end
93
104
 
94
- # adds compatibility with Datadog::Tracing transport
95
- class ResponseDecorator < ::SimpleDelegator
96
- def trace_count
97
- 0
105
+ class ErrorResponse < Adapters::Net::Response
106
+ def initialize(error)
107
+ @error = error
108
+ end
109
+
110
+ attr_reader :error
111
+
112
+ def payload
113
+ ""
114
+ end
115
+
116
+ def header(name)
117
+ nil
118
+ end
119
+
120
+ def code
121
+ nil
122
+ end
123
+
124
+ def inspect
125
+ "ErrorResponse error:#{error}"
98
126
  end
99
127
  end
100
128
  end
@@ -4,8 +4,11 @@ require "json"
4
4
 
5
5
  require "datadog/core/environment/identity"
6
6
 
7
+ require_relative "../ext/telemetry"
7
8
  require_relative "../ext/transport"
9
+ require_relative "../transport/telemetry"
8
10
  require_relative "../utils/parsing"
11
+ require_relative "../utils/telemetry"
9
12
 
10
13
  module Datadog
11
14
  module CI
@@ -36,6 +39,14 @@ module Datadog
36
39
  default_payload
37
40
  rescue JSON::ParserError => e
38
41
  Datadog.logger.error("Failed to parse settings response payload: #{e}. Payload was: #{resp.payload}")
42
+
43
+ Transport::Telemetry.api_requests_errors(
44
+ Ext::Telemetry::METRIC_GIT_REQUESTS_SETTINGS_ERRORS,
45
+ 1,
46
+ error_type: "invalid_json",
47
+ status_code: nil
48
+ )
49
+
39
50
  @json = default_payload
40
51
  end
41
52
  end
@@ -69,7 +80,34 @@ module Datadog
69
80
  payload: request_payload
70
81
  )
71
82
 
72
- Response.new(http_response)
83
+ Transport::Telemetry.api_requests(
84
+ Ext::Telemetry::METRIC_GIT_REQUESTS_SETTINGS,
85
+ 1,
86
+ compressed: http_response.request_compressed
87
+ )
88
+ Utils::Telemetry.distribution(Ext::Telemetry::METRIC_GIT_REQUESTS_SETTINGS_MS, http_response.duration_ms)
89
+
90
+ unless http_response.ok?
91
+ Transport::Telemetry.api_requests_errors(
92
+ Ext::Telemetry::METRIC_GIT_REQUESTS_SETTINGS_ERRORS,
93
+ 1,
94
+ error_type: http_response.telemetry_error_type,
95
+ status_code: http_response.code
96
+ )
97
+ end
98
+
99
+ response = Response.new(http_response)
100
+
101
+ Utils::Telemetry.inc(
102
+ Ext::Telemetry::METRIC_GIT_REQUESTS_SETTINGS_RESPONSE,
103
+ 1,
104
+ {
105
+ Ext::Telemetry::TAG_COVERAGE_ENABLED => response.payload[Ext::Transport::DD_API_SETTINGS_RESPONSE_CODE_COVERAGE_KEY],
106
+ Ext::Telemetry::TAG_ITR_SKIP_ENABLED => response.payload[Ext::Transport::DD_API_SETTINGS_RESPONSE_TESTS_SKIPPING_KEY]
107
+ }
108
+ )
109
+
110
+ response
73
111
  end
74
112
 
75
113
  private
@@ -0,0 +1,93 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "../ext/telemetry"
4
+ require_relative "../utils/telemetry"
5
+
6
+ module Datadog
7
+ module CI
8
+ module Transport
9
+ module Telemetry
10
+ def self.events_enqueued_for_serialization(count)
11
+ Utils::Telemetry.inc(Ext::Telemetry::METRIC_EVENTS_ENQUEUED, count)
12
+ end
13
+
14
+ def self.endpoint_payload_events_count(count, endpoint:)
15
+ Utils::Telemetry.distribution(
16
+ Ext::Telemetry::METRIC_ENDPOINT_PAYLOAD_EVENTS_COUNT,
17
+ count.to_f,
18
+ tags(endpoint: endpoint)
19
+ )
20
+ end
21
+
22
+ def self.endpoint_payload_serialization_ms(duration_ms, endpoint:)
23
+ Utils::Telemetry.distribution(
24
+ Ext::Telemetry::METRIC_ENDPOINT_PAYLOAD_EVENTS_SERIALIZATION_MS,
25
+ duration_ms,
26
+ tags(endpoint: endpoint)
27
+ )
28
+ end
29
+
30
+ def self.endpoint_payload_dropped(count, endpoint:)
31
+ Utils::Telemetry.inc(
32
+ Ext::Telemetry::METRIC_ENDPOINT_PAYLOAD_DROPPED,
33
+ count,
34
+ tags(endpoint: endpoint)
35
+ )
36
+ end
37
+
38
+ def self.endpoint_payload_requests(count, endpoint:, compressed:)
39
+ tags = tags(endpoint: endpoint)
40
+ tags[Ext::Telemetry::TAG_REQUEST_COMPRESSED] = "true" if compressed
41
+
42
+ Utils::Telemetry.inc(Ext::Telemetry::METRIC_ENDPOINT_PAYLOAD_REQUESTS, count, tags)
43
+ end
44
+
45
+ def self.endpoint_payload_requests_ms(duration_ms, endpoint:)
46
+ Utils::Telemetry.distribution(
47
+ Ext::Telemetry::METRIC_ENDPOINT_PAYLOAD_REQUESTS_MS,
48
+ duration_ms,
49
+ tags(endpoint: endpoint)
50
+ )
51
+ end
52
+
53
+ def self.endpoint_payload_bytes(bytesize, endpoint:)
54
+ Utils::Telemetry.distribution(
55
+ Ext::Telemetry::METRIC_ENDPOINT_PAYLOAD_BYTES,
56
+ bytesize.to_f,
57
+ tags(endpoint: endpoint)
58
+ )
59
+ end
60
+
61
+ def self.endpoint_payload_requests_errors(count, endpoint:, error_type:, status_code:)
62
+ tags = tags(endpoint: endpoint)
63
+ set_error_tags(tags, error_type: error_type, status_code: status_code)
64
+
65
+ Utils::Telemetry.inc(Ext::Telemetry::METRIC_ENDPOINT_PAYLOAD_REQUESTS_ERRORS, count, tags)
66
+ end
67
+
68
+ def self.api_requests(metric_name, count, compressed:)
69
+ tags = {}
70
+ tags[Ext::Telemetry::TAG_REQUEST_COMPRESSED] = "true" if compressed
71
+
72
+ Utils::Telemetry.inc(metric_name, count, tags)
73
+ end
74
+
75
+ def self.api_requests_errors(metric_name, count, error_type:, status_code:)
76
+ tags = {}
77
+ set_error_tags(tags, error_type: error_type, status_code: status_code)
78
+
79
+ Utils::Telemetry.inc(metric_name, count, tags)
80
+ end
81
+
82
+ def self.tags(endpoint:)
83
+ {Ext::Telemetry::TAG_ENDPOINT => endpoint}
84
+ end
85
+
86
+ def self.set_error_tags(tags, error_type:, status_code:)
87
+ tags[Ext::Telemetry::TAG_ERROR_TYPE] = error_type if error_type
88
+ tags[Ext::Telemetry::TAG_STATUS_CODE] = status_code.to_s if status_code
89
+ end
90
+ end
91
+ end
92
+ end
93
+ end
@@ -0,0 +1,20 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Datadog
4
+ module CI
5
+ module Utils
6
+ module Identity
7
+ def self.included(base)
8
+ base.singleton_class.prepend(ClassMethods)
9
+ end
10
+
11
+ module ClassMethods
12
+ # return datadog-ci gem version instead of datadog gem version
13
+ def gem_datadog_version
14
+ Datadog::CI::VERSION::STRING
15
+ end
16
+ end
17
+ end
18
+ end
19
+ end
20
+ end
@@ -8,7 +8,8 @@ module Datadog
8
8
  module Utils
9
9
  module Parsing
10
10
  def self.convert_to_bool(value)
11
- value.to_s.downcase == "true"
11
+ normalized_value = value.to_s.downcase
12
+ normalized_value == "true" || normalized_value == "1"
12
13
  end
13
14
  end
14
15
  end
@@ -0,0 +1,23 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "../ext/telemetry"
4
+
5
+ module Datadog
6
+ module CI
7
+ module Utils
8
+ module Telemetry
9
+ def self.inc(metric_name, count, tags = {})
10
+ telemetry.inc(Ext::Telemetry::NAMESPACE, metric_name, count, tags: tags)
11
+ end
12
+
13
+ def self.distribution(metric_name, value, tags = {})
14
+ telemetry.distribution(Ext::Telemetry::NAMESPACE, metric_name, value, tags: tags)
15
+ end
16
+
17
+ def self.telemetry
18
+ Datadog.send(:components).telemetry
19
+ end
20
+ end
21
+ end
22
+ end
23
+ end
@@ -4,7 +4,7 @@ module Datadog
4
4
  module CI
5
5
  module VERSION
6
6
  MAJOR = 1
7
- MINOR = 2
7
+ MINOR = 3
8
8
  PATCH = 0
9
9
  PRE = nil
10
10
  BUILD = nil
data/lib/datadog/ci.rb CHANGED
@@ -2,7 +2,9 @@
2
2
 
3
3
  require_relative "ci/version"
4
4
  require_relative "ci/utils/configuration"
5
+ require_relative "ci/utils/telemetry"
5
6
  require_relative "ci/ext/app_types"
7
+ require_relative "ci/ext/telemetry"
6
8
 
7
9
  require "datadog/core"
8
10
 
@@ -39,6 +41,11 @@ module Datadog
39
41
  # @return [Datadog::CI::TestSession] the active, running {Datadog::CI::TestSession}.
40
42
  # @return [nil] if test suite level visibility is disabled or CI mode is disabled.
41
43
  def start_test_session(service: Utils::Configuration.fetch_service_name("test"), tags: {})
44
+ Utils::Telemetry.inc(
45
+ Ext::Telemetry::METRIC_MANUAL_API_EVENTS,
46
+ 1,
47
+ {Ext::Telemetry::TAG_EVENT_TYPE => Ext::Telemetry::EventType::SESSION}
48
+ )
42
49
  test_visibility.start_test_session(service: service, tags: tags)
43
50
  end
44
51
 
@@ -93,6 +100,12 @@ module Datadog
93
100
  # @return [Datadog::CI::TestModule] the active, running {Datadog::CI::TestModule}.
94
101
  # @return [nil] if test suite level visibility is disabled or CI mode is disabled.
95
102
  def start_test_module(test_module_name, service: nil, tags: {})
103
+ Utils::Telemetry.inc(
104
+ Ext::Telemetry::METRIC_MANUAL_API_EVENTS,
105
+ 1,
106
+ {Ext::Telemetry::TAG_EVENT_TYPE => Ext::Telemetry::EventType::MODULE}
107
+ )
108
+
96
109
  test_visibility.start_test_module(test_module_name, service: service, tags: tags)
97
110
  end
98
111
 
@@ -145,6 +158,12 @@ module Datadog
145
158
  # @return [Datadog::CI::TestSuite] the active, running {Datadog::CI::TestSuite}.
146
159
  # @return [nil] if test suite level visibility is disabled or CI mode is disabled.
147
160
  def start_test_suite(test_suite_name, service: nil, tags: {})
161
+ Utils::Telemetry.inc(
162
+ Ext::Telemetry::METRIC_MANUAL_API_EVENTS,
163
+ 1,
164
+ {Ext::Telemetry::TAG_EVENT_TYPE => Ext::Telemetry::EventType::SUITE}
165
+ )
166
+
148
167
  test_visibility.start_test_suite(test_suite_name, service: service, tags: tags)
149
168
  end
150
169
 
@@ -222,6 +241,12 @@ module Datadog
222
241
  # @yieldparam [Datadog::CI::Test] ci_test the newly created and active [Datadog::CI::Test]
223
242
  # @yieldparam [nil] if CI mode is disabled
224
243
  def trace_test(test_name, test_suite_name, service: nil, tags: {}, &block)
244
+ Utils::Telemetry.inc(
245
+ Ext::Telemetry::METRIC_MANUAL_API_EVENTS,
246
+ 1,
247
+ {Ext::Telemetry::TAG_EVENT_TYPE => Ext::Telemetry::EventType::TEST}
248
+ )
249
+
225
250
  test_visibility.trace_test(test_name, test_suite_name, service: service, tags: tags, &block)
226
251
  end
227
252
 
@@ -248,6 +273,11 @@ module Datadog
248
273
  # @return [Datadog::CI::Test] the active, unfinished {Datadog::CI::Test}.
249
274
  # @return [nil] if CI mode is disabled.
250
275
  def start_test(test_name, test_suite_name, service: nil, tags: {})
276
+ Utils::Telemetry.inc(
277
+ Ext::Telemetry::METRIC_MANUAL_API_EVENTS,
278
+ 1,
279
+ {Ext::Telemetry::TAG_EVENT_TYPE => Ext::Telemetry::EventType::TEST}
280
+ )
251
281
  test_visibility.trace_test(test_name, test_suite_name, service: service, tags: tags)
252
282
  end
253
283
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: datadog-ci
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.0
4
+ version: 1.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Datadog, Inc.
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-07-16 00:00:00.000000000 Z
11
+ date: 2024-07-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: datadog
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '2.0'
19
+ version: '2.2'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '2.0'
26
+ version: '2.2'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: msgpack
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -126,11 +126,13 @@ files:
126
126
  - lib/datadog/ci/ext/environment/providers/user_defined_tags.rb
127
127
  - lib/datadog/ci/ext/git.rb
128
128
  - lib/datadog/ci/ext/settings.rb
129
+ - lib/datadog/ci/ext/telemetry.rb
129
130
  - lib/datadog/ci/ext/test.rb
130
131
  - lib/datadog/ci/ext/transport.rb
131
132
  - lib/datadog/ci/git/local_repository.rb
132
133
  - lib/datadog/ci/git/packfiles.rb
133
134
  - lib/datadog/ci/git/search_commits.rb
135
+ - lib/datadog/ci/git/telemetry.rb
134
136
  - lib/datadog/ci/git/tree_uploader.rb
135
137
  - lib/datadog/ci/git/upload_packfile.rb
136
138
  - lib/datadog/ci/git/user.rb
@@ -143,11 +145,11 @@ files:
143
145
  - lib/datadog/ci/test_optimisation/coverage/transport.rb
144
146
  - lib/datadog/ci/test_optimisation/coverage/writer.rb
145
147
  - lib/datadog/ci/test_optimisation/skippable.rb
148
+ - lib/datadog/ci/test_optimisation/telemetry.rb
146
149
  - lib/datadog/ci/test_session.rb
147
150
  - lib/datadog/ci/test_suite.rb
148
151
  - lib/datadog/ci/test_visibility/component.rb
149
- - lib/datadog/ci/test_visibility/context/global.rb
150
- - lib/datadog/ci/test_visibility/context/local.rb
152
+ - lib/datadog/ci/test_visibility/context.rb
151
153
  - lib/datadog/ci/test_visibility/flush.rb
152
154
  - lib/datadog/ci/test_visibility/null_component.rb
153
155
  - lib/datadog/ci/test_visibility/serializers/base.rb
@@ -159,8 +161,13 @@ files:
159
161
  - lib/datadog/ci/test_visibility/serializers/test_suite.rb
160
162
  - lib/datadog/ci/test_visibility/serializers/test_v1.rb
161
163
  - lib/datadog/ci/test_visibility/serializers/test_v2.rb
164
+ - lib/datadog/ci/test_visibility/store/global.rb
165
+ - lib/datadog/ci/test_visibility/store/local.rb
166
+ - lib/datadog/ci/test_visibility/telemetry.rb
162
167
  - lib/datadog/ci/test_visibility/transport.rb
163
168
  - lib/datadog/ci/transport/adapters/net.rb
169
+ - lib/datadog/ci/transport/adapters/net_http_client.rb
170
+ - lib/datadog/ci/transport/adapters/telemetry_webmock_safe_adapter.rb
164
171
  - lib/datadog/ci/transport/api/agentless.rb
165
172
  - lib/datadog/ci/transport/api/base.rb
166
173
  - lib/datadog/ci/transport/api/builder.rb
@@ -169,10 +176,13 @@ files:
169
176
  - lib/datadog/ci/transport/gzip.rb
170
177
  - lib/datadog/ci/transport/http.rb
171
178
  - lib/datadog/ci/transport/remote_settings_api.rb
179
+ - lib/datadog/ci/transport/telemetry.rb
172
180
  - lib/datadog/ci/utils/bundle.rb
173
181
  - lib/datadog/ci/utils/configuration.rb
174
182
  - lib/datadog/ci/utils/git.rb
183
+ - lib/datadog/ci/utils/identity.rb
175
184
  - lib/datadog/ci/utils/parsing.rb
185
+ - lib/datadog/ci/utils/telemetry.rb
176
186
  - lib/datadog/ci/utils/test_run.rb
177
187
  - lib/datadog/ci/version.rb
178
188
  - lib/datadog/ci/worker.rb