ddtrace 0.13.0 → 0.47.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 (628) hide show
  1. checksums.yaml +4 -4
  2. data/.circleci/config.yml +598 -381
  3. data/.circleci/images/primary/Dockerfile-2.0.0 +6 -2
  4. data/.circleci/images/primary/Dockerfile-2.1.10 +6 -2
  5. data/.circleci/images/primary/Dockerfile-2.2.10 +6 -2
  6. data/.circleci/images/primary/Dockerfile-2.3.8 +75 -0
  7. data/.circleci/images/primary/Dockerfile-2.4.6 +73 -0
  8. data/.circleci/images/primary/{Dockerfile-2.3.7 → Dockerfile-2.5.6} +2 -2
  9. data/.circleci/images/primary/{Dockerfile-2.4.4 → Dockerfile-2.6.4} +2 -2
  10. data/.circleci/images/primary/Dockerfile-2.7.0 +73 -0
  11. data/.circleci/images/primary/Dockerfile-3.0.0 +73 -0
  12. data/.circleci/images/primary/Dockerfile-jruby-9.2-latest +78 -0
  13. data/.circleci/images/primary/Dockerfile-jruby-9.2.0.0 +73 -0
  14. data/.circleci/images/primary/{Dockerfile-1.9.3 → Dockerfile-truffleruby-21.0.0} +6 -2
  15. data/.env +5 -2
  16. data/.github/CODEOWNERS +1 -0
  17. data/.github/workflows/add-milestone-to-pull-requests.yml +42 -0
  18. data/.github/workflows/create-next-milestone.yml +20 -0
  19. data/.gitignore +2 -0
  20. data/.gitlab-ci.yml +27 -0
  21. data/.rubocop.yml +270 -6
  22. data/.rubocop_todo.yml +397 -0
  23. data/.simplecov +47 -0
  24. data/Appraisals +933 -127
  25. data/CHANGELOG.md +2106 -97
  26. data/CONTRIBUTING.md +85 -0
  27. data/Gemfile +55 -2
  28. data/LICENSE +4 -22
  29. data/LICENSE-3rdparty.csv +2 -0
  30. data/LICENSE.Apache +200 -0
  31. data/LICENSE.BSD3 +24 -0
  32. data/NOTICE +4 -0
  33. data/README.md +5 -34
  34. data/Rakefile +825 -351
  35. data/benchmarks/postgres_database.yml +9 -0
  36. data/benchmarks/sidekiq_test.rb +154 -0
  37. data/ddtrace.gemspec +8 -17
  38. data/docker-compose.yml +260 -47
  39. data/docs/DevelopmentGuide.md +249 -0
  40. data/docs/GettingStarted.md +1435 -290
  41. data/integration/README.md +68 -0
  42. data/integration/apps/rack/.dockerignore +1 -0
  43. data/integration/apps/rack/.envrc.sample +1 -0
  44. data/integration/apps/rack/.gitignore +4 -0
  45. data/integration/apps/rack/.rspec +1 -0
  46. data/integration/apps/rack/Dockerfile +25 -0
  47. data/integration/apps/rack/Dockerfile-ci +11 -0
  48. data/integration/apps/rack/Gemfile +24 -0
  49. data/integration/apps/rack/README.md +93 -0
  50. data/integration/apps/rack/app/acme.rb +80 -0
  51. data/integration/apps/rack/app/datadog.rb +17 -0
  52. data/integration/apps/rack/bin/run +22 -0
  53. data/integration/apps/rack/bin/setup +17 -0
  54. data/integration/apps/rack/bin/test +24 -0
  55. data/integration/apps/rack/config.ru +6 -0
  56. data/integration/apps/rack/config/puma.rb +14 -0
  57. data/integration/apps/rack/config/unicorn.rb +23 -0
  58. data/integration/apps/rack/docker-compose.ci.yml +62 -0
  59. data/integration/apps/rack/docker-compose.yml +78 -0
  60. data/integration/apps/rack/script/build-images +38 -0
  61. data/integration/apps/rack/script/ci +50 -0
  62. data/integration/apps/rack/spec/integration/basic_spec.rb +10 -0
  63. data/integration/apps/rack/spec/spec_helper.rb +16 -0
  64. data/integration/apps/rack/spec/support/integration_helper.rb +22 -0
  65. data/integration/apps/rails-five/.dockerignore +1 -0
  66. data/integration/apps/rails-five/.env +3 -0
  67. data/integration/apps/rails-five/.envrc.sample +1 -0
  68. data/integration/apps/rails-five/.gitignore +30 -0
  69. data/integration/apps/rails-five/Dockerfile +25 -0
  70. data/integration/apps/rails-five/Dockerfile-ci +11 -0
  71. data/integration/apps/rails-five/Gemfile +104 -0
  72. data/integration/apps/rails-five/README.md +94 -0
  73. data/integration/apps/rails-five/Rakefile +6 -0
  74. data/integration/apps/rails-five/app/channels/application_cable/channel.rb +4 -0
  75. data/integration/apps/rails-five/app/channels/application_cable/connection.rb +4 -0
  76. data/integration/apps/rails-five/app/controllers/application_controller.rb +2 -0
  77. data/integration/apps/rails-five/app/controllers/basic_controller.rb +36 -0
  78. data/integration/apps/rails-five/app/controllers/concerns/.keep +0 -0
  79. data/integration/apps/rails-five/app/controllers/health_controller.rb +9 -0
  80. data/integration/apps/rails-five/app/controllers/jobs_controller.rb +12 -0
  81. data/integration/apps/rails-five/app/jobs/application_job.rb +2 -0
  82. data/integration/apps/rails-five/app/jobs/test_job.rb +12 -0
  83. data/integration/apps/rails-five/app/mailers/application_mailer.rb +4 -0
  84. data/integration/apps/rails-five/app/models/application_record.rb +3 -0
  85. data/integration/apps/rails-five/app/models/concerns/.keep +0 -0
  86. data/integration/apps/rails-five/app/models/test.rb +2 -0
  87. data/integration/apps/rails-five/app/views/layouts/mailer.html.erb +13 -0
  88. data/integration/apps/rails-five/app/views/layouts/mailer.text.erb +1 -0
  89. data/integration/apps/rails-five/bin/bundle +3 -0
  90. data/integration/apps/rails-five/bin/rails +9 -0
  91. data/integration/apps/rails-five/bin/rake +9 -0
  92. data/integration/apps/rails-five/bin/run +24 -0
  93. data/integration/apps/rails-five/bin/setup +27 -0
  94. data/integration/apps/rails-five/bin/spring +17 -0
  95. data/integration/apps/rails-five/bin/test +21 -0
  96. data/integration/apps/rails-five/bin/update +28 -0
  97. data/integration/apps/rails-five/config.ru +5 -0
  98. data/integration/apps/rails-five/config/application.rb +97 -0
  99. data/integration/apps/rails-five/config/boot.rb +4 -0
  100. data/integration/apps/rails-five/config/cable.yml +10 -0
  101. data/integration/apps/rails-five/config/credentials.yml.enc +1 -0
  102. data/integration/apps/rails-five/config/database.yml +28 -0
  103. data/integration/apps/rails-five/config/environment.rb +5 -0
  104. data/integration/apps/rails-five/config/environments/development.rb +51 -0
  105. data/integration/apps/rails-five/config/environments/production.rb +82 -0
  106. data/integration/apps/rails-five/config/environments/test.rb +43 -0
  107. data/integration/apps/rails-five/config/initializers/datadog.rb +18 -0
  108. data/integration/apps/rails-five/config/initializers/filter_parameter_logging.rb +4 -0
  109. data/integration/apps/rails-five/config/initializers/resque.rb +4 -0
  110. data/integration/apps/rails-five/config/initializers/rollbar.rb +5 -0
  111. data/integration/apps/rails-five/config/initializers/wrap_parameters.rb +14 -0
  112. data/integration/apps/rails-five/config/locales/en.yml +33 -0
  113. data/integration/apps/rails-five/config/puma.rb +24 -0
  114. data/integration/apps/rails-five/config/routes.rb +11 -0
  115. data/integration/apps/rails-five/config/spring.rb +6 -0
  116. data/integration/apps/rails-five/config/unicorn.rb +29 -0
  117. data/integration/apps/rails-five/db/migrate/20190927215052_create_tests.rb +11 -0
  118. data/integration/apps/rails-five/db/schema.rb +23 -0
  119. data/integration/apps/rails-five/db/seeds.rb +7 -0
  120. data/integration/apps/rails-five/docker-compose.ci.yml +98 -0
  121. data/integration/apps/rails-five/docker-compose.yml +100 -0
  122. data/integration/apps/rails-five/lib/tasks/.keep +0 -0
  123. data/integration/apps/rails-five/log/.keep +0 -0
  124. data/integration/apps/rails-five/public/robots.txt +1 -0
  125. data/integration/apps/rails-five/script/build-images +35 -0
  126. data/integration/apps/rails-five/script/ci +50 -0
  127. data/integration/apps/rails-five/spec/integration/basic_spec.rb +10 -0
  128. data/integration/apps/rails-five/spec/spec_helper.rb +16 -0
  129. data/integration/apps/rails-five/spec/support/integration_helper.rb +22 -0
  130. data/integration/apps/rails-five/storage/.keep +0 -0
  131. data/integration/apps/rails-five/tmp/.keep +0 -0
  132. data/integration/apps/rails-five/vendor/.keep +0 -0
  133. data/integration/apps/ruby/.dockerignore +1 -0
  134. data/integration/apps/ruby/.envrc.sample +1 -0
  135. data/integration/apps/ruby/.gitignore +2 -0
  136. data/integration/apps/ruby/Dockerfile +25 -0
  137. data/integration/apps/ruby/Dockerfile-ci +11 -0
  138. data/integration/apps/ruby/Gemfile +11 -0
  139. data/integration/apps/ruby/README.md +70 -0
  140. data/integration/apps/ruby/agent.yaml +3 -0
  141. data/integration/apps/ruby/app/datadog.rb +13 -0
  142. data/integration/apps/ruby/app/fibonacci.rb +58 -0
  143. data/integration/apps/ruby/bin/run +20 -0
  144. data/integration/apps/ruby/bin/setup +17 -0
  145. data/integration/apps/ruby/bin/test +21 -0
  146. data/integration/apps/ruby/docker-compose.ci.yml +51 -0
  147. data/integration/apps/ruby/docker-compose.yml +63 -0
  148. data/integration/apps/ruby/script/build-images +38 -0
  149. data/integration/apps/ruby/script/ci +50 -0
  150. data/integration/images/agent/Dockerfile +2 -0
  151. data/integration/images/agent/agent.yaml +3 -0
  152. data/integration/images/include/datadog/analyzer.rb +71 -0
  153. data/integration/images/include/datadog/demo_env.rb +101 -0
  154. data/integration/images/include/http-health-check +33 -0
  155. data/integration/images/ruby/2.0/Dockerfile +54 -0
  156. data/integration/images/ruby/2.1/Dockerfile +54 -0
  157. data/integration/images/ruby/2.2/Dockerfile +54 -0
  158. data/integration/images/ruby/2.3/Dockerfile +70 -0
  159. data/integration/images/ruby/2.4/Dockerfile +54 -0
  160. data/integration/images/ruby/2.5/Dockerfile +54 -0
  161. data/integration/images/ruby/2.6/Dockerfile +54 -0
  162. data/integration/images/ruby/2.7/Dockerfile +54 -0
  163. data/integration/images/ruby/3.0/Dockerfile +54 -0
  164. data/integration/images/wrk/Dockerfile +33 -0
  165. data/integration/images/wrk/scripts/entrypoint.sh +17 -0
  166. data/integration/images/wrk/scripts/scenarios/basic/default.lua +1 -0
  167. data/integration/images/wrk/scripts/scenarios/basic/fibonacci.lua +1 -0
  168. data/integration/script/build-images +43 -0
  169. data/lib/ddtrace.rb +65 -62
  170. data/lib/ddtrace/analytics.rb +38 -0
  171. data/lib/ddtrace/auto_instrument.rb +3 -0
  172. data/lib/ddtrace/auto_instrument_base.rb +6 -0
  173. data/lib/ddtrace/buffer.rb +298 -32
  174. data/lib/ddtrace/chunker.rb +34 -0
  175. data/lib/ddtrace/configuration.rb +151 -26
  176. data/lib/ddtrace/configuration/base.rb +84 -0
  177. data/lib/ddtrace/configuration/components.rb +151 -0
  178. data/lib/ddtrace/configuration/{resolver.rb → dependency_resolver.rb} +2 -2
  179. data/lib/ddtrace/configuration/option.rb +64 -0
  180. data/lib/ddtrace/configuration/option_definition.rb +121 -0
  181. data/lib/ddtrace/configuration/option_definition_set.rb +18 -0
  182. data/lib/ddtrace/configuration/option_set.rb +6 -0
  183. data/lib/ddtrace/configuration/options.rb +111 -0
  184. data/lib/ddtrace/configuration/pin_setup.rb +4 -3
  185. data/lib/ddtrace/configuration/settings.rb +299 -0
  186. data/lib/ddtrace/context.rb +133 -66
  187. data/lib/ddtrace/context_flush.rb +51 -114
  188. data/lib/ddtrace/context_provider.rb +61 -0
  189. data/lib/ddtrace/contrib/action_cable/configuration/settings.rb +30 -0
  190. data/lib/ddtrace/contrib/action_cable/event.rb +66 -0
  191. data/lib/ddtrace/contrib/action_cable/events.rb +33 -0
  192. data/lib/ddtrace/contrib/action_cable/events/broadcast.rb +49 -0
  193. data/lib/ddtrace/contrib/action_cable/events/perform_action.rb +55 -0
  194. data/lib/ddtrace/contrib/action_cable/events/transmit.rb +50 -0
  195. data/lib/ddtrace/contrib/action_cable/ext.rb +26 -0
  196. data/lib/ddtrace/contrib/action_cable/instrumentation.rb +31 -0
  197. data/lib/ddtrace/contrib/action_cable/integration.rb +45 -0
  198. data/lib/ddtrace/contrib/action_cable/patcher.rb +27 -0
  199. data/lib/ddtrace/contrib/action_pack/action_controller/instrumentation.rb +146 -0
  200. data/lib/ddtrace/contrib/action_pack/action_controller/patcher.rb +25 -0
  201. data/lib/ddtrace/contrib/action_pack/configuration/settings.rb +32 -0
  202. data/lib/ddtrace/contrib/action_pack/ext.rb +19 -0
  203. data/lib/ddtrace/contrib/action_pack/integration.rb +45 -0
  204. data/lib/ddtrace/contrib/action_pack/patcher.rb +23 -0
  205. data/lib/ddtrace/contrib/action_pack/utils.rb +36 -0
  206. data/lib/ddtrace/contrib/action_view/configuration/settings.rb +31 -0
  207. data/lib/ddtrace/contrib/action_view/event.rb +35 -0
  208. data/lib/ddtrace/contrib/action_view/events.rb +30 -0
  209. data/lib/ddtrace/contrib/action_view/events/render_partial.rb +46 -0
  210. data/lib/ddtrace/contrib/action_view/events/render_template.rb +49 -0
  211. data/lib/ddtrace/contrib/action_view/ext.rb +20 -0
  212. data/lib/ddtrace/contrib/action_view/instrumentation/partial_renderer.rb +74 -0
  213. data/lib/ddtrace/contrib/action_view/instrumentation/template_renderer.rb +167 -0
  214. data/lib/ddtrace/contrib/action_view/integration.rb +52 -0
  215. data/lib/ddtrace/contrib/action_view/patcher.rb +47 -0
  216. data/lib/ddtrace/contrib/action_view/utils.rb +32 -0
  217. data/lib/ddtrace/contrib/active_model_serializers/configuration/settings.rb +30 -0
  218. data/lib/ddtrace/contrib/active_model_serializers/event.rb +14 -3
  219. data/lib/ddtrace/contrib/active_model_serializers/events/render.rb +2 -2
  220. data/lib/ddtrace/contrib/active_model_serializers/events/serialize.rb +2 -2
  221. data/lib/ddtrace/contrib/active_model_serializers/ext.rb +20 -0
  222. data/lib/ddtrace/contrib/active_model_serializers/integration.rb +40 -0
  223. data/lib/ddtrace/contrib/active_model_serializers/patcher.rb +12 -45
  224. data/lib/ddtrace/contrib/active_record/configuration/resolver.rb +128 -0
  225. data/lib/ddtrace/contrib/active_record/configuration/settings.rb +35 -0
  226. data/lib/ddtrace/contrib/active_record/event.rb +1 -1
  227. data/lib/ddtrace/contrib/active_record/events/instantiation.rb +17 -8
  228. data/lib/ddtrace/contrib/active_record/events/sql.rb +32 -12
  229. data/lib/ddtrace/contrib/active_record/ext.rb +24 -0
  230. data/lib/ddtrace/contrib/active_record/integration.rb +53 -0
  231. data/lib/ddtrace/contrib/active_record/patcher.rb +5 -35
  232. data/lib/ddtrace/contrib/active_record/utils.rb +85 -31
  233. data/lib/ddtrace/contrib/active_support/cache/instrumentation.rb +258 -0
  234. data/lib/ddtrace/contrib/active_support/cache/patcher.rb +69 -0
  235. data/lib/ddtrace/contrib/active_support/cache/redis.rb +47 -0
  236. data/lib/ddtrace/contrib/active_support/configuration/settings.rb +30 -0
  237. data/lib/ddtrace/contrib/active_support/ext.rb +27 -0
  238. data/lib/ddtrace/contrib/active_support/integration.rb +46 -0
  239. data/lib/ddtrace/contrib/active_support/notifications/event.rb +15 -2
  240. data/lib/ddtrace/contrib/active_support/notifications/subscriber.rb +3 -2
  241. data/lib/ddtrace/contrib/active_support/notifications/subscription.rb +20 -12
  242. data/lib/ddtrace/contrib/active_support/patcher.rb +23 -0
  243. data/lib/ddtrace/contrib/analytics.rb +24 -0
  244. data/lib/ddtrace/contrib/auto_instrument.rb +49 -0
  245. data/lib/ddtrace/contrib/aws/configuration/settings.rb +30 -0
  246. data/lib/ddtrace/contrib/aws/ext.rb +23 -0
  247. data/lib/ddtrace/contrib/aws/instrumentation.rb +37 -19
  248. data/lib/ddtrace/contrib/aws/integration.rb +42 -0
  249. data/lib/ddtrace/contrib/aws/patcher.rb +30 -40
  250. data/lib/ddtrace/contrib/aws/services.rb +3 -0
  251. data/lib/ddtrace/contrib/concurrent_ruby/configuration/settings.rb +20 -0
  252. data/lib/ddtrace/contrib/concurrent_ruby/context_composite_executor_service.rb +41 -0
  253. data/lib/ddtrace/contrib/concurrent_ruby/ext.rb +12 -0
  254. data/lib/ddtrace/contrib/concurrent_ruby/future_patch.rb +23 -0
  255. data/lib/ddtrace/contrib/concurrent_ruby/integration.rb +38 -0
  256. data/lib/ddtrace/contrib/concurrent_ruby/patcher.rb +28 -0
  257. data/lib/ddtrace/contrib/configurable.rb +102 -0
  258. data/lib/ddtrace/contrib/configuration/resolver.rb +81 -0
  259. data/lib/ddtrace/contrib/configuration/resolvers/pattern_resolver.rb +39 -0
  260. data/lib/ddtrace/contrib/configuration/settings.rb +55 -0
  261. data/lib/ddtrace/contrib/cucumber/configuration/settings.rb +28 -0
  262. data/lib/ddtrace/contrib/cucumber/ext.rb +17 -0
  263. data/lib/ddtrace/contrib/cucumber/formatter.rb +98 -0
  264. data/lib/ddtrace/contrib/cucumber/instrumentation.rb +24 -0
  265. data/lib/ddtrace/contrib/cucumber/integration.rb +45 -0
  266. data/lib/ddtrace/contrib/cucumber/patcher.rb +23 -0
  267. data/lib/ddtrace/contrib/dalli/configuration/settings.rb +30 -0
  268. data/lib/ddtrace/contrib/dalli/ext.rb +20 -0
  269. data/lib/ddtrace/contrib/dalli/instrumentation.rb +36 -17
  270. data/lib/ddtrace/contrib/dalli/integration.rb +38 -0
  271. data/lib/ddtrace/contrib/dalli/patcher.rb +13 -41
  272. data/lib/ddtrace/contrib/dalli/quantize.rb +4 -4
  273. data/lib/ddtrace/contrib/delayed_job/configuration/settings.rb +32 -0
  274. data/lib/ddtrace/contrib/delayed_job/ext.rb +23 -0
  275. data/lib/ddtrace/contrib/delayed_job/integration.rb +38 -0
  276. data/lib/ddtrace/contrib/delayed_job/patcher.rb +28 -0
  277. data/lib/ddtrace/contrib/delayed_job/plugin.rb +84 -0
  278. data/lib/ddtrace/contrib/elasticsearch/configuration/settings.rb +31 -0
  279. data/lib/ddtrace/contrib/elasticsearch/ext.rb +22 -0
  280. data/lib/ddtrace/contrib/elasticsearch/integration.rb +39 -0
  281. data/lib/ddtrace/contrib/elasticsearch/patcher.rb +49 -50
  282. data/lib/ddtrace/contrib/elasticsearch/quantize.rb +3 -2
  283. data/lib/ddtrace/contrib/ethon/configuration/settings.rb +32 -0
  284. data/lib/ddtrace/contrib/ethon/easy_patch.rb +151 -0
  285. data/lib/ddtrace/contrib/ethon/ext.rb +19 -0
  286. data/lib/ddtrace/contrib/ethon/integration.rb +43 -0
  287. data/lib/ddtrace/contrib/ethon/multi_patch.rb +84 -0
  288. data/lib/ddtrace/contrib/ethon/patcher.rb +25 -0
  289. data/lib/ddtrace/contrib/excon/configuration/settings.rb +33 -0
  290. data/lib/ddtrace/contrib/excon/ext.rb +17 -0
  291. data/lib/ddtrace/contrib/excon/integration.rb +43 -0
  292. data/lib/ddtrace/contrib/excon/middleware.rb +47 -23
  293. data/lib/ddtrace/contrib/excon/patcher.rb +7 -30
  294. data/lib/ddtrace/contrib/extensions.rb +143 -0
  295. data/lib/ddtrace/contrib/faraday/configuration/settings.rb +38 -0
  296. data/lib/ddtrace/contrib/faraday/connection.rb +18 -0
  297. data/lib/ddtrace/contrib/faraday/ext.rb +17 -0
  298. data/lib/ddtrace/contrib/faraday/integration.rb +43 -0
  299. data/lib/ddtrace/contrib/faraday/middleware.rb +46 -29
  300. data/lib/ddtrace/contrib/faraday/patcher.rb +36 -56
  301. data/lib/ddtrace/contrib/faraday/rack_builder.rb +18 -0
  302. data/lib/ddtrace/contrib/grape/configuration/settings.rb +38 -0
  303. data/lib/ddtrace/contrib/grape/endpoint.rb +192 -120
  304. data/lib/ddtrace/contrib/grape/ext.rb +23 -0
  305. data/lib/ddtrace/contrib/grape/instrumentation.rb +33 -0
  306. data/lib/ddtrace/contrib/grape/integration.rb +39 -0
  307. data/lib/ddtrace/contrib/grape/patcher.rb +15 -59
  308. data/lib/ddtrace/contrib/graphql/configuration/settings.rb +32 -0
  309. data/lib/ddtrace/contrib/graphql/ext.rb +16 -0
  310. data/lib/ddtrace/contrib/graphql/integration.rb +39 -0
  311. data/lib/ddtrace/contrib/graphql/patcher.rb +37 -34
  312. data/lib/ddtrace/contrib/grpc/configuration/settings.rb +30 -0
  313. data/lib/ddtrace/contrib/grpc/datadog_interceptor.rb +36 -27
  314. data/lib/ddtrace/contrib/grpc/datadog_interceptor/client.rb +17 -8
  315. data/lib/ddtrace/contrib/grpc/datadog_interceptor/server.rb +20 -5
  316. data/lib/ddtrace/contrib/grpc/ext.rb +18 -0
  317. data/lib/ddtrace/contrib/grpc/integration.rb +38 -0
  318. data/lib/ddtrace/contrib/grpc/patcher.rb +8 -38
  319. data/lib/ddtrace/contrib/http/circuit_breaker.rb +37 -0
  320. data/lib/ddtrace/contrib/http/configuration/settings.rb +32 -0
  321. data/lib/ddtrace/contrib/http/ext.rb +17 -0
  322. data/lib/ddtrace/contrib/http/instrumentation.rb +179 -0
  323. data/lib/ddtrace/contrib/http/integration.rb +45 -0
  324. data/lib/ddtrace/contrib/http/patcher.rb +9 -144
  325. data/lib/ddtrace/contrib/http_annotation_helper.rb +10 -0
  326. data/lib/ddtrace/contrib/httpclient/configuration/settings.rb +32 -0
  327. data/lib/ddtrace/contrib/httpclient/ext.rb +17 -0
  328. data/lib/ddtrace/contrib/httpclient/instrumentation.rb +147 -0
  329. data/lib/ddtrace/contrib/httpclient/integration.rb +43 -0
  330. data/lib/ddtrace/contrib/httpclient/patcher.rb +38 -0
  331. data/lib/ddtrace/contrib/httprb/configuration/settings.rb +32 -0
  332. data/lib/ddtrace/contrib/httprb/ext.rb +17 -0
  333. data/lib/ddtrace/contrib/httprb/instrumentation.rb +157 -0
  334. data/lib/ddtrace/contrib/httprb/integration.rb +43 -0
  335. data/lib/ddtrace/contrib/httprb/patcher.rb +38 -0
  336. data/lib/ddtrace/contrib/integration.rb +16 -0
  337. data/lib/ddtrace/contrib/kafka/configuration/settings.rb +30 -0
  338. data/lib/ddtrace/contrib/kafka/consumer_event.rb +14 -0
  339. data/lib/ddtrace/contrib/kafka/consumer_group_event.rb +14 -0
  340. data/lib/ddtrace/contrib/kafka/event.rb +51 -0
  341. data/lib/ddtrace/contrib/kafka/events.rb +44 -0
  342. data/lib/ddtrace/contrib/kafka/events/connection/request.rb +34 -0
  343. data/lib/ddtrace/contrib/kafka/events/consumer/process_batch.rb +41 -0
  344. data/lib/ddtrace/contrib/kafka/events/consumer/process_message.rb +39 -0
  345. data/lib/ddtrace/contrib/kafka/events/consumer_group/heartbeat.rb +39 -0
  346. data/lib/ddtrace/contrib/kafka/events/consumer_group/join_group.rb +29 -0
  347. data/lib/ddtrace/contrib/kafka/events/consumer_group/leave_group.rb +29 -0
  348. data/lib/ddtrace/contrib/kafka/events/consumer_group/sync_group.rb +29 -0
  349. data/lib/ddtrace/contrib/kafka/events/produce_operation/send_messages.rb +32 -0
  350. data/lib/ddtrace/contrib/kafka/events/producer/deliver_messages.rb +35 -0
  351. data/lib/ddtrace/contrib/kafka/ext.rb +41 -0
  352. data/lib/ddtrace/contrib/kafka/integration.rb +39 -0
  353. data/lib/ddtrace/contrib/kafka/patcher.rb +26 -0
  354. data/lib/ddtrace/contrib/mongodb/configuration/settings.rb +33 -0
  355. data/lib/ddtrace/contrib/mongodb/ext.rb +23 -0
  356. data/lib/ddtrace/contrib/mongodb/instrumentation.rb +69 -0
  357. data/lib/ddtrace/contrib/mongodb/integration.rb +38 -0
  358. data/lib/ddtrace/contrib/mongodb/patcher.rb +11 -74
  359. data/lib/ddtrace/contrib/mongodb/subscribers.rb +57 -18
  360. data/lib/ddtrace/contrib/mysql2/configuration/settings.rb +30 -0
  361. data/lib/ddtrace/contrib/mysql2/ext.rb +18 -0
  362. data/lib/ddtrace/contrib/mysql2/instrumentation.rb +64 -0
  363. data/lib/ddtrace/contrib/mysql2/integration.rb +38 -0
  364. data/lib/ddtrace/contrib/mysql2/patcher.rb +9 -25
  365. data/lib/ddtrace/contrib/patchable.rb +70 -0
  366. data/lib/ddtrace/contrib/patcher.rb +65 -0
  367. data/lib/ddtrace/contrib/presto/configuration/settings.rb +30 -0
  368. data/lib/ddtrace/contrib/presto/ext.rb +28 -0
  369. data/lib/ddtrace/contrib/presto/instrumentation.rb +110 -0
  370. data/lib/ddtrace/contrib/presto/integration.rb +38 -0
  371. data/lib/ddtrace/contrib/presto/patcher.rb +33 -0
  372. data/lib/ddtrace/contrib/qless/configuration/settings.rb +35 -0
  373. data/lib/ddtrace/contrib/qless/ext.rb +20 -0
  374. data/lib/ddtrace/contrib/qless/integration.rb +38 -0
  375. data/lib/ddtrace/contrib/qless/patcher.rb +35 -0
  376. data/lib/ddtrace/contrib/qless/qless_job.rb +73 -0
  377. data/lib/ddtrace/contrib/qless/tracer_cleaner.rb +33 -0
  378. data/lib/ddtrace/contrib/que/configuration/settings.rb +43 -0
  379. data/lib/ddtrace/contrib/que/ext.rb +30 -0
  380. data/lib/ddtrace/contrib/que/integration.rb +42 -0
  381. data/lib/ddtrace/contrib/que/patcher.rb +24 -0
  382. data/lib/ddtrace/contrib/que/tracer.rb +57 -0
  383. data/lib/ddtrace/contrib/racecar/configuration/settings.rb +30 -0
  384. data/lib/ddtrace/contrib/racecar/event.rb +22 -7
  385. data/lib/ddtrace/contrib/racecar/events.rb +2 -0
  386. data/lib/ddtrace/contrib/racecar/events/batch.rb +2 -2
  387. data/lib/ddtrace/contrib/racecar/events/consume.rb +27 -0
  388. data/lib/ddtrace/contrib/racecar/events/message.rb +2 -2
  389. data/lib/ddtrace/contrib/racecar/ext.rb +25 -0
  390. data/lib/ddtrace/contrib/racecar/integration.rb +39 -0
  391. data/lib/ddtrace/contrib/racecar/patcher.rb +11 -42
  392. data/lib/ddtrace/contrib/rack/configuration/settings.rb +46 -0
  393. data/lib/ddtrace/contrib/rack/ext.rb +21 -0
  394. data/lib/ddtrace/contrib/rack/integration.rb +45 -0
  395. data/lib/ddtrace/contrib/rack/middlewares.rb +105 -54
  396. data/lib/ddtrace/contrib/rack/patcher.rb +65 -49
  397. data/lib/ddtrace/contrib/rack/request_queue.rb +17 -7
  398. data/lib/ddtrace/contrib/rails/auto_instrument_railtie.rb +10 -0
  399. data/lib/ddtrace/contrib/rails/configuration/settings.rb +93 -0
  400. data/lib/ddtrace/contrib/rails/ext.rb +17 -0
  401. data/lib/ddtrace/contrib/rails/framework.rb +82 -33
  402. data/lib/ddtrace/contrib/rails/integration.rb +44 -0
  403. data/lib/ddtrace/contrib/rails/log_injection.rb +81 -0
  404. data/lib/ddtrace/contrib/rails/middlewares.rb +8 -2
  405. data/lib/ddtrace/contrib/rails/patcher.rb +88 -34
  406. data/lib/ddtrace/contrib/rails/railtie.rb +5 -9
  407. data/lib/ddtrace/contrib/rails/utils.rb +7 -31
  408. data/lib/ddtrace/contrib/rake/configuration/settings.rb +31 -0
  409. data/lib/ddtrace/contrib/rake/ext.rb +21 -0
  410. data/lib/ddtrace/contrib/rake/instrumentation.rb +33 -13
  411. data/lib/ddtrace/contrib/rake/integration.rb +38 -0
  412. data/lib/ddtrace/contrib/rake/patcher.rb +10 -33
  413. data/lib/ddtrace/contrib/redis/configuration/resolver.rb +45 -0
  414. data/lib/ddtrace/contrib/redis/configuration/settings.rb +35 -0
  415. data/lib/ddtrace/contrib/redis/ext.rb +22 -0
  416. data/lib/ddtrace/contrib/redis/integration.rb +42 -0
  417. data/lib/ddtrace/contrib/redis/patcher.rb +58 -53
  418. data/lib/ddtrace/contrib/redis/quantize.rb +47 -1
  419. data/lib/ddtrace/contrib/redis/tags.rb +33 -7
  420. data/lib/ddtrace/contrib/redis/vendor/LICENSE +20 -0
  421. data/lib/ddtrace/contrib/redis/vendor/resolver.rb +158 -0
  422. data/lib/ddtrace/contrib/registerable.rb +33 -0
  423. data/lib/ddtrace/contrib/registry.rb +42 -0
  424. data/lib/ddtrace/contrib/resque/configuration/settings.rb +32 -0
  425. data/lib/ddtrace/contrib/resque/ext.rb +17 -0
  426. data/lib/ddtrace/contrib/resque/integration.rb +47 -0
  427. data/lib/ddtrace/contrib/resque/patcher.rb +16 -38
  428. data/lib/ddtrace/contrib/resque/resque_job.rb +61 -20
  429. data/lib/ddtrace/contrib/rest_client/configuration/settings.rb +31 -0
  430. data/lib/ddtrace/contrib/rest_client/ext.rb +17 -0
  431. data/lib/ddtrace/contrib/rest_client/integration.rb +38 -0
  432. data/lib/ddtrace/contrib/rest_client/patcher.rb +23 -0
  433. data/lib/ddtrace/contrib/rest_client/request_patch.rb +91 -0
  434. data/lib/ddtrace/contrib/rspec/configuration/settings.rb +28 -0
  435. data/lib/ddtrace/contrib/rspec/example.rb +75 -0
  436. data/lib/ddtrace/contrib/rspec/ext.rb +16 -0
  437. data/lib/ddtrace/contrib/rspec/integration.rb +46 -0
  438. data/lib/ddtrace/contrib/rspec/patcher.rb +23 -0
  439. data/lib/ddtrace/contrib/sequel/configuration/settings.rb +28 -0
  440. data/lib/ddtrace/contrib/sequel/database.rb +9 -4
  441. data/lib/ddtrace/contrib/sequel/dataset.rb +7 -3
  442. data/lib/ddtrace/contrib/sequel/ext.rb +19 -0
  443. data/lib/ddtrace/contrib/sequel/integration.rb +38 -0
  444. data/lib/ddtrace/contrib/sequel/patcher.rb +6 -29
  445. data/lib/ddtrace/contrib/sequel/utils.rb +60 -14
  446. data/lib/ddtrace/contrib/shoryuken/configuration/settings.rb +30 -0
  447. data/lib/ddtrace/contrib/shoryuken/ext.rb +21 -0
  448. data/lib/ddtrace/contrib/shoryuken/integration.rb +39 -0
  449. data/lib/ddtrace/contrib/shoryuken/patcher.rb +24 -0
  450. data/lib/ddtrace/contrib/shoryuken/tracer.rb +51 -0
  451. data/lib/ddtrace/contrib/sidekiq/client_tracer.rb +43 -0
  452. data/lib/ddtrace/contrib/sidekiq/configuration/settings.rb +37 -0
  453. data/lib/ddtrace/contrib/sidekiq/ext.rb +27 -0
  454. data/lib/ddtrace/contrib/sidekiq/integration.rb +38 -0
  455. data/lib/ddtrace/contrib/sidekiq/patcher.rb +22 -14
  456. data/lib/ddtrace/contrib/sidekiq/server_tracer.rb +65 -0
  457. data/lib/ddtrace/contrib/sidekiq/tracing.rb +44 -0
  458. data/lib/ddtrace/contrib/sinatra/configuration/settings.rb +39 -0
  459. data/lib/ddtrace/contrib/sinatra/env.rb +27 -9
  460. data/lib/ddtrace/contrib/sinatra/ext.rb +27 -0
  461. data/lib/ddtrace/contrib/sinatra/headers.rb +1 -3
  462. data/lib/ddtrace/contrib/sinatra/integration.rb +38 -0
  463. data/lib/ddtrace/contrib/sinatra/patcher.rb +28 -0
  464. data/lib/ddtrace/contrib/sinatra/tracer.rb +79 -65
  465. data/lib/ddtrace/contrib/sinatra/tracer_middleware.rb +60 -16
  466. data/lib/ddtrace/contrib/sneakers/configuration/settings.rb +33 -0
  467. data/lib/ddtrace/contrib/sneakers/ext.rb +22 -0
  468. data/lib/ddtrace/contrib/sneakers/integration.rb +41 -0
  469. data/lib/ddtrace/contrib/sneakers/patcher.rb +24 -0
  470. data/lib/ddtrace/contrib/sneakers/tracer.rb +53 -0
  471. data/lib/ddtrace/contrib/status_code_matcher.rb +69 -0
  472. data/lib/ddtrace/contrib/sucker_punch/configuration/settings.rb +30 -0
  473. data/lib/ddtrace/contrib/sucker_punch/ext.rb +21 -0
  474. data/lib/ddtrace/contrib/sucker_punch/instrumentation.rb +29 -5
  475. data/lib/ddtrace/contrib/sucker_punch/integration.rb +38 -0
  476. data/lib/ddtrace/contrib/sucker_punch/patcher.rb +21 -33
  477. data/lib/ddtrace/correlation.rb +39 -0
  478. data/lib/ddtrace/diagnostics/environment_logger.rb +279 -0
  479. data/lib/ddtrace/diagnostics/health.rb +33 -0
  480. data/lib/ddtrace/distributed_tracing/headers/b3.rb +44 -0
  481. data/lib/ddtrace/distributed_tracing/headers/b3_single.rb +56 -0
  482. data/lib/ddtrace/distributed_tracing/headers/datadog.rb +42 -0
  483. data/lib/ddtrace/distributed_tracing/headers/headers.rb +71 -0
  484. data/lib/ddtrace/distributed_tracing/headers/helpers.rb +43 -0
  485. data/lib/ddtrace/encoding.rb +36 -32
  486. data/lib/ddtrace/environment.rb +41 -0
  487. data/lib/ddtrace/event.rb +52 -0
  488. data/lib/ddtrace/ext/analytics.rb +12 -0
  489. data/lib/ddtrace/ext/app_types.rb +1 -0
  490. data/lib/ddtrace/ext/ci.rb +297 -0
  491. data/lib/ddtrace/ext/correlation.rb +11 -0
  492. data/lib/ddtrace/ext/diagnostics.rb +36 -0
  493. data/lib/ddtrace/ext/distributed.rb +22 -0
  494. data/lib/ddtrace/ext/environment.rb +16 -0
  495. data/lib/ddtrace/ext/forced_tracing.rb +25 -0
  496. data/lib/ddtrace/ext/git.rb +11 -0
  497. data/lib/ddtrace/ext/http.rb +4 -2
  498. data/lib/ddtrace/ext/integration.rb +8 -0
  499. data/lib/ddtrace/ext/manual_tracing.rb +9 -0
  500. data/lib/ddtrace/ext/metrics.rb +15 -0
  501. data/lib/ddtrace/ext/net.rb +2 -0
  502. data/lib/ddtrace/ext/runtime.rb +30 -0
  503. data/lib/ddtrace/ext/sampling.rb +16 -0
  504. data/lib/ddtrace/ext/test.rb +24 -0
  505. data/lib/ddtrace/ext/transport.rb +18 -0
  506. data/lib/ddtrace/forced_tracing.rb +38 -0
  507. data/lib/ddtrace/logger.rb +5 -4
  508. data/lib/ddtrace/metrics.rb +226 -0
  509. data/lib/ddtrace/opentelemetry/extensions.rb +13 -0
  510. data/lib/ddtrace/opentelemetry/span.rb +33 -0
  511. data/lib/ddtrace/opentracer.rb +40 -0
  512. data/lib/ddtrace/opentracer/binary_propagator.rb +24 -0
  513. data/lib/ddtrace/opentracer/carrier.rb +6 -0
  514. data/lib/ddtrace/opentracer/distributed_headers.rb +55 -0
  515. data/lib/ddtrace/opentracer/global_tracer.rb +15 -0
  516. data/lib/ddtrace/opentracer/propagator.rb +22 -0
  517. data/lib/ddtrace/opentracer/rack_propagator.rb +60 -0
  518. data/lib/ddtrace/opentracer/scope.rb +15 -0
  519. data/lib/ddtrace/opentracer/scope_manager.rb +6 -0
  520. data/lib/ddtrace/opentracer/span.rb +94 -0
  521. data/lib/ddtrace/opentracer/span_context.rb +14 -0
  522. data/lib/ddtrace/opentracer/span_context_factory.rb +23 -0
  523. data/lib/ddtrace/opentracer/text_map_propagator.rb +75 -0
  524. data/lib/ddtrace/opentracer/thread_local_scope.rb +31 -0
  525. data/lib/ddtrace/opentracer/thread_local_scope_manager.rb +40 -0
  526. data/lib/ddtrace/opentracer/tracer.rb +208 -0
  527. data/lib/ddtrace/patcher.rb +33 -5
  528. data/lib/ddtrace/pin.rb +35 -20
  529. data/lib/ddtrace/pipeline.rb +1 -1
  530. data/lib/ddtrace/pipeline/span_filter.rb +15 -15
  531. data/lib/ddtrace/propagation/grpc_propagator.rb +26 -6
  532. data/lib/ddtrace/propagation/http_propagator.rb +72 -10
  533. data/lib/ddtrace/quantization/http.rb +1 -0
  534. data/lib/ddtrace/runtime/cgroup.rb +44 -0
  535. data/lib/ddtrace/runtime/class_count.rb +17 -0
  536. data/lib/ddtrace/runtime/container.rb +71 -0
  537. data/lib/ddtrace/runtime/gc.rb +16 -0
  538. data/lib/ddtrace/runtime/identity.rb +48 -0
  539. data/lib/ddtrace/runtime/metrics.rb +114 -0
  540. data/lib/ddtrace/runtime/object_space.rb +19 -0
  541. data/lib/ddtrace/runtime/socket.rb +14 -0
  542. data/lib/ddtrace/runtime/thread_count.rb +16 -0
  543. data/lib/ddtrace/sampler.rb +218 -37
  544. data/lib/ddtrace/sampling.rb +2 -0
  545. data/lib/ddtrace/sampling/matcher.rb +57 -0
  546. data/lib/ddtrace/sampling/rate_limiter.rb +176 -0
  547. data/lib/ddtrace/sampling/rule.rb +61 -0
  548. data/lib/ddtrace/sampling/rule_sampler.rb +126 -0
  549. data/lib/ddtrace/span.rb +244 -34
  550. data/lib/ddtrace/sync_writer.rb +47 -16
  551. data/lib/ddtrace/tracer.rb +215 -117
  552. data/lib/ddtrace/transport/http.rb +113 -0
  553. data/lib/ddtrace/transport/http/adapters/net.rb +145 -0
  554. data/lib/ddtrace/transport/http/adapters/registry.rb +25 -0
  555. data/lib/ddtrace/transport/http/adapters/test.rb +83 -0
  556. data/lib/ddtrace/transport/http/adapters/unix_socket.rb +66 -0
  557. data/lib/ddtrace/transport/http/api.rb +46 -0
  558. data/lib/ddtrace/transport/http/api/endpoint.rb +27 -0
  559. data/lib/ddtrace/transport/http/api/fallbacks.rb +22 -0
  560. data/lib/ddtrace/transport/http/api/instance.rb +33 -0
  561. data/lib/ddtrace/transport/http/api/map.rb +14 -0
  562. data/lib/ddtrace/transport/http/api/spec.rb +15 -0
  563. data/lib/ddtrace/transport/http/builder.rb +169 -0
  564. data/lib/ddtrace/transport/http/client.rb +50 -0
  565. data/lib/ddtrace/transport/http/env.rb +56 -0
  566. data/lib/ddtrace/transport/http/response.rb +26 -0
  567. data/lib/ddtrace/transport/http/statistics.rb +43 -0
  568. data/lib/ddtrace/transport/http/traces.rb +142 -0
  569. data/lib/ddtrace/transport/io.rb +26 -0
  570. data/lib/ddtrace/transport/io/client.rb +76 -0
  571. data/lib/ddtrace/transport/io/response.rb +23 -0
  572. data/lib/ddtrace/transport/io/traces.rb +97 -0
  573. data/lib/ddtrace/transport/parcel.rb +13 -0
  574. data/lib/ddtrace/transport/request.rb +13 -0
  575. data/lib/ddtrace/transport/response.rb +60 -0
  576. data/lib/ddtrace/transport/statistics.rb +72 -0
  577. data/lib/ddtrace/transport/traces.rb +205 -0
  578. data/lib/ddtrace/utils.rb +17 -14
  579. data/lib/ddtrace/utils/compression.rb +27 -0
  580. data/lib/ddtrace/utils/database.rb +7 -3
  581. data/lib/ddtrace/utils/forking.rb +52 -0
  582. data/lib/ddtrace/utils/object_set.rb +41 -0
  583. data/lib/ddtrace/utils/only_once.rb +40 -0
  584. data/lib/ddtrace/utils/sequence.rb +17 -0
  585. data/lib/ddtrace/utils/string_table.rb +45 -0
  586. data/lib/ddtrace/utils/time.rb +45 -0
  587. data/lib/ddtrace/vendor/active_record/MIT-LICENSE +20 -0
  588. data/lib/ddtrace/vendor/active_record/connection_specification.rb +301 -0
  589. data/lib/ddtrace/vendor/multipart-post/LICENSE +11 -0
  590. data/lib/ddtrace/vendor/multipart-post/multipart.rb +12 -0
  591. data/lib/ddtrace/vendor/multipart-post/multipart/post.rb +8 -0
  592. data/lib/ddtrace/vendor/multipart-post/multipart/post/composite_read_io.rb +116 -0
  593. data/lib/ddtrace/vendor/multipart-post/multipart/post/multipartable.rb +57 -0
  594. data/lib/ddtrace/vendor/multipart-post/multipart/post/parts.rb +135 -0
  595. data/lib/ddtrace/vendor/multipart-post/multipart/post/version.rb +9 -0
  596. data/lib/ddtrace/vendor/multipart-post/net/http/post/multipart.rb +32 -0
  597. data/lib/ddtrace/version.rb +3 -1
  598. data/lib/ddtrace/worker.rb +20 -0
  599. data/lib/ddtrace/workers.rb +39 -40
  600. data/lib/ddtrace/workers/async.rb +173 -0
  601. data/lib/ddtrace/workers/loop.rb +119 -0
  602. data/lib/ddtrace/workers/polling.rb +49 -0
  603. data/lib/ddtrace/workers/queue.rb +40 -0
  604. data/lib/ddtrace/workers/runtime_metrics.rb +51 -0
  605. data/lib/ddtrace/workers/trace_writer.rb +202 -0
  606. data/lib/ddtrace/writer.rb +121 -57
  607. data/tasks/release_gem.rake +28 -0
  608. metadata +501 -211
  609. data/lib/ddtrace/configurable.rb +0 -83
  610. data/lib/ddtrace/configuration/proxy.rb +0 -25
  611. data/lib/ddtrace/contrib/base.rb +0 -15
  612. data/lib/ddtrace/contrib/mysql2/client.rb +0 -60
  613. data/lib/ddtrace/contrib/rails/action_controller.rb +0 -91
  614. data/lib/ddtrace/contrib/rails/action_controller_patch.rb +0 -77
  615. data/lib/ddtrace/contrib/rails/action_view.rb +0 -19
  616. data/lib/ddtrace/contrib/rails/active_support.rb +0 -65
  617. data/lib/ddtrace/contrib/rails/core_extensions.rb +0 -356
  618. data/lib/ddtrace/contrib/sidekiq/tracer.rb +0 -72
  619. data/lib/ddtrace/ext/cache.rb +0 -8
  620. data/lib/ddtrace/ext/grpc.rb +0 -7
  621. data/lib/ddtrace/ext/mongo.rb +0 -12
  622. data/lib/ddtrace/ext/redis.rb +0 -17
  623. data/lib/ddtrace/monkey.rb +0 -65
  624. data/lib/ddtrace/propagation/distributed_headers.rb +0 -48
  625. data/lib/ddtrace/provider.rb +0 -21
  626. data/lib/ddtrace/registry.rb +0 -42
  627. data/lib/ddtrace/registry/registerable.rb +0 -20
  628. data/lib/ddtrace/transport.rb +0 -212
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 8a89641ee85dac608c0c2a580dfd413c47505ffa
4
- data.tar.gz: 4cff7490665c4e954cb82466e0e77eacdf9bce99
3
+ metadata.gz: 9cf1ef2c94e28df64fe5d26a43c3cfb1c31cc9be
4
+ data.tar.gz: a7daf78f76f691e785946f0e3f2763b424cd6127
5
5
  SHA512:
6
- metadata.gz: 8580fbbf837c16cbbcfc4652bed1455796f4f710c47042c93f913eb5a1df9b95e7cf400f0fa15b573f9f9eb86468c37da73add7dc5cb00dfc41035f36a136772
7
- data.tar.gz: e0c4b207097f1efbee93a08150c5a2ed32a9352f8a82531f2d5432396fc698726909896250b1f0e01ee3786743832cd7fa092135bbf83f98eede9d515736546c
6
+ metadata.gz: 3d4f7408c4ef0b587c3a078cb29b5165a43cbb03bb204b72d04a989de1567cd0ff9ae8c7c0649f6269a531a4041c156970fc0470c7f124b208f7a98435c942e8
7
+ data.tar.gz: a8e0484124bc54ef8c69e3af13f6f06e8b0070223a6316922e38d2df2d97004d306f3d205babfdfe876dad6f76c69ccfba77ffc5de58c7bb6fc441856f85df60
data/.circleci/config.yml CHANGED
@@ -1,61 +1,84 @@
1
+ version: 2.1
2
+
1
3
  # Common variables, containers, jobs and steps.
2
4
  job_defaults: &job_defaults
5
+ # TODO: We should move away from using a directory
6
+ # TODO: that requires root permission to be created.
7
+ # TODO: Changing this requires rebuilding all docker images.
3
8
  working_directory: /app
4
9
  shell: /bin/bash --login
5
10
 
6
- ruby_containers: &ruby_containers
7
- - &container-1_9
8
- image: datadog/docker-library:ddtrace_rb_1_9_3
9
- environment:
10
- - BUNDLE_GEMFILE=/app/Gemfile
11
- - &container-2_0
12
- image: datadog/docker-library:ddtrace_rb_2_0_0
13
- environment:
14
- - BUNDLE_GEMFILE=/app/Gemfile
15
- - &container-2_1
16
- image: datadog/docker-library:ddtrace_rb_2_1_10
17
- environment:
18
- - BUNDLE_GEMFILE=/app/Gemfile
19
- - &container-2_2
20
- image: datadog/docker-library:ddtrace_rb_2_2_10
21
- environment:
22
- - BUNDLE_GEMFILE=/app/Gemfile
23
- - &container-2_3
24
- image: datadog/docker-library:ddtrace_rb_2_3_7
25
- environment:
26
- - BUNDLE_GEMFILE=/app/Gemfile
27
- - &container-2_4
28
- image: datadog/docker-library:ddtrace_rb_2_4_4
11
+ test_containers:
12
+ - &job_parameters
13
+ parameters:
14
+ ruby_version:
15
+ description: Ruby version
16
+ type: string
17
+ image:
18
+ description: Docker image location
19
+ type: string
20
+ jit:
21
+ description: Jit enabled?
22
+ type: boolean
23
+ default: false
24
+ resource_class_to_use:
25
+ description: Resource class to use
26
+ type: string
27
+ default: medium
28
+ - &container_base_environment
29
+ BUNDLE_GEMFILE: /app/Gemfile
30
+ JRUBY_OPTS: --dev # Faster JVM startup: https://github.com/jruby/jruby/wiki/Improving-startup-time#use-the---dev-flag
31
+ - &container_parameters_environment
32
+ - *container_base_environment
33
+ - RUBY_OPT: <<# parameters.jit >>--jit<</ parameters.jit >>
34
+ - TEST_DATADOG_INTEGRATION: 1
35
+ - COVERAGE_BASE_DIR: coverage
36
+ - &container_base
37
+ image: <<parameters.image>>
29
38
  environment:
30
- - BUNDLE_GEMFILE=/app/Gemfile
31
-
32
- test_containers: &test_containers
39
+ *container_parameters_environment
40
+ - &test_job_default
41
+ <<: *job_defaults
42
+ <<: *job_parameters
43
+ docker:
44
+ - *container_base
33
45
  - &container_postgres
34
46
  image: postgres:9.6
35
47
  environment:
36
48
  - POSTGRES_PASSWORD=postgres
37
49
  - POSTGRES_USER=postgres
38
50
  - POSTGRES_DB=postgres
51
+ - &postgres_port 5432
52
+ - &container_presto
53
+ # Move to trinodb/trino after https://github.com/treasure-data/presto-client-ruby/issues/64 is resolved.
54
+ image: starburstdata/presto:332-e.9
55
+ - &presto_port 8080
39
56
  - &container_mysql
40
57
  image: mysql:5.6
41
58
  environment:
42
59
  - MYSQL_ROOT_PASSWORD=root
43
60
  - MYSQL_PASSWORD=mysql
44
61
  - MYSQL_USER=mysql
62
+ - &mysql_port 3306
45
63
  - &container_elasticsearch
46
64
  image: elasticsearch:2.4
65
+ - &elasticsearch_port 9200
47
66
  - &container_redis
48
67
  image: redis:3.0
68
+ - &redis_port 6379
49
69
  - &container_mongo
50
70
  image: mongo:3.5
71
+ - &mongo_port 27017
51
72
  - &container_memcached
52
73
  image: memcached:1.5-alpine
74
+ - &memcached_port 11211
53
75
  - &container_agent
54
76
  image: datadog/docker-dd-agent
55
77
  environment:
56
78
  - DD_APM_ENABLED=true
57
79
  - DD_BIND_HOST=0.0.0.0
58
80
  - DD_API_KEY=invalid_key_but_this_is_fine
81
+ - &agent_port 8126
59
82
 
60
83
  step_init_bundle_checksum: &step_init_bundle_checksum
61
84
  run:
@@ -73,396 +96,590 @@ step_rubocop: &step_rubocop
73
96
  step_appraisal_install: &step_appraisal_install
74
97
  run:
75
98
  name: Install Appraisal gems
76
- command: bundle exec appraisal install
99
+ command: |
100
+ bundle exec appraisal clean # Ensure we fetch the latest version of dependencies
101
+ bundle exec appraisal install
77
102
  step_compute_bundle_checksum: &step_compute_bundle_checksum
78
103
  run:
79
104
  name: Compute bundle checksum
80
105
  command: |
106
+ # JRuby: Ensure files exist when Appraisal generates no output
107
+ mkdir gemfiles
108
+ touch gemfiles/_.gemfile.lock
81
109
  cat Gemfile.lock gemfiles/*.gemfile.lock > .circleci/bundle_checksum
82
110
  step_run_all_tests: &step_run_all_tests
83
111
  run:
84
112
  name: Run tests
85
- command: bundle exec rake ci
113
+ command: |
114
+ echo "
115
+ --format=progress
116
+ --format=RspecJunitFormatter
117
+ --out='/tmp/rspec/-<%= ARGV.join.gsub('/', '-') %>.xml'
118
+ " > .rspec-local # Configure RSpec metadata exporter
119
+ bundle exec rake ci
120
+ step_release_docs: &step_release_docs
121
+ run:
122
+ name: Upload release docs
123
+ command: S3_DIR=trace bundle exec rake release:docs
124
+
125
+ filters_all_branches_and_tags: &filters_all_branches_and_tags
126
+ filters:
127
+ tags:
128
+ only: /.*/
129
+ filters_only_release_tags: &filters_only_release_tags
130
+ filters:
131
+ branches:
132
+ ignore: /.*/
133
+ tags:
134
+ only: /^v\d+(\.\d+){0,3}(\.(alpha|beta|rc)\d+)?$/
135
+
136
+ orbs:
137
+ orb:
138
+ jobs:
139
+ build:
140
+ <<: *test_job_default
141
+ resource_class: <<parameters.resource_class_to_use>>
142
+ steps:
143
+ - checkout
144
+ - restore_cache:
145
+ keys:
146
+ - '{{ .Environment.CIRCLE_CACHE_VERSION }}-bundled-repo-<<parameters.ruby_version>>-{{ .Environment.CIRCLE_SHA1 }}'
147
+ - restore_cache:
148
+ keys:
149
+ - bundle-{{ .Environment.CIRCLE_CACHE_VERSION }}-<<parameters.ruby_version>>-{{ checksum "lib/ddtrace/version.rb" }}-{{ .Branch }}-{{ checksum "Gemfile" }}-{{ checksum "Appraisals" }}-{{ checksum "ddtrace.gemspec" }}
150
+ - bundle-{{ .Environment.CIRCLE_CACHE_VERSION }}-<<parameters.ruby_version>>-{{ checksum "lib/ddtrace/version.rb" }}-{{ .Branch }}-
151
+ - bundle-{{ .Environment.CIRCLE_CACHE_VERSION }}-<<parameters.ruby_version>>-{{ checksum "lib/ddtrace/version.rb" }}
152
+ - *step_init_bundle_checksum
153
+ - restore_cache:
154
+ keys:
155
+ - '{{ .Environment.CIRCLE_CACHE_VERSION }}-bundle-<<parameters.ruby_version>>-{{ checksum ".circleci/bundle_checksum" }}'
156
+ - *step_bundle_install
157
+ - *step_appraisal_install
158
+ - *step_compute_bundle_checksum
159
+ - save_cache:
160
+ key: '{{ .Environment.CIRCLE_CACHE_VERSION }}-bundled-repo-<<parameters.ruby_version>>-{{ .Environment.CIRCLE_SHA1 }}'
161
+ paths:
162
+ - /app
163
+ - save_cache:
164
+ key: '{{ .Environment.CIRCLE_CACHE_VERSION }}-bundle-<<parameters.ruby_version>>-{{ checksum ".circleci/bundle_checksum" }}'
165
+ paths:
166
+ - /usr/local/bundle
167
+ - save_cache:
168
+ key: bundle-{{ .Environment.CIRCLE_CACHE_VERSION }}-<<parameters.ruby_version>>-{{ checksum "lib/ddtrace/version.rb" }}-{{ .Branch }}-{{ checksum "Gemfile" }}-{{ checksum "Appraisals" }}-{{ checksum "ddtrace.gemspec" }}-{{ checksum ".circleci/bundle_checksum" }}'
169
+ paths:
170
+ - /usr/local/bundle
171
+ build_and_test_integration:
172
+ executor: docker-integration
173
+ parameters:
174
+ ruby_version:
175
+ description: Ruby version
176
+ type: string
177
+ integration_apps:
178
+ description: Integration apps
179
+ type: string
180
+ steps:
181
+ - checkout
182
+ - setup_remote_docker:
183
+ docker_layer_caching: true
184
+ - run:
185
+ name: Build integration base images
186
+ command: ./integration/script/build-images -v <<parameters.ruby_version>>
187
+ - run:
188
+ name: Build integration app images
189
+ command: |
190
+ for i in <<parameters.integration_apps>>; do
191
+ ./integration/apps/$i/script/build-images -v <<parameters.ruby_version>>
192
+ done
193
+ - run:
194
+ name: Test integration apps
195
+ command: |
196
+ for i in <<parameters.integration_apps>>; do
197
+ ./integration/apps/$i/script/ci -v <<parameters.ruby_version>>
198
+ done
199
+ test:
200
+ <<: *test_job_default
201
+ docker:
202
+ - <<: *container_base
203
+ - *container_postgres
204
+ - *container_presto
205
+ - *container_mysql
206
+ - *container_elasticsearch
207
+ - *container_redis
208
+ - *container_mongo
209
+ - *container_memcached
210
+ - *container_agent
211
+ parallelism: 22
212
+ steps:
213
+ - restore_cache:
214
+ keys:
215
+ - '{{ .Environment.CIRCLE_CACHE_VERSION }}-bundled-repo-<<parameters.ruby_version>>-{{ .Environment.CIRCLE_SHA1 }}'
216
+ - restore_cache:
217
+ keys:
218
+ - '{{ .Environment.CIRCLE_CACHE_VERSION }}-bundle-<<parameters.ruby_version>>-{{ checksum ".circleci/bundle_checksum" }}'
219
+ - run:
220
+ name: Set coverage report directory
221
+ command: |
222
+ # Create a unique coverage directory for this job, to avoid conflicts when merging all results
223
+ echo 'export COVERAGE_DIR="$COVERAGE_BASE_DIR/versions/$CIRCLE_JOB/$CIRCLE_NODE_INDEX"' >> $BASH_ENV
224
+ # Wait for containers to start
225
+ - docker-wait:
226
+ port: *postgres_port
227
+ - docker-wait:
228
+ port: *presto_port
229
+ - docker-wait:
230
+ port: *mysql_port
231
+ - docker-wait:
232
+ port: *elasticsearch_port
233
+ - docker-wait:
234
+ port: *redis_port
235
+ - docker-wait:
236
+ port: *mongo_port
237
+ - docker-wait:
238
+ port: *memcached_port
239
+ - docker-wait:
240
+ port: *agent_port
241
+ - *step_run_all_tests
242
+ - store_test_results:
243
+ path: /tmp/rspec
244
+ - persist_to_workspace:
245
+ root: .
246
+ paths:
247
+ - coverage
248
+ benchmark:
249
+ <<: *test_job_default
250
+ docker:
251
+ - <<: *container_base
252
+ - *container_postgres
253
+ - *container_redis
254
+ - *container_agent
255
+ steps:
256
+ - restore_cache:
257
+ keys:
258
+ - '{{ .Environment.CIRCLE_CACHE_VERSION }}-bundled-repo-<<parameters.ruby_version>>-{{ .Environment.CIRCLE_SHA1 }}'
259
+ - restore_cache:
260
+ keys:
261
+ - '{{ .Environment.CIRCLE_CACHE_VERSION }}-bundle-<<parameters.ruby_version>>-{{ checksum ".circleci/bundle_checksum" }}'
262
+ - run:
263
+ name: Run Benchmark
264
+ command: bundle exec appraisal rails5-postgres-sidekiq ruby benchmarks/sidekiq_test.rb 2>&1 1> /dev/null | tee benchmark_results.csv
265
+ - run:
266
+ name: Run Benchmark without ddtracer
267
+ command: rm -f lib/ddtrace.rb && bundle exec appraisal rails5-postgres-sidekiq ruby benchmarks/sidekiq_test.rb 2>&1 1> /dev/null | tee benchmark_results.csv
268
+ lint:
269
+ <<: *test_job_default
270
+ steps:
271
+ - restore_cache:
272
+ keys:
273
+ - '{{ .Environment.CIRCLE_CACHE_VERSION }}-bundled-repo-<<parameters.ruby_version>>-{{ .Environment.CIRCLE_SHA1 }}'
274
+ - restore_cache:
275
+ keys:
276
+ - '{{ .Environment.CIRCLE_CACHE_VERSION }}-bundle-<<parameters.ruby_version>>-{{ checksum ".circleci/bundle_checksum" }}'
277
+ - *step_rubocop
278
+ coverage:
279
+ <<: *test_job_default
280
+ steps:
281
+ - restore_cache:
282
+ keys:
283
+ - '{{ .Environment.CIRCLE_CACHE_VERSION }}-bundled-repo-<<parameters.ruby_version>>-{{ .Environment.CIRCLE_SHA1 }}'
284
+ - restore_cache:
285
+ keys:
286
+ - '{{ .Environment.CIRCLE_CACHE_VERSION }}-bundle-<<parameters.ruby_version>>-{{ checksum ".circleci/bundle_checksum" }}'
287
+ - attach_workspace:
288
+ at: /tmp/workspace
289
+ - run:
290
+ name: Install codecov
291
+ command: bundle add codecov
292
+ - run:
293
+ name: Generate coverage report artifact "coverage/index.html"
294
+ command: COVERAGE_DIR=/tmp/workspace/coverage bundle exec rake coverage:report
295
+ - run:
296
+ name: Generate coverage report artifact "coverage/versions/*/index.html"
297
+ command: COVERAGE_DIR=/tmp/workspace/coverage bundle exec rake coverage:report_per_ruby_version
298
+ - store_artifacts:
299
+ path: /tmp/workspace/coverage/report/
300
+ destination: coverage
301
+ changelog:
302
+ <<: *test_job_default
303
+ steps:
304
+ - restore_cache:
305
+ keys:
306
+ - '{{ .Environment.CIRCLE_CACHE_VERSION }}-bundled-repo-<<parameters.ruby_version>>-{{ .Environment.CIRCLE_SHA1 }}'
307
+ - restore_cache:
308
+ keys:
309
+ - '{{ .Environment.CIRCLE_CACHE_VERSION }}-bundle-<<parameters.ruby_version>>-{{ checksum ".circleci/bundle_checksum" }}'
310
+ - attach_workspace:
311
+ at: /tmp/workspace
312
+ - run:
313
+ name: Format changelog
314
+ command: bundle exec rake changelog:format
315
+ - run:
316
+ name: Check if changelog was unformatted
317
+ command: |
318
+ if ! git diff-files --quiet; then
319
+ echo "Please run 'bundle exec rake changelog:format' and commit the results."
320
+ fi
321
+ commands:
322
+ docker-wait:
323
+ description: Wait for containers to listen on a TCP port.
324
+ parameters:
325
+ port:
326
+ description: TCP port the container is listening on.
327
+ type: integer
328
+ timeout:
329
+ description: How long to wait for the port to be responsive.
330
+ type: string
331
+ default: 1m
332
+ steps:
333
+ - run:
334
+ name: Wait for container on port <<parameters.port>>
335
+ command: dockerize -wait 'tcp://localhost:<<parameters.port>>' -timeout '<<parameters.timeout>>'
336
+ executors:
337
+ docker-integration:
338
+ docker:
339
+ - image: circleci/buildpack-deps:stretch
86
340
 
87
- version: 2.0
88
341
  jobs:
89
- checkout-1.9:
90
- <<: *job_defaults
91
- docker:
92
- - *container-1_9
93
- steps:
94
- - checkout
95
- - save_cache:
96
- key: '{{ .Environment.CIRCLE_CACHE_VERSION }}-repo-1.9-{{ .Environment.CIRCLE_SHA1 }}'
97
- paths:
98
- - /app
99
- build-1.9:
100
- <<: *job_defaults
101
- docker:
102
- - *container-1_9
103
- steps:
104
- - restore_cache:
105
- keys:
106
- - '{{ .Environment.CIRCLE_CACHE_VERSION }}-bundled-repo-1.9-{{ .Environment.CIRCLE_SHA1 }}'
107
- - '{{ .Environment.CIRCLE_CACHE_VERSION }}-repo-1.9-{{ .Environment.CIRCLE_SHA1 }}'
108
- - *step_init_bundle_checksum
109
- - restore_cache:
110
- keys:
111
- - '{{ .Environment.CIRCLE_CACHE_VERSION }}-bundle-1.9-{{ checksum ".circleci/bundle_checksum" }}'
112
- - *step_bundle_install
113
- - *step_appraisal_install
114
- - *step_compute_bundle_checksum
115
- - save_cache:
116
- key: '{{ .Environment.CIRCLE_CACHE_VERSION }}-bundled-repo-1.9-{{ .Environment.CIRCLE_SHA1 }}'
117
- paths:
118
- - /app
119
- - save_cache:
120
- key: '{{ .Environment.CIRCLE_CACHE_VERSION }}-bundle-1.9-{{ checksum ".circleci/bundle_checksum" }}'
121
- paths:
122
- - /usr/local/bundle
123
- test-1.9:
124
- <<: *job_defaults
125
- docker:
126
- - <<: *container-1_9
127
- environment:
128
- - TEST_DATADOG_INTEGRATION: 1
129
- - *container_postgres
130
- - *container_mysql
131
- - *container_elasticsearch
132
- - *container_redis
133
- - *container_mongo
134
- - *container_memcached
135
- - *container_agent
136
- steps:
137
- - restore_cache:
138
- keys:
139
- - '{{ .Environment.CIRCLE_CACHE_VERSION }}-bundled-repo-1.9-{{ .Environment.CIRCLE_SHA1 }}'
140
- - restore_cache:
141
- keys:
142
- - '{{ .Environment.CIRCLE_CACHE_VERSION }}-bundle-1.9-{{ checksum ".circleci/bundle_checksum" }}'
143
- - *step_run_all_tests
144
- checkout-2.0:
145
- <<: *job_defaults
146
- docker:
147
- - *container-2_0
148
- steps:
149
- - checkout
150
- - save_cache:
151
- key: '{{ .Environment.CIRCLE_CACHE_VERSION }}-repo-2.0-{{ .Environment.CIRCLE_SHA1 }}'
152
- paths:
153
- - /app
154
- build-2.0:
155
- <<: *job_defaults
156
- docker:
157
- - *container-2_0
158
- steps:
159
- - restore_cache:
160
- keys:
161
- - '{{ .Environment.CIRCLE_CACHE_VERSION }}-bundled-repo-2.0-{{ .Environment.CIRCLE_SHA1 }}'
162
- - '{{ .Environment.CIRCLE_CACHE_VERSION }}-repo-2.0-{{ .Environment.CIRCLE_SHA1 }}'
163
- - *step_init_bundle_checksum
164
- - restore_cache:
165
- keys:
166
- - '{{ .Environment.CIRCLE_CACHE_VERSION }}-bundle-2.0-{{ checksum ".circleci/bundle_checksum" }}'
167
- - *step_bundle_install
168
- - *step_appraisal_install
169
- - *step_compute_bundle_checksum
170
- - save_cache:
171
- key: '{{ .Environment.CIRCLE_CACHE_VERSION }}-bundled-repo-2.0-{{ .Environment.CIRCLE_SHA1 }}'
172
- paths:
173
- - /app
174
- - save_cache:
175
- key: '{{ .Environment.CIRCLE_CACHE_VERSION }}-bundle-2.0-{{ checksum ".circleci/bundle_checksum" }}'
176
- paths:
177
- - /usr/local/bundle
178
- test-2.0:
179
- <<: *job_defaults
180
- docker:
181
- - <<: *container-2_0
182
- environment:
183
- - TEST_DATADOG_INTEGRATION: 1
184
- - *container_postgres
185
- - *container_mysql
186
- - *container_elasticsearch
187
- - *container_redis
188
- - *container_mongo
189
- - *container_memcached
190
- - *container_agent
191
- steps:
192
- - restore_cache:
193
- keys:
194
- - '{{ .Environment.CIRCLE_CACHE_VERSION }}-bundled-repo-2.0-{{ .Environment.CIRCLE_SHA1 }}'
195
- - restore_cache:
196
- keys:
197
- - '{{ .Environment.CIRCLE_CACHE_VERSION }}-bundle-2.0-{{ checksum ".circleci/bundle_checksum" }}'
198
- - *step_run_all_tests
199
- checkout-2.1:
200
- <<: *job_defaults
201
- docker:
202
- - *container-2_1
203
- steps:
204
- - checkout
205
- - save_cache:
206
- key: '{{ .Environment.CIRCLE_CACHE_VERSION }}-repo-2.1-{{ .Environment.CIRCLE_SHA1 }}'
207
- paths:
208
- - /app
209
- build-2.1:
210
- <<: *job_defaults
211
- docker:
212
- - *container-2_1
213
- steps:
214
- - restore_cache:
215
- keys:
216
- - '{{ .Environment.CIRCLE_CACHE_VERSION }}-bundled-repo-2.1-{{ .Environment.CIRCLE_SHA1 }}'
217
- - '{{ .Environment.CIRCLE_CACHE_VERSION }}-repo-2.1-{{ .Environment.CIRCLE_SHA1 }}'
218
- - *step_init_bundle_checksum
219
- - restore_cache:
220
- keys:
221
- - '{{ .Environment.CIRCLE_CACHE_VERSION }}-bundle-2.1-{{ checksum ".circleci/bundle_checksum" }}'
222
- - *step_bundle_install
223
- - *step_rubocop
224
- - *step_appraisal_install
225
- - *step_compute_bundle_checksum
226
- - save_cache:
227
- key: '{{ .Environment.CIRCLE_CACHE_VERSION }}-bundled-repo-2.1-{{ .Environment.CIRCLE_SHA1 }}'
228
- paths:
229
- - /app
230
- - save_cache:
231
- key: '{{ .Environment.CIRCLE_CACHE_VERSION }}-bundle-2.1-{{ checksum ".circleci/bundle_checksum" }}'
232
- paths:
233
- - /usr/local/bundle
234
- test-2.1:
235
- <<: *job_defaults
236
- docker:
237
- - <<: *container-2_1
238
- environment:
239
- - TEST_DATADOG_INTEGRATION: 1
240
- - *container_postgres
241
- - *container_mysql
242
- - *container_elasticsearch
243
- - *container_redis
244
- - *container_mongo
245
- - *container_memcached
246
- - *container_agent
247
- steps:
248
- - restore_cache:
249
- keys:
250
- - '{{ .Environment.CIRCLE_CACHE_VERSION }}-bundled-repo-2.1-{{ .Environment.CIRCLE_SHA1 }}'
251
- - restore_cache:
252
- keys:
253
- - '{{ .Environment.CIRCLE_CACHE_VERSION }}-bundle-2.1-{{ checksum ".circleci/bundle_checksum" }}'
254
- - *step_run_all_tests
255
- checkout-2.2:
342
+ "deploy release":
256
343
  <<: *job_defaults
257
344
  docker:
258
- - *container-2_2
345
+ - environment:
346
+ *container_base_environment
347
+ image: marcotc/docker-library:ddtrace_rb_2_5_6
259
348
  steps:
260
349
  - checkout
261
- - save_cache:
262
- key: '{{ .Environment.CIRCLE_CACHE_VERSION }}-repo-2.2-{{ .Environment.CIRCLE_SHA1 }}'
263
- paths:
264
- - /app
265
- build-2.2:
266
- <<: *job_defaults
267
- docker:
268
- - *container-2_2
269
- steps:
270
- - restore_cache:
271
- keys:
272
- - '{{ .Environment.CIRCLE_CACHE_VERSION }}-bundled-repo-2.2-{{ .Environment.CIRCLE_SHA1 }}'
273
- - '{{ .Environment.CIRCLE_CACHE_VERSION }}-repo-2.2-{{ .Environment.CIRCLE_SHA1 }}'
274
- - *step_init_bundle_checksum
275
- - restore_cache:
276
- keys:
277
- - '{{ .Environment.CIRCLE_CACHE_VERSION }}-bundle-2.2-{{ checksum ".circleci/bundle_checksum" }}'
350
+ - run:
351
+ name: Install AWS CLI
352
+ command: |
353
+ apt-get -y -qq update
354
+ apt-get -y -qq install awscli
278
355
  - *step_bundle_install
279
- - *step_rubocop
280
- - *step_appraisal_install
281
- - *step_compute_bundle_checksum
282
- - save_cache:
283
- key: '{{ .Environment.CIRCLE_CACHE_VERSION }}-bundled-repo-2.2-{{ .Environment.CIRCLE_SHA1 }}'
284
- paths:
285
- - /app
286
- - save_cache:
287
- key: '{{ .Environment.CIRCLE_CACHE_VERSION }}-bundle-2.2-{{ checksum ".circleci/bundle_checksum" }}'
288
- paths:
289
- - /usr/local/bundle
290
- test-2.2:
291
- <<: *job_defaults
292
- docker:
293
- - <<: *container-2_2
294
- environment:
295
- - TEST_DATADOG_INTEGRATION: 1
296
- - *container_postgres
297
- - *container_mysql
298
- - *container_elasticsearch
299
- - *container_redis
300
- - *container_mongo
301
- - *container_memcached
302
- - *container_agent
303
- steps:
304
- - restore_cache:
305
- keys:
306
- - '{{ .Environment.CIRCLE_CACHE_VERSION }}-bundled-repo-2.2-{{ .Environment.CIRCLE_SHA1 }}'
307
- - restore_cache:
308
- keys:
309
- - '{{ .Environment.CIRCLE_CACHE_VERSION }}-bundle-2.2-{{ checksum ".circleci/bundle_checksum" }}'
310
- - *step_run_all_tests
311
- checkout-2.3:
356
+ - *step_release_docs
357
+ - run:
358
+ name: Upload release Gem and rebuild index
359
+ command: S3_DIR=release bundle exec rake release:gem
360
+ - store_artifacts:
361
+ path: pkg/
362
+ destination: gem
363
+ "deploy prerelease Gem":
312
364
  <<: *job_defaults
313
365
  docker:
314
- - *container-2_3
366
+ - environment:
367
+ *container_base_environment
368
+ image: marcotc/docker-library:ddtrace_rb_2_5_6
315
369
  steps:
370
+ - run:
371
+ name: Check if this commit author has publishing credentials
372
+ command: |
373
+ if [[ -z "${AWS_ACCESS_KEY_ID}" ]]
374
+ then
375
+ echo 'No AWS credentials, skipping publish of pre-release build.'
376
+ circleci task halt
377
+ fi
316
378
  - checkout
317
- - save_cache:
318
- key: '{{ .Environment.CIRCLE_CACHE_VERSION }}-repo-2.3-{{ .Environment.CIRCLE_SHA1 }}'
319
- paths:
320
- - /app
321
- build-2.3:
322
- <<: *job_defaults
323
- docker:
324
- - *container-2_3
325
- steps:
326
- - restore_cache:
327
- keys:
328
- - '{{ .Environment.CIRCLE_CACHE_VERSION }}-bundled-repo-2.3-{{ .Environment.CIRCLE_SHA1 }}'
329
- - '{{ .Environment.CIRCLE_CACHE_VERSION }}-repo-2.3-{{ .Environment.CIRCLE_SHA1 }}'
330
- - *step_init_bundle_checksum
331
- - restore_cache:
332
- keys:
333
- - '{{ .Environment.CIRCLE_CACHE_VERSION }}-bundle-2.3-{{ checksum ".circleci/bundle_checksum" }}'
379
+ - run:
380
+ name: Install AWS CLI
381
+ command: |
382
+ apt-get -y -qq update
383
+ apt-get -y -qq install awscli
334
384
  - *step_bundle_install
335
- - *step_rubocop
336
- - *step_appraisal_install
337
- - *step_compute_bundle_checksum
338
- - save_cache:
339
- key: '{{ .Environment.CIRCLE_CACHE_VERSION }}-bundled-repo-2.3-{{ .Environment.CIRCLE_SHA1 }}'
340
- paths:
341
- - /app
342
- - save_cache:
343
- key: '{{ .Environment.CIRCLE_CACHE_VERSION }}-bundle-2.3-{{ checksum ".circleci/bundle_checksum" }}'
344
- paths:
345
- - /usr/local/bundle
346
- test-2.3:
347
- <<: *job_defaults
348
- docker:
349
- - <<: *container-2_3
350
- environment:
351
- - TEST_DATADOG_INTEGRATION: 1
352
- - *container_postgres
353
- - *container_mysql
354
- - *container_elasticsearch
355
- - *container_redis
356
- - *container_mongo
357
- - *container_memcached
358
- - *container_agent
359
- steps:
360
- - restore_cache:
361
- keys:
362
- - '{{ .Environment.CIRCLE_CACHE_VERSION }}-bundled-repo-2.3-{{ .Environment.CIRCLE_SHA1 }}'
363
- - restore_cache:
364
- keys:
365
- - '{{ .Environment.CIRCLE_CACHE_VERSION }}-bundle-2.3-{{ checksum ".circleci/bundle_checksum" }}'
366
- - *step_run_all_tests
367
- checkout-2.4:
368
- <<: *job_defaults
369
- docker:
370
- - *container-2_4
371
- steps:
372
- - checkout
373
- - save_cache:
374
- key: '{{ .Environment.CIRCLE_CACHE_VERSION }}-repo-2.4-{{ .Environment.CIRCLE_SHA1 }}'
375
- paths:
376
- - /app
377
- build-2.4:
378
- <<: *job_defaults
379
- docker:
380
- - *container-2_4
381
- steps:
382
- - restore_cache:
383
- keys:
384
- - '{{ .Environment.CIRCLE_CACHE_VERSION }}-bundled-repo-2.4-{{ .Environment.CIRCLE_SHA1 }}'
385
- - '{{ .Environment.CIRCLE_CACHE_VERSION }}-repo-2.4-{{ .Environment.CIRCLE_SHA1 }}'
386
- - *step_init_bundle_checksum
387
- - restore_cache:
388
- keys:
389
- - '{{ .Environment.CIRCLE_CACHE_VERSION }}-bundle-2.4-{{ checksum ".circleci/bundle_checksum" }}'
390
- - *step_bundle_install
391
- - *step_rubocop
392
- - *step_appraisal_install
393
- - *step_compute_bundle_checksum
394
- - save_cache:
395
- key: '{{ .Environment.CIRCLE_CACHE_VERSION }}-bundled-repo-2.4-{{ .Environment.CIRCLE_SHA1 }}'
396
- paths:
397
- - /app
398
- - save_cache:
399
- key: '{{ .Environment.CIRCLE_CACHE_VERSION }}-bundle-2.4-{{ checksum ".circleci/bundle_checksum" }}'
400
- paths:
401
- - /usr/local/bundle
402
- test-2.4:
403
- <<: *job_defaults
404
- docker:
405
- - <<: *container-2_4
406
- environment:
407
- - TEST_DATADOG_INTEGRATION: 1
408
- - *container_postgres
409
- - *container_mysql
410
- - *container_elasticsearch
411
- - *container_redis
412
- - *container_mongo
413
- - *container_memcached
414
- - *container_agent
415
- steps:
416
- - restore_cache:
417
- keys:
418
- - '{{ .Environment.CIRCLE_CACHE_VERSION }}-bundled-repo-2.4-{{ .Environment.CIRCLE_SHA1 }}'
419
- - restore_cache:
420
- keys:
421
- - '{{ .Environment.CIRCLE_CACHE_VERSION }}-bundle-2.4-{{ checksum ".circleci/bundle_checksum" }}'
422
- - *step_run_all_tests
385
+ - run:
386
+ name: Rename to pre-release version based on branch name and build number
387
+ command: |
388
+ # create safe version string
389
+ PRE=$(echo "${CIRCLE_BRANCH:-unknown}.${CIRCLE_BUILD_NUM:-R$RANDOM}" | sed -e 's/[^a-zA-Z0-9+]\{1,\}/./g')
390
+ echo PRE=$PRE
391
+ sed lib/ddtrace/version.rb -i -e "s/^\([\t ]*PRE\) *=*/\1 = \'${PRE}\' #/g"
392
+ - run:
393
+ name: Upload prereleas Gem and rebuild index
394
+ command: S3_DIR=prerelease bundle exec rake release:gem
395
+ - store_artifacts:
396
+ path: pkg/
397
+ destination: gem
398
+
399
+ job_configuration:
400
+ # MRI
401
+ - &config-2_0
402
+ <<: *filters_all_branches_and_tags
403
+ ruby_version: '2.0'
404
+ image: palazzem/docker-library:ddtrace_rb_2_0_0
405
+ - &config-2_1
406
+ <<: *filters_all_branches_and_tags
407
+ ruby_version: '2.1'
408
+ image: palazzem/docker-library:ddtrace_rb_2_1_10
409
+ - &config-2_2
410
+ <<: *filters_all_branches_and_tags
411
+ ruby_version: '2.2'
412
+ image: palazzem/docker-library:ddtrace_rb_2_2_10
413
+ - &config-2_3
414
+ <<: *filters_all_branches_and_tags
415
+ ruby_version: '2.3'
416
+ image: palazzem/docker-library:ddtrace_rb_2_3_8
417
+ - &config-2_4
418
+ <<: *filters_all_branches_and_tags
419
+ ruby_version: '2.4'
420
+ image: palazzem/docker-library:ddtrace_rb_2_4_6
421
+ - &config-2_5
422
+ <<: *filters_all_branches_and_tags
423
+ ruby_version: '2.5'
424
+ image: marcotc/docker-library:ddtrace_rb_2_5_6
425
+ - &config-2_6
426
+ <<: *filters_all_branches_and_tags
427
+ ruby_version: '2.6'
428
+ image: marcotc/docker-library:ddtrace_rb_2_6_4
429
+ - &config-2_7
430
+ <<: *filters_all_branches_and_tags
431
+ ruby_version: '2.7'
432
+ image: marcotc/docker-library:ddtrace_rb_2_7_0
433
+ - &config-3_0
434
+ <<: *filters_all_branches_and_tags
435
+ ruby_version: '3.0'
436
+ image: marcotc/docker-library:ddtrace_rb_3.0.0
437
+ - &config-3_0-jit
438
+ <<: *filters_all_branches_and_tags
439
+ ruby_version: '3.0'
440
+ image: marcotc/docker-library:ddtrace_rb_3.0.0
441
+ jit: true
442
+ # JRuby
443
+ - &config-jruby-9_2_0_0 # Oldest supported version
444
+ <<: *filters_all_branches_and_tags
445
+ ruby_version: 'jruby-9.2.0.0'
446
+ image: marcotc/docker-library:ddtrace_rb_jruby_9_2_0_0
447
+ - &config-jruby-9_2-latest # More recent release of 9.2
448
+ <<: *filters_all_branches_and_tags
449
+ ruby_version: 'jruby-9.2-latest'
450
+ image: marcotc/docker-library:ddtrace_rb_jruby_9_2_11_1
451
+ # TruffleRuby
452
+ - &config-truffleruby-21_0_0
453
+ <<: *filters_all_branches_and_tags
454
+ ruby_version: 'truffleruby-21.0.0'
455
+ image: ivoanjo/docker-library:ddtrace_rb_truffleruby_21_0_0
456
+ resource_class_to_use: large
457
+
423
458
  workflows:
424
459
  version: 2
425
460
  build-and-test:
426
461
  jobs:
427
- - checkout-1.9
428
- - build-1.9:
462
+ - orb/lint:
463
+ <<: *config-2_6
464
+ name: lint
429
465
  requires:
430
- - checkout-1.9
431
- - test-1.9:
466
+ - build-2.6
467
+ - orb/coverage:
468
+ <<: *config-2_7
469
+ name: coverage
432
470
  requires:
433
- - build-1.9
434
- - checkout-2.0
435
- - build-2.0:
471
+ - test-2.0
472
+ - test-2.1
473
+ - test-2.2
474
+ - test-2.3
475
+ - test-2.4
476
+ - test-2.5
477
+ - test-2.6
478
+ - test-2.7
479
+ - test-3.0
480
+ - test-jruby-9.2.0.0
481
+ - test-jruby-9.2-latest
482
+ # soon™️ - test-truffleruby-21.0.0
483
+ - orb/changelog:
484
+ <<: *config-2_7
485
+ name: changelog
436
486
  requires:
437
- - checkout-2.0
438
- - test-2.0:
487
+ - build-2.7
488
+ filters:
489
+ branches:
490
+ only: /bump_to_version_.*/
491
+ # Integration
492
+ - orb/build_and_test_integration:
493
+ name: build_and_test_integration-2.0
494
+ integration_apps: 'ruby rack'
495
+ ruby_version: '2.0'
496
+ <<: *filters_all_branches_and_tags
497
+ - orb/build_and_test_integration:
498
+ name: build_and_test_integration-2.1
499
+ integration_apps: 'ruby rack'
500
+ ruby_version: '2.1'
501
+ <<: *filters_all_branches_and_tags
502
+ - orb/build_and_test_integration:
503
+ name: build_and_test_integration-2.2
504
+ integration_apps: 'ruby rack'
505
+ ruby_version: '2.2'
506
+ <<: *filters_all_branches_and_tags
507
+ - orb/build_and_test_integration:
508
+ name: build_and_test_integration-2.3
509
+ integration_apps: 'ruby rack rails-five'
510
+ ruby_version: '2.3'
511
+ <<: *filters_all_branches_and_tags
512
+ - orb/build_and_test_integration:
513
+ name: build_and_test_integration-2.4
514
+ integration_apps: 'ruby rack rails-five'
515
+ ruby_version: '2.4'
516
+ <<: *filters_all_branches_and_tags
517
+ - orb/build_and_test_integration:
518
+ name: build_and_test_integration-2.5
519
+ integration_apps: 'ruby rack rails-five'
520
+ ruby_version: '2.5'
521
+ <<: *filters_all_branches_and_tags
522
+ - orb/build_and_test_integration:
523
+ name: build_and_test_integration-2.6
524
+ integration_apps: 'ruby rack rails-five'
525
+ ruby_version: '2.6'
526
+ <<: *filters_all_branches_and_tags
527
+ - orb/build_and_test_integration:
528
+ name: build_and_test_integration-2.7
529
+ integration_apps: 'ruby rack rails-five'
530
+ ruby_version: '2.7'
531
+ <<: *filters_all_branches_and_tags
532
+ - orb/build_and_test_integration:
533
+ name: build_and_test_integration-3.0
534
+ # TODO: Get Rack & Rails apps working with Ruby 3.0
535
+ integration_apps: 'ruby'
536
+ ruby_version: '3.0'
537
+ <<: *filters_all_branches_and_tags
538
+ # MRI
539
+ - orb/build:
540
+ <<: *config-2_0
541
+ name: build-2.0
542
+ - orb/test:
543
+ <<: *config-2_0
544
+ name: test-2.0
439
545
  requires:
440
546
  - build-2.0
441
- - checkout-2.1
442
- - build-2.1:
443
- requires:
444
- - checkout-2.1
445
- - test-2.1:
547
+ - orb/build:
548
+ <<: *config-2_1
549
+ name: build-2.1
550
+ - orb/test:
551
+ <<: *config-2_1
552
+ name: test-2.1
446
553
  requires:
447
554
  - build-2.1
448
- - checkout-2.2
449
- - build-2.2:
450
- requires:
451
- - checkout-2.2
452
- - test-2.2:
555
+ - orb/build:
556
+ <<: *config-2_2
557
+ name: build-2.2
558
+ - orb/test:
559
+ <<: *config-2_2
560
+ name: test-2.2
453
561
  requires:
454
562
  - build-2.2
455
- - checkout-2.3
456
- - build-2.3:
457
- requires:
458
- - checkout-2.3
459
- - test-2.3:
563
+ - orb/build:
564
+ <<: *config-2_3
565
+ name: build-2.3
566
+ - orb/test:
567
+ <<: *config-2_3
568
+ name: test-2.3
460
569
  requires:
461
570
  - build-2.3
462
- - checkout-2.4
463
- - build-2.4:
571
+ - orb/benchmark:
572
+ <<: *config-2_3
573
+ name: benchmark-2.3
464
574
  requires:
465
- - checkout-2.4
466
- - test-2.4:
575
+ - build-2.3
576
+ - orb/build:
577
+ <<: *config-2_4
578
+ name: build-2.4
579
+ - orb/test:
580
+ <<: *config-2_4
581
+ name: test-2.4
467
582
  requires:
468
583
  - build-2.4
584
+ - orb/build:
585
+ <<: *config-2_5
586
+ name: build-2.5
587
+ - orb/test:
588
+ <<: *config-2_5
589
+ name: test-2.5
590
+ requires:
591
+ - build-2.5
592
+ - orb/build:
593
+ <<: *config-2_6
594
+ name: build-2.6
595
+ - orb/test:
596
+ <<: *config-2_6
597
+ name: test-2.6
598
+ requires:
599
+ - build-2.6
600
+ - orb/build:
601
+ <<: *config-2_7
602
+ name: build-2.7
603
+ - orb/test:
604
+ <<: *config-2_7
605
+ name: test-2.7
606
+ requires:
607
+ - build-2.7
608
+ - orb/build:
609
+ <<: *config-3_0
610
+ name: build-3.0
611
+ - orb/test:
612
+ <<: *config-3_0
613
+ name: test-3.0
614
+ requires:
615
+ - build-3.0
616
+ - orb/build:
617
+ <<: *config-3_0-jit
618
+ name: build-3.0-jit
619
+ - orb/test:
620
+ <<: *config-3_0-jit
621
+ name: test-3.0-jit
622
+ requires:
623
+ - build-3.0-jit
624
+ # JRuby
625
+ - orb/build:
626
+ <<: *config-jruby-9_2_0_0
627
+ name: build-jruby-9.2.0.0
628
+ - orb/test:
629
+ <<: *config-jruby-9_2_0_0
630
+ name: test-jruby-9.2.0.0
631
+ requires:
632
+ - build-jruby-9.2.0.0
633
+ - orb/build:
634
+ <<: *config-jruby-9_2-latest
635
+ name: build-jruby-9.2-latest
636
+ - orb/test:
637
+ <<: *config-jruby-9_2-latest
638
+ name: test-jruby-9.2-latest
639
+ requires:
640
+ - build-jruby-9.2-latest
641
+ # TruffleRuby
642
+ # soon™️
643
+ # - orb/build:
644
+ # <<: *config-truffleruby-21_0_0
645
+ # name: build-truffleruby-21.0.0
646
+ # - orb/test:
647
+ # <<: *config-truffleruby-21_0_0
648
+ # name: test-truffleruby-21.0.0
649
+ # requires:
650
+ # - build-truffleruby-21.0.0
651
+ # Release jobs
652
+ - "deploy prerelease Gem":
653
+ <<: *filters_all_branches_and_tags
654
+ requires:
655
+ - lint
656
+ - test-2.0
657
+ - test-2.1
658
+ - test-2.2
659
+ - test-2.3
660
+ - test-2.4
661
+ - test-2.5
662
+ - test-2.6
663
+ - test-2.7
664
+ - test-3.0
665
+ - test-3.0-jit
666
+ - test-jruby-9.2.0.0
667
+ - test-jruby-9.2-latest
668
+ # soon™️ - test-truffleruby-21.0.0
669
+ - "deploy release":
670
+ <<: *filters_only_release_tags
671
+ requires:
672
+ - lint
673
+ - test-2.0
674
+ - test-2.1
675
+ - test-2.2
676
+ - test-2.3
677
+ - test-2.4
678
+ - test-2.5
679
+ - test-2.6
680
+ - test-2.7
681
+ - test-3.0
682
+ - test-3.0-jit
683
+ - test-jruby-9.2.0.0
684
+ - test-jruby-9.2-latest
685
+ # soon™️ - test-truffleruby-21.0.0