datadog-ci 1.2.0 → 1.3.0

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.
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
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: ba0975da7283a037f3ea9c70954f2868cf387a0e86608882d2ebefdd097e0cf7
4
- data.tar.gz: 7842e2e30802411616d987bcbae9be620befa27ba90206a733646a469225f835
3
+ metadata.gz: 57da167788887f67dc501a3dc2869c425754fec3cdefa45770af22364003fb20
4
+ data.tar.gz: ed6645a822db10fbae793c5b226b9d41ca4dbea67449f545135f2571be3894c1
5
5
  SHA512:
6
- metadata.gz: 89bce02785793b2c1f5b5438f6c9cfbf63d3ff4cb065788b4884063341bdc23c289e29715f846ce24e5a4ab939c9cdeb05e755a216e92cee6f20b9954462b05f
7
- data.tar.gz: 6adac19cff9d74fc081d22654a8b0db93152c8c5b6706fee82263e6f219edd96bb473f9595c85418a904110bfcde430b7ddcabd034279cb45d24374a55c5b170
6
+ metadata.gz: f4586bbf8a10b5bf2b262bafefd222ef981624ced261755bd9d43652506400f6b939e5cd3595b7af0c66a193581328937aabe5b9246efd4cb3a0fa088b9e0ccf
7
+ data.tar.gz: 4169cf67306d9d080e264897ed2cffb5103a9b98ca176fea2784ff3293d4b9dd3decd62df3848b2a7ade783f5dfe6925b86fa7d4727b45de51764af5bc6e1b4a
data/CHANGELOG.md CHANGED
@@ -1,5 +1,18 @@
1
1
  ## [Unreleased]
2
2
 
3
+ ## [1.3.0] - 2024-07-30
4
+
5
+ ### Added
6
+
7
+ * Add test_session metric ([#207][])
8
+ * API metrics ([#206][])
9
+ * git commands telemetry ([#205][])
10
+ * implement ITR metrics for internal telemetry ([#204][])
11
+ * Implement code coverage metrics for internal telemetry ([#203][])
12
+ * Implement manual_api_events metric ([#202][])
13
+ * HTTP transport metrics and minor telemetry tweaks ([#201][])
14
+ * Send event_created and event_finished metrics for internal telemetry ([#200][])
15
+
3
16
  ## [1.2.0] - 2024-07-16
4
17
 
5
18
  ### Changed
@@ -277,7 +290,8 @@ Currently test suite level visibility is not used by our instrumentation: it wil
277
290
 
278
291
  - Ruby versions < 2.7 no longer supported ([#8][])
279
292
 
280
- [Unreleased]: https://github.com/DataDog/datadog-ci-rb/compare/v1.2.0...main
293
+ [Unreleased]: https://github.com/DataDog/datadog-ci-rb/compare/v1.3.0...main
294
+ [1.3.0]: https://github.com/DataDog/datadog-ci-rb/compare/v1.2.0...v1.3.0
281
295
  [1.2.0]: https://github.com/DataDog/datadog-ci-rb/compare/v1.1.0...v1.2.0
282
296
  [1.1.0]: https://github.com/DataDog/datadog-ci-rb/compare/v1.0.1...v1.1.0
283
297
  [1.0.1]: https://github.com/DataDog/datadog-ci-rb/compare/v1.0.0...v1.0.1
@@ -391,4 +405,12 @@ Currently test suite level visibility is not used by our instrumentation: it wil
391
405
  [#189]: https://github.com/DataDog/datadog-ci-rb/issues/189
392
406
  [#190]: https://github.com/DataDog/datadog-ci-rb/issues/190
393
407
  [#193]: https://github.com/DataDog/datadog-ci-rb/issues/193
394
- [#197]: https://github.com/DataDog/datadog-ci-rb/issues/197
408
+ [#197]: https://github.com/DataDog/datadog-ci-rb/issues/197
409
+ [#200]: https://github.com/DataDog/datadog-ci-rb/issues/200
410
+ [#201]: https://github.com/DataDog/datadog-ci-rb/issues/201
411
+ [#202]: https://github.com/DataDog/datadog-ci-rb/issues/202
412
+ [#203]: https://github.com/DataDog/datadog-ci-rb/issues/203
413
+ [#204]: https://github.com/DataDog/datadog-ci-rb/issues/204
414
+ [#205]: https://github.com/DataDog/datadog-ci-rb/issues/205
415
+ [#206]: https://github.com/DataDog/datadog-ci-rb/issues/206
416
+ [#207]: https://github.com/DataDog/datadog-ci-rb/issues/207
@@ -1,5 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require "datadog/core/telemetry/ext"
4
+
3
5
  require_relative "../ext/settings"
4
6
  require_relative "../git/tree_uploader"
5
7
  require_relative "../test_optimisation/component"
@@ -11,8 +13,11 @@ require_relative "../test_visibility/null_component"
11
13
  require_relative "../test_visibility/serializers/factories/test_level"
12
14
  require_relative "../test_visibility/serializers/factories/test_suite_level"
13
15
  require_relative "../test_visibility/transport"
16
+ require_relative "../transport/adapters/telemetry_webmock_safe_adapter"
14
17
  require_relative "../transport/api/builder"
15
18
  require_relative "../transport/remote_settings_api"
19
+ require_relative "../utils/identity"
20
+ require_relative "../utils/parsing"
16
21
  require_relative "../utils/test_run"
17
22
  require_relative "../worker"
18
23
 
@@ -59,9 +64,7 @@ module Datadog
59
64
  return unless settings.ci.enabled
60
65
 
61
66
  # Configure datadog gem for test visibility mode
62
-
63
- # Deactivate telemetry
64
- settings.telemetry.enabled = false
67
+ configure_telemetry(settings)
65
68
 
66
69
  # Test visibility uses its own remote settings
67
70
  settings.remote.enabled = false
@@ -246,6 +249,30 @@ module Datadog
246
249
  end
247
250
  end
248
251
 
252
+ def configure_telemetry(settings)
253
+ # in development environment Datadog's telemetry is disabled by default
254
+ # for test visibility we want to enable it by default unless explicitly disabled
255
+ # NOTE: before agentless mode is released, we only enable telemetry when running with Datadog Agent
256
+ env_telemetry_enabled = ENV[Core::Telemetry::Ext::ENV_ENABLED]
257
+ settings.telemetry.enabled = !settings.ci.agentless_mode_enabled &&
258
+ (env_telemetry_enabled.nil? || Utils::Parsing.convert_to_bool(env_telemetry_enabled))
259
+
260
+ return unless settings.telemetry.enabled
261
+
262
+ begin
263
+ require "datadog/core/environment/identity"
264
+ require "datadog/core/telemetry/http/adapters/net"
265
+
266
+ # patch gem's identity to report datadog-ci library version instead of datadog gem version
267
+ Core::Environment::Identity.include(CI::Utils::Identity)
268
+
269
+ # patch gem's telemetry transport layer to use Net::HTTP instead of WebMock's Net::HTTP
270
+ Core::Telemetry::Http::Adapters::Net.include(CI::Transport::Adapters::TelemetryWebmockSafeAdapter)
271
+ rescue => e
272
+ Datadog.logger.warn("Failed to patch Datadog gem's telemetry layer: #{e}")
273
+ end
274
+ end
275
+
249
276
  def timecop?
250
277
  Gem.loaded_specs.key?("timecop") || !!defined?(Timecop)
251
278
  end
@@ -35,14 +35,14 @@ module Datadog
35
35
  end
36
36
 
37
37
  def on_test_run_started(event)
38
- CI.start_test_session(
38
+ test_visibility_component.start_test_session(
39
39
  tags: {
40
40
  CI::Ext::Test::TAG_FRAMEWORK => Ext::FRAMEWORK,
41
41
  CI::Ext::Test::TAG_FRAMEWORK_VERSION => CI::Contrib::Cucumber::Integration.version.to_s
42
42
  },
43
43
  service: configuration[:service_name]
44
44
  )
45
- CI.start_test_module(Ext::FRAMEWORK)
45
+ test_visibility_component.start_test_module(Ext::FRAMEWORK)
46
46
  end
47
47
 
48
48
  def on_test_run_finished(event)
@@ -70,7 +70,7 @@ module Datadog
70
70
 
71
71
  start_test_suite(test_suite_name) unless same_test_suite_as_current?(test_suite_name)
72
72
 
73
- test_span = CI.start_test(
73
+ test_span = test_visibility_component.trace_test(
74
74
  event.test_case.name,
75
75
  test_suite_name,
76
76
  tags: tags,
@@ -82,7 +82,7 @@ module Datadog
82
82
  end
83
83
 
84
84
  def on_test_case_finished(event)
85
- test_span = CI.active_test
85
+ test_span = test_visibility_component.active_test
86
86
  return if test_span.nil?
87
87
 
88
88
  finish_span(test_span, event.result)
@@ -90,11 +90,11 @@ module Datadog
90
90
  end
91
91
 
92
92
  def on_test_step_started(event)
93
- CI.trace(event.test_step.to_s, type: Ext::STEP_SPAN_TYPE)
93
+ test_visibility_component.trace(event.test_step.to_s, type: Ext::STEP_SPAN_TYPE)
94
94
  end
95
95
 
96
96
  def on_test_step_finished(event)
97
- current_step_span = CI.active_span
97
+ current_step_span = test_visibility_component.active_span
98
98
  return if current_step_span.nil?
99
99
 
100
100
  finish_span(current_step_span, event.result)
@@ -130,8 +130,8 @@ module Datadog
130
130
  def finish_session(result)
131
131
  finish_current_test_suite
132
132
 
133
- test_session = CI.active_test_session
134
- test_module = CI.active_test_module
133
+ test_session = test_visibility_component.active_test_session
134
+ test_module = test_visibility_component.active_test_module
135
135
 
136
136
  return unless test_session && test_module
137
137
 
@@ -150,7 +150,7 @@ module Datadog
150
150
  def start_test_suite(test_suite_name)
151
151
  finish_current_test_suite
152
152
 
153
- @current_test_suite = CI.start_test_suite(test_suite_name)
153
+ @current_test_suite = test_visibility_component.start_test_suite(test_suite_name)
154
154
  end
155
155
 
156
156
  def finish_current_test_suite
@@ -197,6 +197,10 @@ module Datadog
197
197
  def configuration
198
198
  Datadog.configuration.ci[:cucumber]
199
199
  end
200
+
201
+ def test_visibility_component
202
+ Datadog.send(:components).test_visibility
203
+ end
200
204
  end
201
205
  end
202
206
  end
@@ -19,7 +19,7 @@ module Datadog
19
19
 
20
20
  test_suite_name = Helpers.test_suite_name(self, method)
21
21
 
22
- test_suite = Datadog::CI.start_test_suite(test_suite_name)
22
+ test_suite = test_visibility_component.start_test_suite(test_suite_name)
23
23
 
24
24
  results = super
25
25
  return results unless test_suite
@@ -34,6 +34,10 @@ module Datadog
34
34
  def datadog_configuration
35
35
  Datadog.configuration.ci[:minitest]
36
36
  end
37
+
38
+ def test_visibility_component
39
+ Datadog.send(:components).test_visibility
40
+ end
37
41
  end
38
42
  end
39
43
  end
@@ -18,14 +18,14 @@ module Datadog
18
18
 
19
19
  return unless datadog_configuration[:enabled]
20
20
 
21
- CI.start_test_session(
21
+ test_visibility_component.start_test_session(
22
22
  tags: {
23
23
  CI::Ext::Test::TAG_FRAMEWORK => Ext::FRAMEWORK,
24
24
  CI::Ext::Test::TAG_FRAMEWORK_VERSION => CI::Contrib::Minitest::Integration.version.to_s
25
25
  },
26
26
  service: datadog_configuration[:service_name]
27
27
  )
28
- CI.start_test_module(Ext::FRAMEWORK)
28
+ test_visibility_component.start_test_module(Ext::FRAMEWORK)
29
29
  end
30
30
 
31
31
  private
@@ -33,6 +33,10 @@ module Datadog
33
33
  def datadog_configuration
34
34
  Datadog.configuration.ci[:minitest]
35
35
  end
36
+
37
+ def test_visibility_component
38
+ Datadog.send(:components).test_visibility
39
+ end
36
40
  end
37
41
  end
38
42
  end
@@ -26,12 +26,12 @@ module Datadog
26
26
  test_suite_name = "#{test_suite_name} (#{name} concurrently)"
27
27
 
28
28
  # for parallel execution we need to start a new test suite for each test
29
- CI.start_test_suite(test_suite_name)
29
+ test_visibility_component.start_test_suite(test_suite_name)
30
30
  end
31
31
 
32
32
  source_file, line_number = method(name).source_location
33
33
 
34
- test_span = CI.start_test(
34
+ test_span = test_visibility_component.trace_test(
35
35
  name,
36
36
  test_suite_name,
37
37
  tags: {
@@ -47,7 +47,7 @@ module Datadog
47
47
  end
48
48
 
49
49
  def after_teardown
50
- test_span = CI.active_test
50
+ test_span = test_visibility_component.active_test
51
51
  return super unless test_span
52
52
 
53
53
  finish_with_result(test_span, result_code)
@@ -77,6 +77,10 @@ module Datadog
77
77
  def datadog_configuration
78
78
  Datadog.configuration.ci[:minitest]
79
79
  end
80
+
81
+ def test_visibility_component
82
+ Datadog.send(:components).test_visibility
83
+ end
80
84
  end
81
85
 
82
86
  module ClassMethods
@@ -34,10 +34,10 @@ module Datadog
34
34
 
35
35
  if ci_queue?
36
36
  suite_name = "#{suite_name} (ci-queue running example [#{test_name}])"
37
- test_suite_span = CI.start_test_suite(suite_name)
37
+ test_suite_span = test_visibility_component.start_test_suite(suite_name)
38
38
  end
39
39
 
40
- CI.trace_test(
40
+ test_visibility_component.trace_test(
41
41
  test_name,
42
42
  suite_name,
43
43
  tags: {
@@ -99,6 +99,10 @@ module Datadog
99
99
  Datadog.configuration.ci[:rspec]
100
100
  end
101
101
 
102
+ def test_visibility_component
103
+ Datadog.send(:components).test_visibility
104
+ end
105
+
102
106
  def ci_queue?
103
107
  !!defined?(::RSpec::Queue::ExampleExtension) &&
104
108
  self.class.ancestors.include?(::RSpec::Queue::ExampleExtension)
@@ -21,7 +21,7 @@ module Datadog
21
21
  return super unless top_level?
22
22
 
23
23
  suite_name = "#{description} at #{file_path}"
24
- test_suite = Datadog::CI.start_test_suite(suite_name)
24
+ test_suite = test_visibility_component.start_test_suite(suite_name)
25
25
 
26
26
  success = super
27
27
  return success unless test_suite
@@ -44,6 +44,10 @@ module Datadog
44
44
  def datadog_configuration
45
45
  Datadog.configuration.ci[:rspec]
46
46
  end
47
+
48
+ def test_visibility_component
49
+ Datadog.send(:components).test_visibility
50
+ end
47
51
  end
48
52
  end
49
53
  end
@@ -18,7 +18,7 @@ module Datadog
18
18
  return super if ::RSpec.configuration.dry_run?
19
19
  return super unless datadog_configuration[:enabled]
20
20
 
21
- test_session = CI.start_test_session(
21
+ test_session = test_visibility_component.start_test_session(
22
22
  tags: {
23
23
  CI::Ext::Test::TAG_FRAMEWORK => Ext::FRAMEWORK,
24
24
  CI::Ext::Test::TAG_FRAMEWORK_VERSION => CI::Contrib::RSpec::Integration.version.to_s
@@ -26,7 +26,7 @@ module Datadog
26
26
  service: datadog_configuration[:service_name]
27
27
  )
28
28
 
29
- test_module = CI.start_test_module(Ext::FRAMEWORK)
29
+ test_module = test_visibility_component.start_test_module(Ext::FRAMEWORK)
30
30
 
31
31
  result = super
32
32
  return result unless test_module && test_session
@@ -49,6 +49,10 @@ module Datadog
49
49
  def datadog_configuration
50
50
  Datadog.configuration.ci[:rspec]
51
51
  end
52
+
53
+ def test_visibility_component
54
+ Datadog.send(:components).test_visibility
55
+ end
52
56
  end
53
57
  end
54
58
  end
@@ -18,7 +18,7 @@ module Datadog
18
18
  return super if ::RSpec.configuration.dry_run?
19
19
  return super unless datadog_configuration[:enabled]
20
20
 
21
- test_session = CI.start_test_session(
21
+ test_session = test_visibility_component.start_test_session(
22
22
  tags: {
23
23
  CI::Ext::Test::TAG_FRAMEWORK => Ext::FRAMEWORK,
24
24
  CI::Ext::Test::TAG_FRAMEWORK_VERSION => CI::Contrib::RSpec::Integration.version.to_s
@@ -26,7 +26,7 @@ module Datadog
26
26
  service: datadog_configuration[:service_name]
27
27
  )
28
28
 
29
- test_module = CI.start_test_module(Ext::FRAMEWORK)
29
+ test_module = test_visibility_component.start_test_module(Ext::FRAMEWORK)
30
30
 
31
31
  result = super
32
32
  return result unless test_module && test_session
@@ -49,6 +49,10 @@ module Datadog
49
49
  def datadog_configuration
50
50
  Datadog.configuration.ci[:rspec]
51
51
  end
52
+
53
+ def test_visibility_component
54
+ Datadog.send(:components).test_visibility
55
+ end
52
56
  end
53
57
  end
54
58
  end
@@ -15,7 +15,7 @@ module Datadog
15
15
  end
16
16
 
17
17
  def provider_name
18
- "appveyor"
18
+ Provider::APPVEYOR
19
19
  end
20
20
 
21
21
  def pipeline_url
@@ -17,7 +17,7 @@ module Datadog
17
17
  end
18
18
 
19
19
  def provider_name
20
- "awscodepipeline"
20
+ Provider::AWS
21
21
  end
22
22
 
23
23
  def pipeline_id
@@ -17,7 +17,7 @@ module Datadog
17
17
  end
18
18
 
19
19
  def provider_name
20
- "azurepipelines"
20
+ Provider::AZURE
21
21
  end
22
22
 
23
23
  def pipeline_url
@@ -16,7 +16,7 @@ module Datadog
16
16
 
17
17
  # overridden methods
18
18
  def provider_name
19
- "bitbucket"
19
+ Provider::BITBUCKET
20
20
  end
21
21
 
22
22
  def pipeline_id
@@ -15,7 +15,7 @@ module Datadog
15
15
  end
16
16
 
17
17
  def provider_name
18
- "bitrise"
18
+ Provider::BITRISE
19
19
  end
20
20
 
21
21
  def pipeline_id
@@ -15,7 +15,7 @@ module Datadog
15
15
  end
16
16
 
17
17
  def provider_name
18
- "buddy"
18
+ Provider::BUDDYCI
19
19
  end
20
20
 
21
21
  def pipeline_id
@@ -17,7 +17,7 @@ module Datadog
17
17
  end
18
18
 
19
19
  def provider_name
20
- "buildkite"
20
+ Provider::BUILDKITE
21
21
  end
22
22
 
23
23
  def job_url
@@ -17,7 +17,7 @@ module Datadog
17
17
  end
18
18
 
19
19
  def provider_name
20
- "circleci"
20
+ Provider::CIRCLECI
21
21
  end
22
22
 
23
23
  def job_url
@@ -17,7 +17,7 @@ module Datadog
17
17
  end
18
18
 
19
19
  def provider_name
20
- "codefresh"
20
+ Provider::CODEFRESH
21
21
  end
22
22
 
23
23
  def job_name
@@ -19,7 +19,7 @@ module Datadog
19
19
  end
20
20
 
21
21
  def provider_name
22
- "github"
22
+ Provider::GITHUB
23
23
  end
24
24
 
25
25
  def job_name
@@ -15,7 +15,7 @@ module Datadog
15
15
  end
16
16
 
17
17
  def provider_name
18
- "gitlab"
18
+ Provider::GITLAB
19
19
  end
20
20
 
21
21
  def job_name
@@ -18,7 +18,7 @@ module Datadog
18
18
  end
19
19
 
20
20
  def provider_name
21
- "jenkins"
21
+ Provider::JENKINS
22
22
  end
23
23
 
24
24
  def pipeline_id
@@ -15,7 +15,7 @@ module Datadog
15
15
  end
16
16
 
17
17
  def provider_name
18
- "teamcity"
18
+ Provider::TEAMCITY
19
19
  end
20
20
 
21
21
  def job_name
@@ -15,7 +15,7 @@ module Datadog
15
15
  end
16
16
 
17
17
  def provider_name
18
- "travisci"
18
+ Provider::TRAVISCI
19
19
  end
20
20
 
21
21
  def job_url
@@ -23,6 +23,23 @@ module Datadog
23
23
  TAG_NODE_NAME = "ci.node.name"
24
24
  TAG_CI_ENV_VARS = "_dd.ci.env_vars"
25
25
 
26
+ module Provider
27
+ APPVEYOR = "appveyor"
28
+ AZURE = "azurepipelines"
29
+ AWS = "awscodepipeline"
30
+ BITBUCKET = "bitbucket"
31
+ BITRISE = "bitrise"
32
+ BUDDYCI = "buddy"
33
+ BUILDKITE = "buildkite"
34
+ CIRCLECI = "circleci"
35
+ CODEFRESH = "codefresh"
36
+ GITHUB = "github"
37
+ GITLAB = "gitlab"
38
+ JENKINS = "jenkins"
39
+ TEAMCITY = "teamcity"
40
+ TRAVISCI = "travisci"
41
+ end
42
+
26
43
  POSSIBLE_BUNDLE_LOCATIONS = %w[vendor/bundle .bundle].freeze
27
44
 
28
45
  module_function