ddtrace 0.44.0 → 0.45.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.circleci/config.yml +48 -1
- data/Appraisals +16 -7
- data/CHANGELOG.md +43 -1
- data/README.md +1 -0
- data/Rakefile +51 -2
- data/ddtrace.gemspec +1 -0
- data/docs/GettingStarted.md +65 -6
- data/lib/ddtrace.rb +7 -0
- data/lib/ddtrace/auto_instrument.rb +3 -0
- data/lib/ddtrace/auto_instrument_base.rb +6 -0
- data/lib/ddtrace/contrib/action_cable/integration.rb +7 -0
- data/lib/ddtrace/contrib/action_pack/integration.rb +7 -0
- data/lib/ddtrace/contrib/action_view/integration.rb +7 -0
- data/lib/ddtrace/contrib/active_record/integration.rb +7 -0
- data/lib/ddtrace/contrib/active_record/utils.rb +56 -20
- data/lib/ddtrace/contrib/active_support/integration.rb +7 -1
- data/lib/ddtrace/contrib/auto_instrument.rb +48 -0
- data/lib/ddtrace/contrib/cucumber/integration.rb +5 -0
- data/lib/ddtrace/contrib/ethon/easy_patch.rb +5 -4
- data/lib/ddtrace/contrib/extensions.rb +27 -1
- data/lib/ddtrace/contrib/httpclient/configuration/settings.rb +32 -0
- data/lib/ddtrace/contrib/httpclient/ext.rb +17 -0
- data/lib/ddtrace/contrib/httpclient/instrumentation.rb +152 -0
- data/lib/ddtrace/contrib/httpclient/integration.rb +43 -0
- data/lib/ddtrace/contrib/httpclient/patcher.rb +35 -0
- data/lib/ddtrace/contrib/patchable.rb +18 -7
- data/lib/ddtrace/contrib/rack/integration.rb +7 -0
- data/lib/ddtrace/contrib/rack/middlewares.rb +1 -1
- data/lib/ddtrace/contrib/rack/request_queue.rb +6 -1
- data/lib/ddtrace/contrib/rails/auto_instrument_railtie.rb +10 -0
- data/lib/ddtrace/contrib/rails/utils.rb +4 -0
- data/lib/ddtrace/contrib/rake/integration.rb +1 -1
- data/lib/ddtrace/contrib/rspec/integration.rb +5 -0
- data/lib/ddtrace/ext/ci.rb +42 -9
- data/lib/ddtrace/ext/git.rb +0 -1
- data/lib/ddtrace/propagation/http_propagator.rb +17 -2
- data/lib/ddtrace/version.rb +1 -1
- metadata +29 -6
data/lib/ddtrace/ext/ci.rb
CHANGED
@@ -5,6 +5,8 @@ module Datadog
|
|
5
5
|
# Defines constants for CI tags
|
6
6
|
# rubocop:disable Metrics/ModuleLength:
|
7
7
|
module CI
|
8
|
+
TAG_STAGE_NAME = 'ci.stage.name'.freeze
|
9
|
+
TAG_JOB_NAME = 'ci.job.name'.freeze
|
8
10
|
TAG_JOB_URL = 'ci.job.url'.freeze
|
9
11
|
TAG_PIPELINE_ID = 'ci.pipeline.id'.freeze
|
10
12
|
TAG_PIPELINE_NAME = 'ci.pipeline.name'.freeze
|
@@ -23,7 +25,8 @@ module Datadog
|
|
23
25
|
['GITLAB_CI'.freeze, :extract_gitlab],
|
24
26
|
['JENKINS_URL'.freeze, :extract_jenkins],
|
25
27
|
['TEAMCITY_VERSION'.freeze, :extract_teamcity],
|
26
|
-
['TRAVIS'.freeze, :extract_travis]
|
28
|
+
['TRAVIS'.freeze, :extract_travis],
|
29
|
+
['BITRISE_BUILD_SLUG'.freeze, :extract_bitrise]
|
27
30
|
].freeze
|
28
31
|
|
29
32
|
module_function
|
@@ -37,7 +40,6 @@ module Datadog
|
|
37
40
|
tags[Git::TAG_TAG] = normalize_ref(tags[Git::TAG_TAG])
|
38
41
|
tags.delete(Git::TAG_BRANCH) unless tags[Git::TAG_TAG].nil?
|
39
42
|
tags[Git::TAG_BRANCH] = normalize_ref(tags[Git::TAG_BRANCH])
|
40
|
-
tags[Git::TAG_DEPRECATED_COMMIT_SHA] = tags[Git::TAG_COMMIT_SHA]
|
41
43
|
tags[Git::TAG_REPOSITORY_URL] = filter_sensitive_info(tags[Git::TAG_REPOSITORY_URL])
|
42
44
|
|
43
45
|
# Expand ~
|
@@ -63,26 +65,34 @@ module Datadog
|
|
63
65
|
|
64
66
|
def extract_appveyor(env)
|
65
67
|
url = "https://ci.appveyor.com/project/#{env['APPVEYOR_REPO_NAME']}/builds/#{env['APPVEYOR_BUILD_ID']}"
|
68
|
+
|
69
|
+
if env['APPVEYOR_REPO_PROVIDER'] == 'github'
|
70
|
+
repository = "https://github.com/#{env['APPVEYOR_REPO_NAME']}.git"
|
71
|
+
commit = env['APPVEYOR_REPO_COMMIT']
|
72
|
+
branch = (env['APPVEYOR_PULL_REQUEST_HEAD_REPO_BRANCH'] || env['APPVEYOR_REPO_BRANCH'])
|
73
|
+
tag = env['APPVEYOR_REPO_TAG_NAME']
|
74
|
+
end
|
75
|
+
|
66
76
|
{
|
67
77
|
TAG_PROVIDER_NAME => 'appveyor',
|
68
|
-
Git::TAG_REPOSITORY_URL =>
|
69
|
-
Git::TAG_COMMIT_SHA =>
|
78
|
+
Git::TAG_REPOSITORY_URL => repository,
|
79
|
+
Git::TAG_COMMIT_SHA => commit,
|
70
80
|
TAG_WORKSPACE_PATH => env['APPVEYOR_BUILD_FOLDER'],
|
71
81
|
TAG_PIPELINE_ID => env['APPVEYOR_BUILD_ID'],
|
72
82
|
TAG_PIPELINE_NAME => env['APPVEYOR_REPO_NAME'],
|
73
83
|
TAG_PIPELINE_NUMBER => env['APPVEYOR_BUILD_NUMBER'],
|
74
84
|
TAG_PIPELINE_URL => url,
|
75
85
|
TAG_JOB_URL => url,
|
76
|
-
Git::TAG_BRANCH =>
|
77
|
-
Git::TAG_TAG =>
|
86
|
+
Git::TAG_BRANCH => branch,
|
87
|
+
Git::TAG_TAG => tag
|
78
88
|
}
|
79
89
|
end
|
80
90
|
|
81
91
|
def extract_azure_pipelines(env)
|
82
|
-
if env['SYSTEM_TEAMFOUNDATIONSERVERURI'] && env['
|
83
|
-
base_url = "#{env['SYSTEM_TEAMFOUNDATIONSERVERURI']}#{env['
|
92
|
+
if env['SYSTEM_TEAMFOUNDATIONSERVERURI'] && env['SYSTEM_TEAMPROJECTID'] && env['BUILD_BUILDID']
|
93
|
+
base_url = "#{env['SYSTEM_TEAMFOUNDATIONSERVERURI']}#{env['SYSTEM_TEAMPROJECTID']}" \
|
84
94
|
"/_build/results?buildId=#{env['BUILD_BUILDID']}"
|
85
|
-
pipeline_url = base_url
|
95
|
+
pipeline_url = base_url
|
86
96
|
job_url = base_url + "&view=logs&j=#{env['SYSTEM_JOBID']}&t=#{env['SYSTEM_TASKINSTANCEID']}"
|
87
97
|
else
|
88
98
|
pipeline_url = job_url = nil
|
@@ -194,6 +204,8 @@ module Datadog
|
|
194
204
|
Git::TAG_COMMIT_SHA => env['CI_COMMIT_SHA'],
|
195
205
|
Git::TAG_REPOSITORY_URL => env['CI_REPOSITORY_URL'],
|
196
206
|
Git::TAG_TAG => env['CI_COMMIT_TAG'],
|
207
|
+
TAG_STAGE_NAME => env['CI_JOB_STAGE'],
|
208
|
+
TAG_JOB_NAME => env['CI_JOB_NAME'],
|
197
209
|
TAG_JOB_URL => env['CI_JOB_URL'],
|
198
210
|
TAG_PIPELINE_ID => env['CI_PIPELINE_ID'],
|
199
211
|
TAG_PIPELINE_NAME => env['CI_PROJECT_PATH'],
|
@@ -259,6 +271,27 @@ module Datadog
|
|
259
271
|
TAG_WORKSPACE_PATH => env['TRAVIS_BUILD_DIR']
|
260
272
|
}
|
261
273
|
end
|
274
|
+
|
275
|
+
def extract_bitrise(env)
|
276
|
+
commit = (
|
277
|
+
env['BITRISE_GIT_COMMIT'] || env['GIT_CLONE_COMMIT_HASH']
|
278
|
+
)
|
279
|
+
branch = (
|
280
|
+
env['BITRISEIO_GIT_BRANCH_DEST'] || env['BITRISE_GIT_BRANCH']
|
281
|
+
)
|
282
|
+
{
|
283
|
+
TAG_PROVIDER_NAME => 'bitrise',
|
284
|
+
TAG_PIPELINE_ID => env['BITRISE_BUILD_SLUG'],
|
285
|
+
TAG_PIPELINE_NAME => env['BITRISE_APP_TITLE'],
|
286
|
+
TAG_PIPELINE_NUMBER => env['BITRISE_BUILD_NUMBER'],
|
287
|
+
TAG_PIPELINE_URL => env['BITRISE_BUILD_URL'],
|
288
|
+
TAG_WORKSPACE_PATH => env['BITRISE_SOURCE_DIR'],
|
289
|
+
Git::TAG_REPOSITORY_URL => env['GIT_REPOSITORY_URL'],
|
290
|
+
Git::TAG_COMMIT_SHA => commit,
|
291
|
+
Git::TAG_BRANCH => branch,
|
292
|
+
Git::TAG_TAG => env['BITRISE_GIT_TAG']
|
293
|
+
}
|
294
|
+
end
|
262
295
|
end
|
263
296
|
end
|
264
297
|
end
|
data/lib/ddtrace/ext/git.rb
CHANGED
@@ -26,7 +26,14 @@ module Datadog
|
|
26
26
|
# Inject all configured propagation styles
|
27
27
|
::Datadog.configuration.distributed_tracing.propagation_inject_style.each do |style|
|
28
28
|
propagator = PROPAGATION_STYLES[style]
|
29
|
-
|
29
|
+
begin
|
30
|
+
propagator.inject!(context, env) unless propagator.nil?
|
31
|
+
rescue => e
|
32
|
+
Datadog.logger.error(
|
33
|
+
'Error injecting propagated context into the environment. ' \
|
34
|
+
"Cause: #{e} Location: #{e.backtrace.first}"
|
35
|
+
)
|
36
|
+
end
|
30
37
|
end
|
31
38
|
end
|
32
39
|
|
@@ -42,7 +49,15 @@ module Datadog
|
|
42
49
|
|
43
50
|
# Extract context
|
44
51
|
# DEV: `propagator.extract` will return `nil`, where `HTTPPropagator#extract` will not
|
45
|
-
|
52
|
+
begin
|
53
|
+
extracted_context = propagator.extract(env)
|
54
|
+
rescue => e
|
55
|
+
Datadog.logger.error(
|
56
|
+
'Error extracting propagated context from the environment. ' \
|
57
|
+
"Cause: #{e} Location: #{e.backtrace.first}"
|
58
|
+
)
|
59
|
+
end
|
60
|
+
|
46
61
|
# Skip this style if no valid headers were found
|
47
62
|
next if extracted_context.nil?
|
48
63
|
|
data/lib/ddtrace/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ddtrace
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.45.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Datadog, Inc.
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-01-
|
11
|
+
date: 2021-01-26 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: msgpack
|
@@ -262,6 +262,20 @@ dependencies:
|
|
262
262
|
- - "~>"
|
263
263
|
- !ruby/object:Gem::Version
|
264
264
|
version: 0.2.0
|
265
|
+
- !ruby/object:Gem::Dependency
|
266
|
+
name: rspec_junit_formatter
|
267
|
+
requirement: !ruby/object:Gem::Requirement
|
268
|
+
requirements:
|
269
|
+
- - ">="
|
270
|
+
- !ruby/object:Gem::Version
|
271
|
+
version: 0.4.1
|
272
|
+
type: :development
|
273
|
+
prerelease: false
|
274
|
+
version_requirements: !ruby/object:Gem::Requirement
|
275
|
+
requirements:
|
276
|
+
- - ">="
|
277
|
+
- !ruby/object:Gem::Version
|
278
|
+
version: 0.4.1
|
265
279
|
- !ruby/object:Gem::Dependency
|
266
280
|
name: addressable
|
267
281
|
requirement: !ruby/object:Gem::Requirement
|
@@ -456,6 +470,8 @@ files:
|
|
456
470
|
- lib/ddtrace/augmentation/method_wrapper.rb
|
457
471
|
- lib/ddtrace/augmentation/method_wrapping.rb
|
458
472
|
- lib/ddtrace/augmentation/shim.rb
|
473
|
+
- lib/ddtrace/auto_instrument.rb
|
474
|
+
- lib/ddtrace/auto_instrument_base.rb
|
459
475
|
- lib/ddtrace/buffer.rb
|
460
476
|
- lib/ddtrace/chunker.rb
|
461
477
|
- lib/ddtrace/configuration.rb
|
@@ -529,6 +545,7 @@ files:
|
|
529
545
|
- lib/ddtrace/contrib/active_support/notifications/subscription.rb
|
530
546
|
- lib/ddtrace/contrib/active_support/patcher.rb
|
531
547
|
- lib/ddtrace/contrib/analytics.rb
|
548
|
+
- lib/ddtrace/contrib/auto_instrument.rb
|
532
549
|
- lib/ddtrace/contrib/aws/configuration/settings.rb
|
533
550
|
- lib/ddtrace/contrib/aws/ext.rb
|
534
551
|
- lib/ddtrace/contrib/aws/instrumentation.rb
|
@@ -612,6 +629,11 @@ files:
|
|
612
629
|
- lib/ddtrace/contrib/http/integration.rb
|
613
630
|
- lib/ddtrace/contrib/http/patcher.rb
|
614
631
|
- lib/ddtrace/contrib/http_annotation_helper.rb
|
632
|
+
- lib/ddtrace/contrib/httpclient/configuration/settings.rb
|
633
|
+
- lib/ddtrace/contrib/httpclient/ext.rb
|
634
|
+
- lib/ddtrace/contrib/httpclient/instrumentation.rb
|
635
|
+
- lib/ddtrace/contrib/httpclient/integration.rb
|
636
|
+
- lib/ddtrace/contrib/httpclient/patcher.rb
|
615
637
|
- lib/ddtrace/contrib/httprb/configuration/settings.rb
|
616
638
|
- lib/ddtrace/contrib/httprb/ext.rb
|
617
639
|
- lib/ddtrace/contrib/httprb/instrumentation.rb
|
@@ -680,6 +702,7 @@ files:
|
|
680
702
|
- lib/ddtrace/contrib/rack/middlewares.rb
|
681
703
|
- lib/ddtrace/contrib/rack/patcher.rb
|
682
704
|
- lib/ddtrace/contrib/rack/request_queue.rb
|
705
|
+
- lib/ddtrace/contrib/rails/auto_instrument_railtie.rb
|
683
706
|
- lib/ddtrace/contrib/rails/configuration/settings.rb
|
684
707
|
- lib/ddtrace/contrib/rails/ext.rb
|
685
708
|
- lib/ddtrace/contrib/rails/framework.rb
|
@@ -888,7 +911,7 @@ licenses:
|
|
888
911
|
- BSD-3-Clause
|
889
912
|
metadata:
|
890
913
|
allowed_push_host: https://rubygems.org
|
891
|
-
post_install_message:
|
914
|
+
post_install_message:
|
892
915
|
rdoc_options: []
|
893
916
|
require_paths:
|
894
917
|
- lib
|
@@ -903,8 +926,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
903
926
|
- !ruby/object:Gem::Version
|
904
927
|
version: 2.0.0
|
905
928
|
requirements: []
|
906
|
-
rubygems_version: 3.2
|
907
|
-
signing_key:
|
929
|
+
rubygems_version: 3.1.2
|
930
|
+
signing_key:
|
908
931
|
specification_version: 4
|
909
932
|
summary: Datadog tracing code for your Ruby applications
|
910
933
|
test_files: []
|