datadog-ci 0.8.1 → 0.8.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +24 -1
- data/README.md +19 -0
- data/lib/datadog/ci/contrib/cucumber/formatter.rb +11 -1
- data/lib/datadog/ci/ext/environment/extractor.rb +3 -2
- data/lib/datadog/ci/ext/environment/providers/github_actions.rb +3 -2
- data/lib/datadog/ci/test_visibility/context/global.rb +8 -0
- data/lib/datadog/ci/test_visibility/recorder.rb +23 -0
- data/lib/datadog/ci/transport/api/builder.rb +5 -4
- data/lib/datadog/ci/version.rb +1 -1
- metadata +3 -4
- data/lib/datadog/ci/utils/url.rb +0 -15
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: bf750f24412b0800ba1599f22c5b12e8679dddc1d0e9a30aed98d0a51a6badd3
|
4
|
+
data.tar.gz: 652631fac9702beb340f136e32d4b72b3b38d7c84a8de7dc8ce4f203dc67983b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3295d136609aca4be41cc041613873297a5e91bb37a428a6612a1e62f7e547db2bb2c836f4a0348fdd4466d085a29ec78a26962d48f1c59e05163dcb26668783
|
7
|
+
data.tar.gz: 5446bba62689a4133a75b64437efd47f8369814e863c8ddab0c91d52692b5bf71b5be2a4f4264839ec81374ff3c4ff498e4c2cd7a8c54f566e63558cb1f55cff
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,22 @@
|
|
1
1
|
## [Unreleased]
|
2
2
|
|
3
|
+
## [0.8.3] - 2024-03-20
|
4
|
+
|
5
|
+
### Fixed
|
6
|
+
|
7
|
+
* fix: cucumber-ruby 9.2 includes breaking change for Cucumber::Core::Test::Result ([#145][])
|
8
|
+
|
9
|
+
### Changed
|
10
|
+
|
11
|
+
* remove temporary hack and use Core::Remote::Negotiation's new constructor param ([#142][])
|
12
|
+
* use filter_basic_auth method from Datadog::Core ([#141][])
|
13
|
+
|
14
|
+
## [0.8.2] - 2024-03-19
|
15
|
+
|
16
|
+
### Fixed
|
17
|
+
|
18
|
+
* assign the single running test suite for a test if none found by test suite name ([#139][])
|
19
|
+
|
3
20
|
## [0.8.1] - 2024-03-12
|
4
21
|
|
5
22
|
### Fixed
|
@@ -170,7 +187,9 @@ Currently test suite level visibility is not used by our instrumentation: it wil
|
|
170
187
|
|
171
188
|
* Ruby versions < 2.7 no longer supported ([#8][])
|
172
189
|
|
173
|
-
[Unreleased]: https://github.com/DataDog/datadog-ci-rb/compare/v0.8.
|
190
|
+
[Unreleased]: https://github.com/DataDog/datadog-ci-rb/compare/v0.8.3...main
|
191
|
+
[0.8.3]: https://github.com/DataDog/datadog-ci-rb/compare/v0.8.2...v0.8.3
|
192
|
+
[0.8.2]: https://github.com/DataDog/datadog-ci-rb/compare/v0.8.1...v0.8.2
|
174
193
|
[0.8.1]: https://github.com/DataDog/datadog-ci-rb/compare/v0.8.0...v0.8.1
|
175
194
|
[0.8.0]: https://github.com/DataDog/datadog-ci-rb/compare/v0.7.0...v0.8.0
|
176
195
|
[0.7.0]: https://github.com/DataDog/datadog-ci-rb/compare/v0.6.0...v0.7.0
|
@@ -239,3 +258,7 @@ Currently test suite level visibility is not used by our instrumentation: it wil
|
|
239
258
|
[#123]: https://github.com/DataDog/datadog-ci-rb/issues/123
|
240
259
|
[#131]: https://github.com/DataDog/datadog-ci-rb/issues/131
|
241
260
|
[#134]: https://github.com/DataDog/datadog-ci-rb/issues/134
|
261
|
+
[#139]: https://github.com/DataDog/datadog-ci-rb/issues/139
|
262
|
+
[#141]: https://github.com/DataDog/datadog-ci-rb/issues/141
|
263
|
+
[#142]: https://github.com/DataDog/datadog-ci-rb/issues/142
|
264
|
+
[#145]: https://github.com/DataDog/datadog-ci-rb/issues/145
|
data/README.md
CHANGED
@@ -79,6 +79,25 @@ if ENV["DD_ENV"] == "ci"
|
|
79
79
|
end
|
80
80
|
```
|
81
81
|
|
82
|
+
> [!IMPORTANT]
|
83
|
+
> When using `minitest/autorun` the order of requires matters: `datadog/ci` must be
|
84
|
+
> always required before `minitest/autorun`.
|
85
|
+
|
86
|
+
Example using `minitest/autorun`
|
87
|
+
|
88
|
+
```ruby
|
89
|
+
require 'datadog/ci'
|
90
|
+
require 'minitest/autorun'
|
91
|
+
|
92
|
+
if ENV["DD_ENV"] == "ci"
|
93
|
+
Datadog.configure do |c|
|
94
|
+
c.ci.enabled = true
|
95
|
+
c.service = 'my-ruby-app'
|
96
|
+
c.ci.instrument :minitest
|
97
|
+
end
|
98
|
+
end
|
99
|
+
```
|
100
|
+
|
82
101
|
`options` are the following keyword arguments:
|
83
102
|
|
84
103
|
| Key | Description | Default |
|
@@ -113,7 +113,7 @@ module Datadog
|
|
113
113
|
end
|
114
114
|
|
115
115
|
def finish_span(span, result)
|
116
|
-
if !result.passed? &&
|
116
|
+
if !result.passed? && ok?(result, @config.strict)
|
117
117
|
span.skipped!(reason: result.message)
|
118
118
|
elsif result.passed?
|
119
119
|
span.passed!
|
@@ -186,6 +186,16 @@ module Datadog
|
|
186
186
|
nil
|
187
187
|
end
|
188
188
|
|
189
|
+
def ok?(result, strict)
|
190
|
+
# in minor update in Cucumber 9.2.0, the arity of the `ok?` method changed
|
191
|
+
parameters = result.method(:ok?).parameters
|
192
|
+
if parameters == [[:opt, :be_strict]]
|
193
|
+
result.ok?(strict)
|
194
|
+
else
|
195
|
+
result.ok?(strict: strict)
|
196
|
+
end
|
197
|
+
end
|
198
|
+
|
189
199
|
def configuration
|
190
200
|
Datadog.configuration.ci[:cucumber]
|
191
201
|
end
|
@@ -1,8 +1,9 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
+
require "datadog/core/utils/url"
|
4
|
+
|
3
5
|
require_relative "../git"
|
4
6
|
require_relative "../../utils/git"
|
5
|
-
require_relative "../../utils/url"
|
6
7
|
require_relative "providers"
|
7
8
|
|
8
9
|
module Datadog
|
@@ -76,7 +77,7 @@ module Datadog
|
|
76
77
|
|
77
78
|
@tags[Git::TAG_TAG] = Utils::Git.normalize_ref(@tags[Git::TAG_TAG])
|
78
79
|
@tags[Git::TAG_BRANCH] = Utils::Git.normalize_ref(@tags[Git::TAG_BRANCH])
|
79
|
-
@tags[Git::TAG_REPOSITORY_URL] = Utils::Url.
|
80
|
+
@tags[Git::TAG_REPOSITORY_URL] = Datadog::Core::Utils::Url.filter_basic_auth(
|
80
81
|
@tags[Git::TAG_REPOSITORY_URL]
|
81
82
|
)
|
82
83
|
end
|
@@ -2,8 +2,9 @@
|
|
2
2
|
|
3
3
|
require "json"
|
4
4
|
|
5
|
+
require "datadog/core/utils/url"
|
6
|
+
|
5
7
|
require_relative "base"
|
6
|
-
require_relative "../../../utils/url"
|
7
8
|
|
8
9
|
module Datadog
|
9
10
|
module CI
|
@@ -79,7 +80,7 @@ module Datadog
|
|
79
80
|
def github_server_url
|
80
81
|
return @github_server_url if defined?(@github_server_url)
|
81
82
|
|
82
|
-
@github_server_url ||= Utils::Url.
|
83
|
+
@github_server_url ||= Datadog::Core::Utils::Url.filter_basic_auth(env["GITHUB_SERVER_URL"])
|
83
84
|
end
|
84
85
|
end
|
85
86
|
end
|
@@ -21,6 +21,14 @@ module Datadog
|
|
21
21
|
end
|
22
22
|
end
|
23
23
|
|
24
|
+
def fetch_single_test_suite
|
25
|
+
@mutex.synchronize do
|
26
|
+
return nil if @test_suites.empty? || @test_suites.size > 1
|
27
|
+
|
28
|
+
@test_suites.values.first
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
24
32
|
def fetch_or_activate_test_module(&block)
|
25
33
|
@mutex.synchronize do
|
26
34
|
@test_module ||= block.call
|
@@ -227,6 +227,11 @@ module Datadog
|
|
227
227
|
def build_test(tracer_span, tags)
|
228
228
|
test = Test.new(tracer_span)
|
229
229
|
set_initial_tags(test, tags)
|
230
|
+
|
231
|
+
# sometimes test suite is not being assigned correctly
|
232
|
+
# fix it by fetching the one single running test suite from the global context
|
233
|
+
fix_test_suite!(test) if test.test_suite_id.nil?
|
234
|
+
|
230
235
|
validate_test_suite_level_visibility_correctness(test)
|
231
236
|
set_codeowners(test)
|
232
237
|
|
@@ -294,6 +299,24 @@ module Datadog
|
|
294
299
|
end
|
295
300
|
end
|
296
301
|
|
302
|
+
def fix_test_suite!(test)
|
303
|
+
test_suite = @global_context.fetch_single_test_suite
|
304
|
+
unless test_suite
|
305
|
+
Datadog.logger.debug do
|
306
|
+
"Trying to fix test suite for test [#{test.name}] but no single test suite is running."
|
307
|
+
end
|
308
|
+
return
|
309
|
+
end
|
310
|
+
|
311
|
+
Datadog.logger.debug do
|
312
|
+
"For test [#{test.name}]: expected test suite [#{test.test_suite_name}] to be running, " \
|
313
|
+
"but it was not found. Fixing it by assigning test suite [#{test_suite.name}] to the test."
|
314
|
+
end
|
315
|
+
|
316
|
+
test.set_tag(Ext::Test::TAG_TEST_SUITE_ID, test_suite.id.to_s)
|
317
|
+
test.set_tag(Ext::Test::TAG_SUITE, test_suite.name)
|
318
|
+
end
|
319
|
+
|
297
320
|
def start_datadog_tracer_span(span_name, span_options, &block)
|
298
321
|
if block
|
299
322
|
Datadog::Tracing.trace(span_name, **span_options) do |tracer_span, trace|
|
@@ -29,10 +29,11 @@ module Datadog
|
|
29
29
|
|
30
30
|
def self.build_evp_proxy_api(settings)
|
31
31
|
agent_settings = Datadog::Core::Configuration::AgentSettingsResolver.call(settings)
|
32
|
-
negotiation = Datadog::Core::Remote::Negotiation.new(
|
33
|
-
|
34
|
-
|
35
|
-
|
32
|
+
negotiation = Datadog::Core::Remote::Negotiation.new(
|
33
|
+
settings,
|
34
|
+
agent_settings,
|
35
|
+
suppress_logging: {no_config_endpoint: true}
|
36
|
+
)
|
36
37
|
|
37
38
|
evp_proxy_path_prefix = Ext::Transport::EVP_PROXY_PATH_PREFIXES.find do |path_prefix|
|
38
39
|
negotiation.endpoint?(path_prefix)
|
data/lib/datadog/ci/version.rb
CHANGED
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: 0.8.
|
4
|
+
version: 0.8.3
|
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-03-
|
11
|
+
date: 2024-03-20 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: msgpack
|
@@ -129,7 +129,6 @@ files:
|
|
129
129
|
- lib/datadog/ci/utils/configuration.rb
|
130
130
|
- lib/datadog/ci/utils/git.rb
|
131
131
|
- lib/datadog/ci/utils/test_run.rb
|
132
|
-
- lib/datadog/ci/utils/url.rb
|
133
132
|
- lib/datadog/ci/version.rb
|
134
133
|
homepage: https://github.com/DataDog/datadog-ci-rb
|
135
134
|
licenses:
|
@@ -157,7 +156,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
157
156
|
- !ruby/object:Gem::Version
|
158
157
|
version: 2.0.0
|
159
158
|
requirements: []
|
160
|
-
rubygems_version: 3.5.
|
159
|
+
rubygems_version: 3.5.6
|
161
160
|
signing_key:
|
162
161
|
specification_version: 4
|
163
162
|
summary: Datadog CI visibility for your ruby application
|
data/lib/datadog/ci/utils/url.rb
DELETED