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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +24 -2
- data/lib/datadog/ci/configuration/components.rb +30 -3
- data/lib/datadog/ci/contrib/cucumber/formatter.rb +13 -9
- data/lib/datadog/ci/contrib/minitest/runnable.rb +5 -1
- data/lib/datadog/ci/contrib/minitest/runner.rb +6 -2
- data/lib/datadog/ci/contrib/minitest/test.rb +7 -3
- data/lib/datadog/ci/contrib/rspec/example.rb +6 -2
- data/lib/datadog/ci/contrib/rspec/example_group.rb +5 -1
- data/lib/datadog/ci/contrib/rspec/knapsack_pro/runner.rb +6 -2
- data/lib/datadog/ci/contrib/rspec/runner.rb +6 -2
- data/lib/datadog/ci/ext/environment/providers/appveyor.rb +1 -1
- data/lib/datadog/ci/ext/environment/providers/aws_code_pipeline.rb +1 -1
- data/lib/datadog/ci/ext/environment/providers/azure.rb +1 -1
- data/lib/datadog/ci/ext/environment/providers/bitbucket.rb +1 -1
- data/lib/datadog/ci/ext/environment/providers/bitrise.rb +1 -1
- data/lib/datadog/ci/ext/environment/providers/buddy.rb +1 -1
- data/lib/datadog/ci/ext/environment/providers/buildkite.rb +1 -1
- data/lib/datadog/ci/ext/environment/providers/circleci.rb +1 -1
- data/lib/datadog/ci/ext/environment/providers/codefresh.rb +1 -1
- data/lib/datadog/ci/ext/environment/providers/github_actions.rb +1 -1
- data/lib/datadog/ci/ext/environment/providers/gitlab.rb +1 -1
- data/lib/datadog/ci/ext/environment/providers/jenkins.rb +1 -1
- data/lib/datadog/ci/ext/environment/providers/teamcity.rb +1 -1
- data/lib/datadog/ci/ext/environment/providers/travis.rb +1 -1
- data/lib/datadog/ci/ext/environment.rb +17 -0
- data/lib/datadog/ci/ext/telemetry.rb +120 -0
- data/lib/datadog/ci/git/local_repository.rb +116 -25
- data/lib/datadog/ci/git/search_commits.rb +20 -1
- data/lib/datadog/ci/git/telemetry.rb +37 -0
- data/lib/datadog/ci/git/tree_uploader.rb +7 -0
- data/lib/datadog/ci/git/upload_packfile.rb +22 -1
- data/lib/datadog/ci/test.rb +5 -0
- data/lib/datadog/ci/test_optimisation/component.rb +16 -2
- data/lib/datadog/ci/test_optimisation/coverage/transport.rb +10 -1
- data/lib/datadog/ci/test_optimisation/skippable.rb +24 -0
- data/lib/datadog/ci/test_optimisation/telemetry.rb +56 -0
- data/lib/datadog/ci/test_visibility/component.rb +95 -235
- data/lib/datadog/ci/test_visibility/context.rb +274 -0
- data/lib/datadog/ci/test_visibility/{context → store}/global.rb +1 -1
- data/lib/datadog/ci/test_visibility/{context → store}/local.rb +1 -1
- data/lib/datadog/ci/test_visibility/telemetry.rb +69 -0
- data/lib/datadog/ci/test_visibility/transport.rb +8 -9
- data/lib/datadog/ci/transport/adapters/net.rb +42 -11
- data/lib/datadog/ci/transport/adapters/net_http_client.rb +17 -0
- data/lib/datadog/ci/transport/adapters/telemetry_webmock_safe_adapter.rb +28 -0
- data/lib/datadog/ci/transport/event_platform_transport.rb +42 -5
- data/lib/datadog/ci/transport/http.rb +49 -21
- data/lib/datadog/ci/transport/remote_settings_api.rb +39 -1
- data/lib/datadog/ci/transport/telemetry.rb +93 -0
- data/lib/datadog/ci/utils/identity.rb +20 -0
- data/lib/datadog/ci/utils/parsing.rb +2 -1
- data/lib/datadog/ci/utils/telemetry.rb +23 -0
- data/lib/datadog/ci/version.rb +1 -1
- data/lib/datadog/ci.rb +30 -0
- 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
|
-
|
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
|
-
|
48
|
-
|
49
|
-
|
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
|
-
|
52
|
-
|
53
|
-
|
54
|
-
end
|
52
|
+
if accept_compressed_response
|
53
|
+
headers[Ext::Transport::HEADER_ACCEPT_ENCODING] = Ext::Transport::CONTENT_ENCODING_GZIP
|
54
|
+
end
|
55
55
|
|
56
|
-
|
57
|
-
|
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
|
-
|
61
|
-
|
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
|
-
|
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
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
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
|
-
|
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
|
@@ -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
|
data/lib/datadog/ci/version.rb
CHANGED
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.
|
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-
|
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.
|
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.
|
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
|
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
|