ddtrace 0.43.0 → 0.48.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 (400) hide show
  1. checksums.yaml +5 -5
  2. data/.circleci/config.yml +278 -139
  3. data/.circleci/images/primary/Dockerfile-2.0.0 +11 -1
  4. data/.circleci/images/primary/Dockerfile-2.1.10 +11 -1
  5. data/.circleci/images/primary/Dockerfile-2.2.10 +11 -1
  6. data/.circleci/images/primary/Dockerfile-2.3.8 +10 -0
  7. data/.circleci/images/primary/Dockerfile-2.4.6 +10 -0
  8. data/.circleci/images/primary/Dockerfile-2.5.6 +10 -0
  9. data/.circleci/images/primary/Dockerfile-2.6.4 +10 -0
  10. data/.circleci/images/primary/Dockerfile-2.7.0 +10 -0
  11. data/.circleci/images/primary/Dockerfile-3.0.0 +73 -0
  12. data/.circleci/images/primary/Dockerfile-jruby-9.2-latest +88 -0
  13. data/.circleci/images/primary/{Dockerfile-jruby-9.2 → Dockerfile-jruby-9.2.0.0} +1 -5
  14. data/.circleci/images/primary/Dockerfile-truffleruby-21.0.0 +73 -0
  15. data/.github/workflows/add-milestone-to-pull-requests.yml +1 -1
  16. data/.github/workflows/create-next-milestone.yml +2 -2
  17. data/.gitlab-ci.yml +18 -18
  18. data/.rubocop.yml +269 -7
  19. data/.rubocop_todo.yml +438 -0
  20. data/.simplecov +10 -1
  21. data/Appraisals +285 -15
  22. data/CHANGELOG.md +1243 -377
  23. data/Gemfile +65 -3
  24. data/LICENSE-3rdparty.csv +2 -0
  25. data/README.md +1 -0
  26. data/Rakefile +186 -29
  27. data/bin/ddtracerb +15 -0
  28. data/ddtrace.gemspec +7 -37
  29. data/docker-compose.yml +105 -7
  30. data/docs/DevelopmentGuide.md +28 -0
  31. data/docs/GettingStarted.md +208 -75
  32. data/docs/ProfilingDevelopment.md +88 -0
  33. data/integration/README.md +67 -0
  34. data/integration/apps/rack/.dockerignore +1 -0
  35. data/integration/apps/rack/.envrc.sample +1 -0
  36. data/integration/apps/rack/.gitignore +4 -0
  37. data/integration/apps/rack/.rspec +1 -0
  38. data/integration/apps/rack/Dockerfile +28 -0
  39. data/integration/apps/rack/Dockerfile-ci +11 -0
  40. data/integration/apps/rack/Gemfile +24 -0
  41. data/integration/apps/rack/README.md +93 -0
  42. data/integration/apps/rack/app/acme.rb +80 -0
  43. data/integration/apps/rack/app/datadog.rb +17 -0
  44. data/integration/apps/rack/bin/run +22 -0
  45. data/integration/apps/rack/bin/setup +17 -0
  46. data/integration/apps/rack/bin/test +24 -0
  47. data/integration/apps/rack/config.ru +6 -0
  48. data/integration/apps/rack/config/puma.rb +14 -0
  49. data/integration/apps/rack/config/unicorn.rb +23 -0
  50. data/integration/apps/rack/docker-compose.ci.yml +62 -0
  51. data/integration/apps/rack/docker-compose.yml +78 -0
  52. data/integration/apps/rack/script/build-images +38 -0
  53. data/integration/apps/rack/script/ci +50 -0
  54. data/integration/apps/rack/spec/integration/basic_spec.rb +10 -0
  55. data/integration/apps/rack/spec/spec_helper.rb +16 -0
  56. data/integration/apps/rack/spec/support/integration_helper.rb +22 -0
  57. data/integration/apps/rails-five/.dockerignore +1 -0
  58. data/integration/apps/rails-five/.env +3 -0
  59. data/integration/apps/rails-five/.envrc.sample +1 -0
  60. data/integration/apps/rails-five/.gitignore +30 -0
  61. data/integration/apps/rails-five/Dockerfile +25 -0
  62. data/integration/apps/rails-five/Dockerfile-ci +11 -0
  63. data/integration/apps/rails-five/Gemfile +104 -0
  64. data/integration/apps/rails-five/README.md +94 -0
  65. data/integration/apps/rails-five/Rakefile +6 -0
  66. data/integration/apps/rails-five/app/channels/application_cable/channel.rb +4 -0
  67. data/integration/apps/rails-five/app/channels/application_cable/connection.rb +4 -0
  68. data/integration/apps/rails-five/app/controllers/application_controller.rb +2 -0
  69. data/integration/apps/rails-five/app/controllers/basic_controller.rb +36 -0
  70. data/integration/apps/rails-five/app/controllers/concerns/.keep +0 -0
  71. data/integration/apps/rails-five/app/controllers/health_controller.rb +9 -0
  72. data/integration/apps/rails-five/app/controllers/jobs_controller.rb +12 -0
  73. data/integration/apps/rails-five/app/jobs/application_job.rb +2 -0
  74. data/integration/apps/rails-five/app/jobs/test_job.rb +12 -0
  75. data/integration/apps/rails-five/app/mailers/application_mailer.rb +4 -0
  76. data/integration/apps/rails-five/app/models/application_record.rb +3 -0
  77. data/integration/apps/rails-five/app/models/concerns/.keep +0 -0
  78. data/integration/apps/rails-five/app/models/test.rb +2 -0
  79. data/integration/apps/rails-five/app/views/layouts/mailer.html.erb +13 -0
  80. data/integration/apps/rails-five/app/views/layouts/mailer.text.erb +1 -0
  81. data/integration/apps/rails-five/bin/bundle +3 -0
  82. data/integration/apps/rails-five/bin/rails +9 -0
  83. data/integration/apps/rails-five/bin/rake +9 -0
  84. data/integration/apps/rails-five/bin/run +24 -0
  85. data/integration/apps/rails-five/bin/setup +27 -0
  86. data/integration/apps/rails-five/bin/spring +17 -0
  87. data/integration/apps/rails-five/bin/test +21 -0
  88. data/integration/apps/rails-five/bin/update +28 -0
  89. data/integration/apps/rails-five/config.ru +5 -0
  90. data/integration/apps/rails-five/config/application.rb +97 -0
  91. data/integration/apps/rails-five/config/boot.rb +4 -0
  92. data/integration/apps/rails-five/config/cable.yml +10 -0
  93. data/integration/apps/rails-five/config/credentials.yml.enc +1 -0
  94. data/integration/apps/rails-five/config/database.yml +28 -0
  95. data/integration/apps/rails-five/config/environment.rb +5 -0
  96. data/integration/apps/rails-five/config/environments/development.rb +51 -0
  97. data/integration/apps/rails-five/config/environments/production.rb +82 -0
  98. data/integration/apps/rails-five/config/environments/test.rb +43 -0
  99. data/integration/apps/rails-five/config/initializers/datadog.rb +18 -0
  100. data/integration/apps/rails-five/config/initializers/filter_parameter_logging.rb +4 -0
  101. data/integration/apps/rails-five/config/initializers/resque.rb +4 -0
  102. data/integration/apps/rails-five/config/initializers/rollbar.rb +5 -0
  103. data/integration/apps/rails-five/config/initializers/wrap_parameters.rb +14 -0
  104. data/integration/apps/rails-five/config/locales/en.yml +33 -0
  105. data/integration/apps/rails-five/config/puma.rb +24 -0
  106. data/integration/apps/rails-five/config/routes.rb +11 -0
  107. data/integration/apps/rails-five/config/spring.rb +6 -0
  108. data/integration/apps/rails-five/config/unicorn.rb +29 -0
  109. data/integration/apps/rails-five/db/migrate/20190927215052_create_tests.rb +11 -0
  110. data/integration/apps/rails-five/db/schema.rb +23 -0
  111. data/integration/apps/rails-five/db/seeds.rb +7 -0
  112. data/integration/apps/rails-five/docker-compose.ci.yml +98 -0
  113. data/integration/apps/rails-five/docker-compose.yml +100 -0
  114. data/integration/apps/rails-five/lib/tasks/.keep +0 -0
  115. data/integration/apps/rails-five/log/.keep +0 -0
  116. data/integration/apps/rails-five/public/robots.txt +1 -0
  117. data/integration/apps/rails-five/script/build-images +35 -0
  118. data/integration/apps/rails-five/script/ci +50 -0
  119. data/integration/apps/rails-five/spec/integration/basic_spec.rb +10 -0
  120. data/integration/apps/rails-five/spec/spec_helper.rb +16 -0
  121. data/integration/apps/rails-five/spec/support/integration_helper.rb +22 -0
  122. data/integration/apps/rails-five/storage/.keep +0 -0
  123. data/integration/apps/rails-five/tmp/.keep +0 -0
  124. data/integration/apps/rails-five/vendor/.keep +0 -0
  125. data/integration/apps/ruby/.dockerignore +1 -0
  126. data/integration/apps/ruby/.envrc.sample +1 -0
  127. data/integration/apps/ruby/.gitignore +2 -0
  128. data/integration/apps/ruby/Dockerfile +25 -0
  129. data/integration/apps/ruby/Dockerfile-ci +11 -0
  130. data/integration/apps/ruby/Gemfile +11 -0
  131. data/integration/apps/ruby/README.md +70 -0
  132. data/integration/apps/ruby/agent.yaml +3 -0
  133. data/integration/apps/ruby/app/datadog.rb +13 -0
  134. data/integration/apps/ruby/app/fibonacci.rb +58 -0
  135. data/integration/apps/ruby/bin/run +20 -0
  136. data/integration/apps/ruby/bin/setup +17 -0
  137. data/integration/apps/ruby/bin/test +21 -0
  138. data/integration/apps/ruby/docker-compose.ci.yml +51 -0
  139. data/integration/apps/ruby/docker-compose.yml +63 -0
  140. data/integration/apps/ruby/script/build-images +38 -0
  141. data/integration/apps/ruby/script/ci +50 -0
  142. data/integration/images/agent/Dockerfile +2 -0
  143. data/integration/images/agent/agent.yaml +3 -0
  144. data/integration/images/include/datadog/analyzer.rb +71 -0
  145. data/integration/images/include/datadog/demo_env.rb +101 -0
  146. data/integration/images/include/http-health-check +33 -0
  147. data/integration/images/ruby/2.0/Dockerfile +54 -0
  148. data/integration/images/ruby/2.1/Dockerfile +54 -0
  149. data/integration/images/ruby/2.2/Dockerfile +54 -0
  150. data/integration/images/ruby/2.3/Dockerfile +70 -0
  151. data/integration/images/ruby/2.4/Dockerfile +54 -0
  152. data/integration/images/ruby/2.5/Dockerfile +54 -0
  153. data/integration/images/ruby/2.6/Dockerfile +54 -0
  154. data/integration/images/ruby/2.7/Dockerfile +54 -0
  155. data/integration/images/ruby/3.0/Dockerfile +54 -0
  156. data/integration/images/wrk/Dockerfile +33 -0
  157. data/integration/images/wrk/scripts/entrypoint.sh +17 -0
  158. data/integration/images/wrk/scripts/scenarios/basic/default.lua +1 -0
  159. data/integration/images/wrk/scripts/scenarios/basic/fibonacci.lua +1 -0
  160. data/integration/script/build-images +43 -0
  161. data/lib/ddtrace.rb +9 -5
  162. data/lib/ddtrace/analytics.rb +2 -0
  163. data/lib/ddtrace/auto_instrument.rb +3 -0
  164. data/lib/ddtrace/auto_instrument_base.rb +6 -0
  165. data/lib/ddtrace/buffer.rb +4 -4
  166. data/lib/ddtrace/configuration.rb +121 -26
  167. data/lib/ddtrace/configuration/base.rb +1 -1
  168. data/lib/ddtrace/configuration/components.rb +87 -5
  169. data/lib/ddtrace/configuration/option_definition.rb +1 -3
  170. data/lib/ddtrace/configuration/options.rb +4 -7
  171. data/lib/ddtrace/configuration/settings.rb +48 -3
  172. data/lib/ddtrace/context.rb +5 -6
  173. data/lib/ddtrace/context_provider.rb +0 -1
  174. data/lib/ddtrace/contrib/action_cable/event.rb +1 -0
  175. data/lib/ddtrace/contrib/action_cable/integration.rb +7 -0
  176. data/lib/ddtrace/contrib/action_pack/action_controller/instrumentation.rb +1 -3
  177. data/lib/ddtrace/contrib/action_pack/integration.rb +7 -0
  178. data/lib/ddtrace/contrib/action_view/event.rb +1 -5
  179. data/lib/ddtrace/contrib/action_view/events/render_partial.rb +1 -0
  180. data/lib/ddtrace/contrib/action_view/events/render_template.rb +1 -0
  181. data/lib/ddtrace/contrib/action_view/integration.rb +7 -0
  182. data/lib/ddtrace/contrib/action_view/utils.rb +1 -1
  183. data/lib/ddtrace/contrib/active_record/configuration/makara_resolver.rb +30 -0
  184. data/lib/ddtrace/contrib/active_record/configuration/resolver.rb +107 -18
  185. data/lib/ddtrace/contrib/active_record/integration.rb +7 -0
  186. data/lib/ddtrace/contrib/active_record/utils.rb +68 -21
  187. data/lib/ddtrace/contrib/active_support/integration.rb +7 -1
  188. data/lib/ddtrace/contrib/active_support/notifications/event.rb +2 -1
  189. data/lib/ddtrace/contrib/active_support/notifications/subscriber.rb +1 -0
  190. data/lib/ddtrace/contrib/active_support/notifications/subscription.rb +9 -5
  191. data/lib/ddtrace/contrib/auto_instrument.rb +49 -0
  192. data/lib/ddtrace/contrib/aws/patcher.rb +1 -0
  193. data/lib/ddtrace/contrib/aws/services.rb +3 -0
  194. data/lib/ddtrace/contrib/configurable.rb +63 -39
  195. data/lib/ddtrace/contrib/configuration/resolver.rb +70 -5
  196. data/lib/ddtrace/contrib/configuration/resolvers/pattern_resolver.rb +20 -19
  197. data/lib/ddtrace/contrib/configuration/settings.rb +7 -6
  198. data/lib/ddtrace/contrib/cucumber/configuration/settings.rb +0 -10
  199. data/lib/ddtrace/contrib/cucumber/ext.rb +0 -2
  200. data/lib/ddtrace/contrib/cucumber/formatter.rb +5 -11
  201. data/lib/ddtrace/contrib/cucumber/integration.rb +5 -0
  202. data/lib/ddtrace/contrib/dalli/patcher.rb +0 -38
  203. data/lib/ddtrace/contrib/delayed_job/plugin.rb +0 -1
  204. data/lib/ddtrace/contrib/elasticsearch/patcher.rb +1 -0
  205. data/lib/ddtrace/contrib/elasticsearch/quantize.rb +3 -2
  206. data/lib/ddtrace/contrib/ethon/easy_patch.rb +11 -10
  207. data/lib/ddtrace/contrib/ethon/ext.rb +1 -0
  208. data/lib/ddtrace/contrib/excon/middleware.rb +2 -6
  209. data/lib/ddtrace/contrib/extensions.rb +53 -3
  210. data/lib/ddtrace/contrib/faraday/middleware.rb +1 -3
  211. data/lib/ddtrace/contrib/faraday/patcher.rb +0 -36
  212. data/lib/ddtrace/contrib/grape/endpoint.rb +37 -26
  213. data/lib/ddtrace/contrib/grape/ext.rb +1 -0
  214. data/lib/ddtrace/contrib/grape/patcher.rb +0 -42
  215. data/lib/ddtrace/contrib/grpc/datadog_interceptor.rb +8 -8
  216. data/lib/ddtrace/contrib/grpc/datadog_interceptor/server.rb +1 -0
  217. data/lib/ddtrace/contrib/grpc/patcher.rb +0 -36
  218. data/lib/ddtrace/contrib/http/circuit_breaker.rb +1 -3
  219. data/lib/ddtrace/contrib/http/instrumentation.rb +5 -5
  220. data/lib/ddtrace/contrib/httpclient/configuration/settings.rb +32 -0
  221. data/lib/ddtrace/contrib/httpclient/ext.rb +17 -0
  222. data/lib/ddtrace/contrib/httpclient/instrumentation.rb +147 -0
  223. data/lib/ddtrace/contrib/httpclient/integration.rb +43 -0
  224. data/lib/ddtrace/contrib/httpclient/patcher.rb +38 -0
  225. data/lib/ddtrace/contrib/httprb/instrumentation.rb +15 -21
  226. data/lib/ddtrace/contrib/httprb/patcher.rb +5 -2
  227. data/lib/ddtrace/contrib/mongodb/instrumentation.rb +2 -0
  228. data/lib/ddtrace/contrib/mongodb/subscribers.rb +2 -3
  229. data/lib/ddtrace/contrib/patchable.rb +18 -7
  230. data/lib/ddtrace/contrib/patcher.rb +9 -6
  231. data/lib/ddtrace/contrib/presto/patcher.rb +5 -2
  232. data/lib/ddtrace/contrib/qless/configuration/settings.rb +35 -0
  233. data/lib/ddtrace/contrib/qless/ext.rb +20 -0
  234. data/lib/ddtrace/contrib/qless/integration.rb +38 -0
  235. data/lib/ddtrace/contrib/qless/patcher.rb +35 -0
  236. data/lib/ddtrace/contrib/qless/qless_job.rb +73 -0
  237. data/lib/ddtrace/contrib/qless/tracer_cleaner.rb +33 -0
  238. data/lib/ddtrace/contrib/que/ext.rb +19 -19
  239. data/lib/ddtrace/contrib/que/tracer.rb +1 -1
  240. data/lib/ddtrace/contrib/racecar/event.rb +1 -0
  241. data/lib/ddtrace/contrib/rack/configuration/settings.rb +3 -3
  242. data/lib/ddtrace/contrib/rack/integration.rb +7 -0
  243. data/lib/ddtrace/contrib/rack/middlewares.rb +6 -11
  244. data/lib/ddtrace/contrib/rack/patcher.rb +1 -3
  245. data/lib/ddtrace/contrib/rack/request_queue.rb +6 -1
  246. data/lib/ddtrace/contrib/rails/auto_instrument_railtie.rb +10 -0
  247. data/lib/ddtrace/contrib/rails/patcher.rb +6 -2
  248. data/lib/ddtrace/contrib/rails/utils.rb +4 -0
  249. data/lib/ddtrace/contrib/rake/instrumentation.rb +4 -2
  250. data/lib/ddtrace/contrib/rake/integration.rb +1 -1
  251. data/lib/ddtrace/contrib/redis/configuration/resolver.rb +14 -5
  252. data/lib/ddtrace/contrib/redis/configuration/settings.rb +5 -0
  253. data/lib/ddtrace/contrib/redis/ext.rb +1 -0
  254. data/lib/ddtrace/contrib/redis/patcher.rb +20 -3
  255. data/lib/ddtrace/contrib/redis/quantize.rb +28 -0
  256. data/lib/ddtrace/contrib/redis/tags.rb +5 -1
  257. data/lib/ddtrace/contrib/redis/vendor/LICENSE +20 -0
  258. data/lib/ddtrace/contrib/redis/vendor/resolver.rb +6 -7
  259. data/lib/ddtrace/contrib/registry.rb +2 -2
  260. data/lib/ddtrace/contrib/resque/configuration/settings.rb +17 -1
  261. data/lib/ddtrace/contrib/resque/integration.rb +1 -1
  262. data/lib/ddtrace/contrib/resque/patcher.rb +4 -4
  263. data/lib/ddtrace/contrib/resque/resque_job.rb +24 -1
  264. data/lib/ddtrace/contrib/rest_client/request_patch.rb +1 -3
  265. data/lib/ddtrace/contrib/rspec/configuration/settings.rb +0 -10
  266. data/lib/ddtrace/contrib/rspec/example.rb +24 -10
  267. data/lib/ddtrace/contrib/rspec/ext.rb +0 -3
  268. data/lib/ddtrace/contrib/rspec/integration.rb +6 -1
  269. data/lib/ddtrace/contrib/rspec/patcher.rb +0 -2
  270. data/lib/ddtrace/contrib/sequel/utils.rb +5 -6
  271. data/lib/ddtrace/contrib/shoryuken/configuration/settings.rb +1 -0
  272. data/lib/ddtrace/contrib/shoryuken/tracer.rb +7 -4
  273. data/lib/ddtrace/contrib/sidekiq/server_tracer.rb +2 -7
  274. data/lib/ddtrace/contrib/sidekiq/tracing.rb +0 -1
  275. data/lib/ddtrace/contrib/sinatra/env.rb +1 -3
  276. data/lib/ddtrace/contrib/sinatra/headers.rb +1 -3
  277. data/lib/ddtrace/contrib/sinatra/tracer.rb +1 -3
  278. data/lib/ddtrace/contrib/sinatra/tracer_middleware.rb +5 -5
  279. data/lib/ddtrace/contrib/sneakers/ext.rb +11 -11
  280. data/lib/ddtrace/contrib/sneakers/tracer.rb +2 -4
  281. data/lib/ddtrace/contrib/status_code_matcher.rb +5 -3
  282. data/lib/ddtrace/correlation.rb +1 -0
  283. data/lib/ddtrace/diagnostics/environment_logger.rb +3 -2
  284. data/lib/ddtrace/distributed_tracing/headers/headers.rb +1 -0
  285. data/lib/ddtrace/distributed_tracing/headers/helpers.rb +1 -3
  286. data/lib/ddtrace/error.rb +2 -0
  287. data/lib/ddtrace/ext/ci.rb +43 -11
  288. data/lib/ddtrace/ext/distributed.rb +1 -1
  289. data/lib/ddtrace/ext/git.rb +0 -1
  290. data/lib/ddtrace/ext/http.rb +1 -1
  291. data/lib/ddtrace/ext/profiling.rb +52 -0
  292. data/lib/ddtrace/ext/runtime.rb +3 -1
  293. data/lib/ddtrace/ext/transport.rb +1 -0
  294. data/lib/ddtrace/forced_tracing.rb +2 -0
  295. data/lib/ddtrace/logger.rb +1 -1
  296. data/lib/ddtrace/metrics.rb +14 -6
  297. data/lib/ddtrace/opentracer/distributed_headers.rb +3 -0
  298. data/lib/ddtrace/opentracer/span.rb +2 -6
  299. data/lib/ddtrace/opentracer/thread_local_scope.rb +1 -0
  300. data/lib/ddtrace/patcher.rb +25 -4
  301. data/lib/ddtrace/pin.rb +8 -61
  302. data/lib/ddtrace/pipeline/span_filter.rb +1 -1
  303. data/lib/ddtrace/profiling.rb +54 -0
  304. data/lib/ddtrace/profiling/backtrace_location.rb +32 -0
  305. data/lib/ddtrace/profiling/buffer.rb +41 -0
  306. data/lib/ddtrace/profiling/collectors/stack.rb +253 -0
  307. data/lib/ddtrace/profiling/encoding/profile.rb +31 -0
  308. data/lib/ddtrace/profiling/event.rb +13 -0
  309. data/lib/ddtrace/profiling/events/stack.rb +102 -0
  310. data/lib/ddtrace/profiling/exporter.rb +23 -0
  311. data/lib/ddtrace/profiling/ext/cpu.rb +54 -0
  312. data/lib/ddtrace/profiling/ext/cthread.rb +134 -0
  313. data/lib/ddtrace/profiling/ext/forking.rb +97 -0
  314. data/lib/ddtrace/profiling/flush.rb +41 -0
  315. data/lib/ddtrace/profiling/pprof/builder.rb +121 -0
  316. data/lib/ddtrace/profiling/pprof/converter.rb +85 -0
  317. data/lib/ddtrace/profiling/pprof/message_set.rb +12 -0
  318. data/lib/ddtrace/profiling/pprof/payload.rb +18 -0
  319. data/lib/ddtrace/profiling/pprof/pprof.proto +212 -0
  320. data/lib/ddtrace/profiling/pprof/pprof_pb.rb +81 -0
  321. data/lib/ddtrace/profiling/pprof/stack_sample.rb +90 -0
  322. data/lib/ddtrace/profiling/pprof/string_table.rb +10 -0
  323. data/lib/ddtrace/profiling/pprof/template.rb +114 -0
  324. data/lib/ddtrace/profiling/preload.rb +3 -0
  325. data/lib/ddtrace/profiling/profiler.rb +28 -0
  326. data/lib/ddtrace/profiling/recorder.rb +87 -0
  327. data/lib/ddtrace/profiling/scheduler.rb +84 -0
  328. data/lib/ddtrace/profiling/tasks/setup.rb +77 -0
  329. data/lib/ddtrace/profiling/transport/client.rb +12 -0
  330. data/lib/ddtrace/profiling/transport/http.rb +122 -0
  331. data/lib/ddtrace/profiling/transport/http/api.rb +43 -0
  332. data/lib/ddtrace/profiling/transport/http/api/endpoint.rb +90 -0
  333. data/lib/ddtrace/profiling/transport/http/api/instance.rb +36 -0
  334. data/lib/ddtrace/profiling/transport/http/api/spec.rb +40 -0
  335. data/lib/ddtrace/profiling/transport/http/builder.rb +28 -0
  336. data/lib/ddtrace/profiling/transport/http/client.rb +33 -0
  337. data/lib/ddtrace/profiling/transport/http/response.rb +21 -0
  338. data/lib/ddtrace/profiling/transport/io.rb +30 -0
  339. data/lib/ddtrace/profiling/transport/io/client.rb +27 -0
  340. data/lib/ddtrace/profiling/transport/io/response.rb +16 -0
  341. data/lib/ddtrace/profiling/transport/parcel.rb +17 -0
  342. data/lib/ddtrace/profiling/transport/request.rb +15 -0
  343. data/lib/ddtrace/profiling/transport/response.rb +8 -0
  344. data/lib/ddtrace/propagation/grpc_propagator.rb +1 -0
  345. data/lib/ddtrace/propagation/http_propagator.rb +17 -2
  346. data/lib/ddtrace/quantization/http.rb +1 -0
  347. data/lib/ddtrace/runtime/cgroup.rb +2 -2
  348. data/lib/ddtrace/runtime/container.rb +32 -26
  349. data/lib/ddtrace/runtime/identity.rb +8 -0
  350. data/lib/ddtrace/sampler.rb +1 -1
  351. data/lib/ddtrace/sampling/rule_sampler.rb +4 -9
  352. data/lib/ddtrace/span.rb +7 -7
  353. data/lib/ddtrace/sync_writer.rb +12 -12
  354. data/lib/ddtrace/tasks/exec.rb +48 -0
  355. data/lib/ddtrace/tasks/help.rb +14 -0
  356. data/lib/ddtrace/tracer.rb +28 -5
  357. data/lib/ddtrace/transport/http.rb +15 -8
  358. data/lib/ddtrace/transport/http/adapters/net.rb +27 -8
  359. data/lib/ddtrace/transport/http/adapters/registry.rb +1 -0
  360. data/lib/ddtrace/transport/http/adapters/unix_socket.rb +2 -4
  361. data/lib/ddtrace/transport/http/builder.rb +7 -1
  362. data/lib/ddtrace/transport/http/env.rb +8 -0
  363. data/lib/ddtrace/transport/http/traces.rb +2 -3
  364. data/lib/ddtrace/transport/io.rb +1 -1
  365. data/lib/ddtrace/transport/io/client.rb +15 -8
  366. data/lib/ddtrace/transport/io/response.rb +1 -3
  367. data/lib/ddtrace/transport/io/traces.rb +6 -0
  368. data/lib/ddtrace/transport/parcel.rb +4 -0
  369. data/lib/ddtrace/transport/traces.rb +18 -1
  370. data/lib/ddtrace/utils/compression.rb +27 -0
  371. data/lib/ddtrace/utils/object_set.rb +41 -0
  372. data/lib/ddtrace/utils/only_once.rb +40 -0
  373. data/lib/ddtrace/utils/sequence.rb +17 -0
  374. data/lib/ddtrace/utils/string_table.rb +45 -0
  375. data/lib/ddtrace/utils/time.rb +32 -1
  376. data/lib/ddtrace/vendor/active_record/MIT-LICENSE +20 -0
  377. data/lib/ddtrace/vendor/multipart-post/LICENSE +11 -0
  378. data/lib/ddtrace/vendor/multipart-post/multipart.rb +12 -0
  379. data/lib/ddtrace/vendor/multipart-post/multipart/post.rb +8 -0
  380. data/lib/ddtrace/vendor/multipart-post/multipart/post/composite_read_io.rb +116 -0
  381. data/lib/ddtrace/vendor/multipart-post/multipart/post/multipartable.rb +57 -0
  382. data/lib/ddtrace/vendor/multipart-post/multipart/post/parts.rb +135 -0
  383. data/lib/ddtrace/vendor/multipart-post/multipart/post/version.rb +9 -0
  384. data/lib/ddtrace/vendor/multipart-post/net/http/post/multipart.rb +32 -0
  385. data/lib/ddtrace/version.rb +3 -1
  386. data/lib/ddtrace/workers.rb +5 -0
  387. data/lib/ddtrace/workers/async.rb +11 -3
  388. data/lib/ddtrace/workers/loop.rb +17 -3
  389. data/lib/ddtrace/workers/polling.rb +1 -0
  390. data/lib/ddtrace/workers/queue.rb +1 -0
  391. data/lib/ddtrace/workers/runtime_metrics.rb +21 -4
  392. data/lib/ddtrace/workers/trace_writer.rb +10 -10
  393. data/lib/ddtrace/writer.rb +7 -4
  394. metadata +224 -342
  395. data/lib/ddtrace/augmentation.rb +0 -13
  396. data/lib/ddtrace/augmentation/method_wrapper.rb +0 -20
  397. data/lib/ddtrace/augmentation/method_wrapping.rb +0 -38
  398. data/lib/ddtrace/augmentation/shim.rb +0 -102
  399. data/lib/ddtrace/contrib/rspec/example_group.rb +0 -61
  400. data/lib/ddtrace/monkey.rb +0 -58
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 71b7fdfa16924489a0ab33f4d34753fb4df23e38
4
- data.tar.gz: 122e1f6d2f7ba41a82727052a9b5ea36121c4bff
2
+ SHA256:
3
+ metadata.gz: 9418700e29312fa4efc67e04b7ff901950a5ee0d942cc7fe06a49adbf694f08a
4
+ data.tar.gz: 348acc764a300c51c3e99b02001b0dc238775c6afd7b07fd3ee4c31758e1e906
5
5
  SHA512:
6
- metadata.gz: bbb7693da41ddbdedeaf7a6fbe4cbfd296e12636c39e4e1a81a30ed392e4b6ac57a10ab0654400373e3ff7150207d0fd511b95cd4367d811b2f58ed028d75187
7
- data.tar.gz: e2450e8e4f411dcc36ba5548f1d24160571c801fb6ece09b8801e605149695f3f7a44217f8c05b059b82eb3e64c740cf10a9affb80ae39d2e1bb2b5739b4839f
6
+ metadata.gz: f1cdbcdef68b68901a5737c3bfae8797709448a6db0b92ee2f1a7e59c64c6610bf327b1d847bd2cd0d18e651807d9c6cead347516f258f7f62169ca71315d7e1
7
+ data.tar.gz: 4c9e69ff9418143fff7734c2fd7ae2973d230a58e5173e8a1a6e128733a5bdb3fda11874f63b87840fc7e60098c94c746dce7d527726166345e4ca1e4a4b95a2
data/.circleci/config.yml CHANGED
@@ -2,41 +2,83 @@ version: 2.1
2
2
 
3
3
  # Common variables, containers, jobs and steps.
4
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.
5
8
  working_directory: /app
6
9
  shell: /bin/bash --login
7
10
 
8
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
9
36
  - &container_base
37
+ image: <<parameters.image>>
10
38
  environment:
11
- - BUNDLE_GEMFILE=/app/Gemfile
39
+ *container_parameters_environment
40
+ - &test_job_default
41
+ <<: *job_defaults
42
+ <<: *job_parameters
43
+ docker:
44
+ - *container_base
12
45
  - &container_postgres
13
46
  image: postgres:9.6
14
47
  environment:
15
48
  - POSTGRES_PASSWORD=postgres
16
49
  - POSTGRES_USER=postgres
17
50
  - POSTGRES_DB=postgres
51
+ - &postgres_port 5432
18
52
  - &container_presto
19
- image: prestosql/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
20
56
  - &container_mysql
21
57
  image: mysql:5.6
22
58
  environment:
23
59
  - MYSQL_ROOT_PASSWORD=root
24
60
  - MYSQL_PASSWORD=mysql
25
61
  - MYSQL_USER=mysql
62
+ - &mysql_port 3306
26
63
  - &container_elasticsearch
27
64
  image: elasticsearch:2.4
65
+ - &elasticsearch_port 9200
28
66
  - &container_redis
29
67
  image: redis:3.0
68
+ - &redis_port 6379
30
69
  - &container_mongo
31
70
  image: mongo:3.5
71
+ - &mongo_port 27017
32
72
  - &container_memcached
33
73
  image: memcached:1.5-alpine
74
+ - &memcached_port 11211
34
75
  - &container_agent
35
76
  image: datadog/docker-dd-agent
36
77
  environment:
37
78
  - DD_APM_ENABLED=true
38
79
  - DD_BIND_HOST=0.0.0.0
39
80
  - DD_API_KEY=invalid_key_but_this_is_fine
81
+ - &agent_port 8126
40
82
 
41
83
  step_init_bundle_checksum: &step_init_bundle_checksum
42
84
  run:
@@ -68,7 +110,13 @@ step_compute_bundle_checksum: &step_compute_bundle_checksum
68
110
  step_run_all_tests: &step_run_all_tests
69
111
  run:
70
112
  name: Run tests
71
- 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
72
120
  step_release_docs: &step_release_docs
73
121
  run:
74
122
  name: Upload release docs
@@ -88,41 +136,14 @@ filters_only_release_tags: &filters_only_release_tags
88
136
  orbs:
89
137
  orb:
90
138
  jobs:
91
- checkout:
92
- <<: *job_defaults
93
- parameters:
94
- ruby_version:
95
- description: Ruby version
96
- type: string
97
- image:
98
- description: Docker image location
99
- type: string
100
- docker:
101
- - <<: *container_base
102
- image: <<parameters.image>>
103
- steps:
104
- - checkout
105
- - save_cache:
106
- key: '{{ .Environment.CIRCLE_CACHE_VERSION }}-repo-<<parameters.ruby_version>>-{{ .Environment.CIRCLE_SHA1 }}'
107
- paths:
108
- - /app
109
139
  build:
110
- <<: *job_defaults
111
- parameters:
112
- ruby_version:
113
- description: Ruby version
114
- type: string
115
- image:
116
- description: Docker image location
117
- type: string
118
- docker:
119
- - <<: *container_base
120
- image: <<parameters.image>>
140
+ <<: *test_job_default
141
+ resource_class: <<parameters.resource_class_to_use>>
121
142
  steps:
143
+ - checkout
122
144
  - restore_cache:
123
145
  keys:
124
146
  - '{{ .Environment.CIRCLE_CACHE_VERSION }}-bundled-repo-<<parameters.ruby_version>>-{{ .Environment.CIRCLE_SHA1 }}'
125
- - '{{ .Environment.CIRCLE_CACHE_VERSION }}-repo-<<parameters.ruby_version>>-{{ .Environment.CIRCLE_SHA1 }}'
126
147
  - restore_cache:
127
148
  keys:
128
149
  - bundle-{{ .Environment.CIRCLE_CACHE_VERSION }}-<<parameters.ruby_version>>-{{ checksum "lib/ddtrace/version.rb" }}-{{ .Branch }}-{{ checksum "Gemfile" }}-{{ checksum "Appraisals" }}-{{ checksum "ddtrace.gemspec" }}
@@ -147,22 +168,38 @@ orbs:
147
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" }}'
148
169
  paths:
149
170
  - /usr/local/bundle
150
- test:
151
- <<: *job_defaults
171
+ build_and_test_integration:
172
+ executor: docker-integration
152
173
  parameters:
153
174
  ruby_version:
154
175
  description: Ruby version
155
176
  type: string
156
- image:
157
- description: Docker image location
177
+ integration_apps:
178
+ description: Integration apps
158
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
159
201
  docker:
160
202
  - <<: *container_base
161
- image: <<parameters.image>>
162
- environment:
163
- - BUNDLE_GEMFILE: /app/Gemfile
164
- - TEST_DATADOG_INTEGRATION: 1
165
- - COVERAGE_BASE_DIR: coverage
166
203
  - *container_postgres
167
204
  - *container_presto
168
205
  - *container_mysql
@@ -184,26 +221,34 @@ orbs:
184
221
  command: |
185
222
  # Create a unique coverage directory for this job, to avoid conflicts when merging all results
186
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
187
241
  - *step_run_all_tests
242
+ - store_test_results:
243
+ path: /tmp/rspec
188
244
  - persist_to_workspace:
189
245
  root: .
190
246
  paths:
191
247
  - coverage
192
248
  benchmark:
193
- <<: *job_defaults
194
- parameters:
195
- ruby_version:
196
- description: Ruby version
197
- type: string
198
- image:
199
- description: Docker image location
200
- type: string
249
+ <<: *test_job_default
201
250
  docker:
202
251
  - <<: *container_base
203
- image: <<parameters.image>>
204
- environment:
205
- - BUNDLE_GEMFILE: /app/Gemfile
206
- - TEST_DATADOG_INTEGRATION: 1
207
252
  - *container_postgres
208
253
  - *container_redis
209
254
  - *container_agent
@@ -221,19 +266,7 @@ orbs:
221
266
  name: Run Benchmark without ddtracer
222
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
223
268
  lint:
224
- <<: *job_defaults
225
- parameters:
226
- ruby_version:
227
- description: Ruby version
228
- type: string
229
- image:
230
- description: Docker image location
231
- type: string
232
- docker:
233
- - <<: *container_base
234
- image: <<parameters.image>>
235
- environment:
236
- - BUNDLE_GEMFILE: /app/Gemfile
269
+ <<: *test_job_default
237
270
  steps:
238
271
  - restore_cache:
239
272
  keys:
@@ -243,19 +276,7 @@ orbs:
243
276
  - '{{ .Environment.CIRCLE_CACHE_VERSION }}-bundle-<<parameters.ruby_version>>-{{ checksum ".circleci/bundle_checksum" }}'
244
277
  - *step_rubocop
245
278
  coverage:
246
- <<: *job_defaults
247
- parameters:
248
- ruby_version:
249
- description: Ruby version
250
- type: string
251
- image:
252
- description: Docker image location
253
- type: string
254
- docker:
255
- - <<: *container_base
256
- image: <<parameters.image>>
257
- environment:
258
- - BUNDLE_GEMFILE: /app/Gemfile
279
+ <<: *test_job_default
259
280
  steps:
260
281
  - restore_cache:
261
282
  keys:
@@ -265,6 +286,9 @@ orbs:
265
286
  - '{{ .Environment.CIRCLE_CACHE_VERSION }}-bundle-<<parameters.ruby_version>>-{{ checksum ".circleci/bundle_checksum" }}'
266
287
  - attach_workspace:
267
288
  at: /tmp/workspace
289
+ - run:
290
+ name: Install codecov
291
+ command: bundle add codecov
268
292
  - run:
269
293
  name: Generate coverage report artifact "coverage/index.html"
270
294
  command: COVERAGE_DIR=/tmp/workspace/coverage bundle exec rake coverage:report
@@ -274,14 +298,52 @@ orbs:
274
298
  - store_artifacts:
275
299
  path: /tmp/workspace/coverage/report/
276
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
277
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>>'
278
336
  executors:
337
+ docker-integration:
338
+ docker:
339
+ - image: circleci/buildpack-deps:stretch
279
340
 
280
341
  jobs:
281
342
  "deploy release":
282
343
  <<: *job_defaults
283
344
  docker:
284
- - <<: *container_base
345
+ - environment:
346
+ *container_base_environment
285
347
  image: marcotc/docker-library:ddtrace_rb_2_5_6
286
348
  steps:
287
349
  - checkout
@@ -301,7 +363,8 @@ jobs:
301
363
  "deploy prerelease Gem":
302
364
  <<: *job_defaults
303
365
  docker:
304
- - <<: *container_base
366
+ - environment:
367
+ *container_base_environment
305
368
  image: marcotc/docker-library:ddtrace_rb_2_5_6
306
369
  steps:
307
370
  - run:
@@ -327,8 +390,10 @@ jobs:
327
390
  echo PRE=$PRE
328
391
  sed lib/ddtrace/version.rb -i -e "s/^\([\t ]*PRE\) *=*/\1 = \'${PRE}\' #/g"
329
392
  - run:
330
- name: Upload prereleas Gem and rebuild index
331
- command: S3_DIR=prerelease bundle exec rake release:gem
393
+ name: Upload prerelease Gem and rebuild index
394
+ # This was bumped from prerelease to prerelease-v2 to avoid the issue documented in
395
+ # https://github.com/DataDog/dd-trace-rb/pull/1358
396
+ command: S3_DIR=prerelease-v2 bundle exec rake release:gem
332
397
  - store_artifacts:
333
398
  path: pkg/
334
399
  destination: gem
@@ -367,11 +432,30 @@ job_configuration:
367
432
  <<: *filters_all_branches_and_tags
368
433
  ruby_version: '2.7'
369
434
  image: marcotc/docker-library:ddtrace_rb_2_7_0
435
+ - &config-3_0
436
+ <<: *filters_all_branches_and_tags
437
+ ruby_version: '3.0'
438
+ image: marcotc/docker-library:ddtrace_rb_3.0.0
439
+ - &config-3_0-jit
440
+ <<: *filters_all_branches_and_tags
441
+ ruby_version: '3.0'
442
+ image: marcotc/docker-library:ddtrace_rb_3.0.0
443
+ jit: true
370
444
  # JRuby
371
- - &config-jruby-9_2
445
+ - &config-jruby-9_2_0_0 # Oldest supported version
446
+ <<: *filters_all_branches_and_tags
447
+ ruby_version: 'jruby-9.2.0.0'
448
+ image: marcotc/docker-library:ddtrace_rb_jruby_9_2_0_0
449
+ - &config-jruby-9_2-latest # More recent release of 9.2
450
+ <<: *filters_all_branches_and_tags
451
+ ruby_version: 'jruby-9.2-latest'
452
+ image: marcotc/docker-library:ddtrace_rb_jruby_9_2_11_1
453
+ # TruffleRuby
454
+ - &config-truffleruby-21_0_0
372
455
  <<: *filters_all_branches_and_tags
373
- ruby_version: 'jruby-9.2'
374
- image: marcotc/docker-library:ddtrace_rb_jruby_9_2
456
+ ruby_version: 'truffleruby-21.0.0'
457
+ image: ivoanjo/docker-library:ddtrace_rb_truffleruby_21_0_0
458
+ resource_class_to_use: large
375
459
 
376
460
  workflows:
377
461
  version: 2
@@ -394,55 +478,93 @@ workflows:
394
478
  - test-2.5
395
479
  - test-2.6
396
480
  - test-2.7
397
- - test-jruby-9.2
481
+ - test-3.0
482
+ - test-jruby-9.2.0.0
483
+ - test-jruby-9.2-latest
484
+ # soon™️ - test-truffleruby-21.0.0
485
+ - orb/changelog:
486
+ <<: *config-2_7
487
+ name: changelog
488
+ requires:
489
+ - build-2.7
490
+ filters:
491
+ branches:
492
+ only: /bump_to_version_.*/
493
+ # Integration
494
+ - orb/build_and_test_integration:
495
+ name: build_and_test_integration-2.0
496
+ integration_apps: 'ruby rack'
497
+ ruby_version: '2.0'
498
+ <<: *filters_all_branches_and_tags
499
+ - orb/build_and_test_integration:
500
+ name: build_and_test_integration-2.1
501
+ integration_apps: 'ruby rack'
502
+ ruby_version: '2.1'
503
+ <<: *filters_all_branches_and_tags
504
+ - orb/build_and_test_integration:
505
+ name: build_and_test_integration-2.2
506
+ integration_apps: 'ruby rack'
507
+ ruby_version: '2.2'
508
+ <<: *filters_all_branches_and_tags
509
+ - orb/build_and_test_integration:
510
+ name: build_and_test_integration-2.3
511
+ integration_apps: 'ruby rack rails-five'
512
+ ruby_version: '2.3'
513
+ <<: *filters_all_branches_and_tags
514
+ - orb/build_and_test_integration:
515
+ name: build_and_test_integration-2.4
516
+ integration_apps: 'ruby rack rails-five'
517
+ ruby_version: '2.4'
518
+ <<: *filters_all_branches_and_tags
519
+ - orb/build_and_test_integration:
520
+ name: build_and_test_integration-2.5
521
+ integration_apps: 'ruby rack rails-five'
522
+ ruby_version: '2.5'
523
+ <<: *filters_all_branches_and_tags
524
+ - orb/build_and_test_integration:
525
+ name: build_and_test_integration-2.6
526
+ integration_apps: 'ruby rack rails-five'
527
+ ruby_version: '2.6'
528
+ <<: *filters_all_branches_and_tags
529
+ - orb/build_and_test_integration:
530
+ name: build_and_test_integration-2.7
531
+ integration_apps: 'ruby rack rails-five'
532
+ ruby_version: '2.7'
533
+ <<: *filters_all_branches_and_tags
534
+ - orb/build_and_test_integration:
535
+ name: build_and_test_integration-3.0
536
+ # TODO: Get Rack & Rails apps working with Ruby 3.0
537
+ integration_apps: 'ruby'
538
+ ruby_version: '3.0'
539
+ <<: *filters_all_branches_and_tags
398
540
  # MRI
399
- - orb/checkout:
400
- <<: *config-2_0
401
- name: checkout-2.0
402
541
  - orb/build:
403
542
  <<: *config-2_0
404
543
  name: build-2.0
405
- requires:
406
- - checkout-2.0
407
544
  - orb/test:
408
545
  <<: *config-2_0
409
546
  name: test-2.0
410
547
  requires:
411
548
  - build-2.0
412
- - orb/checkout:
413
- <<: *config-2_1
414
- name: checkout-2.1
415
549
  - orb/build:
416
550
  <<: *config-2_1
417
551
  name: build-2.1
418
- requires:
419
- - checkout-2.1
420
552
  - orb/test:
421
553
  <<: *config-2_1
422
554
  name: test-2.1
423
555
  requires:
424
556
  - build-2.1
425
- - orb/checkout:
426
- <<: *config-2_2
427
- name: checkout-2.2
428
557
  - orb/build:
429
558
  <<: *config-2_2
430
559
  name: build-2.2
431
- requires:
432
- - checkout-2.2
433
560
  - orb/test:
434
561
  <<: *config-2_2
435
562
  name: test-2.2
436
563
  requires:
437
564
  - build-2.2
438
- - orb/checkout:
439
- <<: *config-2_3
440
- name: checkout-2.3
441
565
  - orb/build:
442
566
  <<: *config-2_3
443
567
  name: build-2.3
444
- requires:
445
- - checkout-2.3
446
568
  - orb/test:
447
569
  <<: *config-2_3
448
570
  name: test-2.3
@@ -453,72 +575,81 @@ workflows:
453
575
  name: benchmark-2.3
454
576
  requires:
455
577
  - build-2.3
456
- - orb/checkout:
457
- <<: *config-2_4
458
- name: checkout-2.4
459
578
  - orb/build:
460
579
  <<: *config-2_4
461
580
  name: build-2.4
462
- requires:
463
- - checkout-2.4
464
581
  - orb/test:
465
582
  <<: *config-2_4
466
583
  name: test-2.4
467
584
  requires:
468
585
  - build-2.4
469
- - orb/checkout:
470
- <<: *config-2_5
471
- name: checkout-2.5
472
586
  - orb/build:
473
587
  <<: *config-2_5
474
588
  name: build-2.5
475
- requires:
476
- - checkout-2.5
477
589
  - orb/test:
478
590
  <<: *config-2_5
479
591
  name: test-2.5
480
592
  requires:
481
593
  - build-2.5
482
- - orb/checkout:
483
- <<: *config-2_6
484
- name: checkout-2.6
485
594
  - orb/build:
486
595
  <<: *config-2_6
487
596
  name: build-2.6
488
- requires:
489
- - checkout-2.6
490
597
  - orb/test:
491
598
  <<: *config-2_6
492
599
  name: test-2.6
493
600
  requires:
494
601
  - build-2.6
495
- - orb/checkout:
496
- <<: *config-2_7
497
- name: checkout-2.7
498
602
  - orb/build:
499
603
  <<: *config-2_7
500
604
  name: build-2.7
501
- requires:
502
- - checkout-2.7
503
605
  - orb/test:
504
606
  <<: *config-2_7
505
607
  name: test-2.7
506
608
  requires:
507
609
  - build-2.7
610
+ - orb/build:
611
+ <<: *config-3_0
612
+ name: build-3.0
613
+ - orb/test:
614
+ <<: *config-3_0
615
+ name: test-3.0
616
+ requires:
617
+ - build-3.0
618
+ - orb/build:
619
+ <<: *config-3_0-jit
620
+ name: build-3.0-jit
621
+ - orb/test:
622
+ <<: *config-3_0-jit
623
+ name: test-3.0-jit
624
+ requires:
625
+ - build-3.0-jit
508
626
  # JRuby
509
- - orb/checkout:
510
- <<: *config-jruby-9_2
511
- name: checkout-jruby-9.2
512
627
  - orb/build:
513
- <<: *config-jruby-9_2
514
- name: build-jruby-9.2
628
+ <<: *config-jruby-9_2_0_0
629
+ name: build-jruby-9.2.0.0
630
+ - orb/test:
631
+ <<: *config-jruby-9_2_0_0
632
+ name: test-jruby-9.2.0.0
515
633
  requires:
516
- - checkout-jruby-9.2
634
+ - build-jruby-9.2.0.0
635
+ - orb/build:
636
+ <<: *config-jruby-9_2-latest
637
+ name: build-jruby-9.2-latest
517
638
  - orb/test:
518
- <<: *config-jruby-9_2
519
- name: test-jruby-9.2
639
+ <<: *config-jruby-9_2-latest
640
+ name: test-jruby-9.2-latest
520
641
  requires:
521
- - build-jruby-9.2
642
+ - build-jruby-9.2-latest
643
+ # TruffleRuby
644
+ # soon™️
645
+ # - orb/build:
646
+ # <<: *config-truffleruby-21_0_0
647
+ # name: build-truffleruby-21.0.0
648
+ # - orb/test:
649
+ # <<: *config-truffleruby-21_0_0
650
+ # name: test-truffleruby-21.0.0
651
+ # requires:
652
+ # - build-truffleruby-21.0.0
522
653
  # Release jobs
523
654
  - "deploy prerelease Gem":
524
655
  <<: *filters_all_branches_and_tags
@@ -532,7 +663,11 @@ workflows:
532
663
  - test-2.5
533
664
  - test-2.6
534
665
  - test-2.7
535
- - test-jruby-9.2
666
+ - test-3.0
667
+ - test-3.0-jit
668
+ - test-jruby-9.2.0.0
669
+ - test-jruby-9.2-latest
670
+ # soon™️ - test-truffleruby-21.0.0
536
671
  - "deploy release":
537
672
  <<: *filters_only_release_tags
538
673
  requires:
@@ -545,4 +680,8 @@ workflows:
545
680
  - test-2.5
546
681
  - test-2.6
547
682
  - test-2.7
548
- - test-jruby-9.2
683
+ - test-3.0
684
+ - test-3.0-jit
685
+ - test-jruby-9.2.0.0
686
+ - test-jruby-9.2-latest
687
+ # soon™️ - test-truffleruby-21.0.0