ddtrace 0.50.0 → 0.51.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (511) hide show
  1. checksums.yaml +4 -4
  2. data/.circleci/config.yml +32 -33
  3. data/.circleci/images/primary/Dockerfile-2.1.10 +1 -1
  4. data/.circleci/images/primary/Dockerfile-2.2.10 +1 -1
  5. data/.circleci/images/primary/Dockerfile-2.3.8 +4 -2
  6. data/.circleci/images/primary/{Dockerfile-2.6.4 → Dockerfile-2.4.10} +5 -3
  7. data/.circleci/images/primary/{Dockerfile-2.4.6 → Dockerfile-2.5.9} +3 -3
  8. data/.circleci/images/primary/{Dockerfile-2.5.6 → Dockerfile-2.6.7} +3 -3
  9. data/.circleci/images/primary/{Dockerfile-2.7.0 → Dockerfile-2.7.3} +3 -3
  10. data/.circleci/images/primary/{Dockerfile-3.0.0 → Dockerfile-3.0.1} +3 -3
  11. data/.circleci/images/primary/Dockerfile-jruby-9.2-latest +3 -3
  12. data/.circleci/images/primary/Dockerfile-jruby-9.2.0.0 +1 -1
  13. data/.circleci/images/primary/Dockerfile-truffleruby-21.1.0 +1 -1
  14. data/.dd-ci/ci-app-spec.json +31 -0
  15. data/.gitattributes +1 -0
  16. data/.github/workflows/test-head.yaml +34 -0
  17. data/.rubocop_todo.yml +0 -1
  18. data/Appraisals +195 -75
  19. data/CHANGELOG.md +63 -0
  20. data/Gemfile +6 -3
  21. data/Rakefile +45 -2
  22. data/docker-compose.yml +10 -10
  23. data/docs/GettingStarted.md +35 -4
  24. data/gemfiles/jruby_9.2.0.0_contrib.gemfile +4 -1
  25. data/gemfiles/jruby_9.2.0.0_contrib.gemfile.lock +222 -169
  26. data/gemfiles/jruby_9.2.0.0_contrib_old.gemfile +3 -2
  27. data/gemfiles/jruby_9.2.0.0_contrib_old.gemfile.lock +19 -17
  28. data/gemfiles/jruby_9.2.0.0_core_old.gemfile +2 -1
  29. data/gemfiles/jruby_9.2.0.0_core_old.gemfile.lock +17 -15
  30. data/gemfiles/jruby_9.2.0.0_cucumber3.gemfile +3 -2
  31. data/gemfiles/jruby_9.2.0.0_cucumber3.gemfile.lock +19 -17
  32. data/gemfiles/jruby_9.2.0.0_cucumber4.gemfile +3 -2
  33. data/gemfiles/jruby_9.2.0.0_cucumber4.gemfile.lock +20 -18
  34. data/gemfiles/jruby_9.2.0.0_cucumber5.gemfile +3 -2
  35. data/gemfiles/jruby_9.2.0.0_cucumber5.gemfile.lock +20 -18
  36. data/gemfiles/jruby_9.2.0.0_rails5_mysql2.gemfile +4 -3
  37. data/gemfiles/jruby_9.2.0.0_rails5_mysql2.gemfile.lock +59 -57
  38. data/gemfiles/jruby_9.2.0.0_rails5_postgres.gemfile +4 -3
  39. data/gemfiles/jruby_9.2.0.0_rails5_postgres.gemfile.lock +59 -57
  40. data/gemfiles/jruby_9.2.0.0_rails5_postgres_redis.gemfile +4 -3
  41. data/gemfiles/jruby_9.2.0.0_rails5_postgres_redis.gemfile.lock +60 -58
  42. data/gemfiles/jruby_9.2.0.0_rails5_postgres_redis_activesupport.gemfile +4 -3
  43. data/gemfiles/jruby_9.2.0.0_rails5_postgres_redis_activesupport.gemfile.lock +60 -58
  44. data/gemfiles/jruby_9.2.0.0_rails5_postgres_sidekiq.gemfile +4 -3
  45. data/gemfiles/jruby_9.2.0.0_rails5_postgres_sidekiq.gemfile.lock +60 -58
  46. data/gemfiles/jruby_9.2.0.0_rails5_semantic_logger.gemfile +41 -0
  47. data/gemfiles/jruby_9.2.0.0_rails5_semantic_logger.gemfile.lock +272 -0
  48. data/gemfiles/jruby_9.2.0.0_rails61_mysql2.gemfile +3 -2
  49. data/gemfiles/jruby_9.2.0.0_rails61_mysql2.gemfile.lock +78 -76
  50. data/gemfiles/jruby_9.2.0.0_rails61_postgres.gemfile +3 -2
  51. data/gemfiles/jruby_9.2.0.0_rails61_postgres.gemfile.lock +78 -76
  52. data/gemfiles/jruby_9.2.0.0_rails61_postgres_redis.gemfile +3 -2
  53. data/gemfiles/jruby_9.2.0.0_rails61_postgres_redis.gemfile.lock +79 -77
  54. data/gemfiles/jruby_9.2.0.0_rails61_postgres_sidekiq.gemfile +3 -2
  55. data/gemfiles/jruby_9.2.0.0_rails61_postgres_sidekiq.gemfile.lock +79 -77
  56. data/gemfiles/jruby_9.2.0.0_rails61_semantic_logger.gemfile +41 -0
  57. data/gemfiles/jruby_9.2.0.0_rails61_semantic_logger.gemfile.lock +291 -0
  58. data/gemfiles/jruby_9.2.0.0_rails6_mysql2.gemfile +4 -3
  59. data/gemfiles/jruby_9.2.0.0_rails6_mysql2.gemfile.lock +73 -71
  60. data/gemfiles/jruby_9.2.0.0_rails6_postgres.gemfile +4 -3
  61. data/gemfiles/jruby_9.2.0.0_rails6_postgres.gemfile.lock +73 -71
  62. data/gemfiles/jruby_9.2.0.0_rails6_postgres_redis.gemfile +4 -3
  63. data/gemfiles/jruby_9.2.0.0_rails6_postgres_redis.gemfile.lock +74 -72
  64. data/gemfiles/jruby_9.2.0.0_rails6_postgres_redis_activesupport.gemfile +4 -3
  65. data/gemfiles/jruby_9.2.0.0_rails6_postgres_redis_activesupport.gemfile.lock +74 -72
  66. data/gemfiles/jruby_9.2.0.0_rails6_postgres_sidekiq.gemfile +4 -3
  67. data/gemfiles/jruby_9.2.0.0_rails6_postgres_sidekiq.gemfile.lock +74 -72
  68. data/gemfiles/jruby_9.2.0.0_rails6_semantic_logger.gemfile +41 -0
  69. data/gemfiles/jruby_9.2.0.0_rails6_semantic_logger.gemfile.lock +288 -0
  70. data/gemfiles/jruby_9.2.0.0_resque2_redis3.gemfile +3 -2
  71. data/gemfiles/jruby_9.2.0.0_resque2_redis3.gemfile.lock +19 -17
  72. data/gemfiles/jruby_9.2.0.0_resque2_redis4.gemfile +3 -2
  73. data/gemfiles/jruby_9.2.0.0_resque2_redis4.gemfile.lock +20 -18
  74. data/gemfiles/{jruby_9.2.11.1_contrib.gemfile → jruby_9.2.18.0_contrib.gemfile} +4 -1
  75. data/gemfiles/{jruby_9.2.11.1_contrib.gemfile.lock → jruby_9.2.18.0_contrib.gemfile.lock} +223 -170
  76. data/gemfiles/{jruby_9.2.11.1_contrib_old.gemfile → jruby_9.2.18.0_contrib_old.gemfile} +3 -2
  77. data/gemfiles/{jruby_9.2.11.1_contrib_old.gemfile.lock → jruby_9.2.18.0_contrib_old.gemfile.lock} +20 -18
  78. data/gemfiles/{jruby_9.2.11.1_core_old.gemfile → jruby_9.2.18.0_core_old.gemfile} +2 -1
  79. data/gemfiles/{jruby_9.2.11.1_core_old.gemfile.lock → jruby_9.2.18.0_core_old.gemfile.lock} +18 -16
  80. data/gemfiles/{jruby_9.2.11.1_cucumber3.gemfile → jruby_9.2.18.0_cucumber3.gemfile} +3 -2
  81. data/gemfiles/{jruby_9.2.11.1_cucumber3.gemfile.lock → jruby_9.2.18.0_cucumber3.gemfile.lock} +20 -18
  82. data/gemfiles/{jruby_9.2.11.1_cucumber4.gemfile → jruby_9.2.18.0_cucumber4.gemfile} +3 -2
  83. data/gemfiles/{jruby_9.2.11.1_cucumber4.gemfile.lock → jruby_9.2.18.0_cucumber4.gemfile.lock} +21 -19
  84. data/gemfiles/{jruby_9.2.11.1_cucumber5.gemfile → jruby_9.2.18.0_cucumber5.gemfile} +3 -2
  85. data/gemfiles/{jruby_9.2.11.1_cucumber5.gemfile.lock → jruby_9.2.18.0_cucumber5.gemfile.lock} +21 -19
  86. data/gemfiles/{jruby_9.2.11.1_rails5_mysql2.gemfile → jruby_9.2.18.0_rails5_mysql2.gemfile} +4 -3
  87. data/gemfiles/{jruby_9.2.11.1_rails5_mysql2.gemfile.lock → jruby_9.2.18.0_rails5_mysql2.gemfile.lock} +60 -58
  88. data/gemfiles/{jruby_9.2.11.1_rails5_postgres.gemfile → jruby_9.2.18.0_rails5_postgres.gemfile} +4 -3
  89. data/gemfiles/{jruby_9.2.11.1_rails5_postgres_redis_activesupport.gemfile.lock → jruby_9.2.18.0_rails5_postgres.gemfile.lock} +60 -60
  90. data/gemfiles/{jruby_9.2.11.1_rails5_postgres_redis.gemfile → jruby_9.2.18.0_rails5_postgres_redis.gemfile} +4 -3
  91. data/gemfiles/{jruby_9.2.11.1_rails5_postgres_redis.gemfile.lock → jruby_9.2.18.0_rails5_postgres_redis.gemfile.lock} +61 -59
  92. data/gemfiles/{jruby_9.2.11.1_rails5_postgres_redis_activesupport.gemfile → jruby_9.2.18.0_rails5_postgres_redis_activesupport.gemfile} +4 -3
  93. data/gemfiles/{jruby_9.2.11.1_rails5_postgres.gemfile.lock → jruby_9.2.18.0_rails5_postgres_redis_activesupport.gemfile.lock} +62 -58
  94. data/gemfiles/{jruby_9.2.11.1_rails5_postgres_sidekiq.gemfile → jruby_9.2.18.0_rails5_postgres_sidekiq.gemfile} +4 -3
  95. data/gemfiles/{jruby_9.2.11.1_rails5_postgres_sidekiq.gemfile.lock → jruby_9.2.18.0_rails5_postgres_sidekiq.gemfile.lock} +61 -59
  96. data/gemfiles/jruby_9.2.18.0_rails5_semantic_logger.gemfile +41 -0
  97. data/gemfiles/jruby_9.2.18.0_rails5_semantic_logger.gemfile.lock +272 -0
  98. data/gemfiles/{jruby_9.2.11.1_rails61_mysql2.gemfile → jruby_9.2.18.0_rails61_mysql2.gemfile} +3 -2
  99. data/gemfiles/{jruby_9.2.11.1_rails61_mysql2.gemfile.lock → jruby_9.2.18.0_rails61_mysql2.gemfile.lock} +79 -77
  100. data/gemfiles/{jruby_9.2.11.1_rails61_postgres.gemfile → jruby_9.2.18.0_rails61_postgres.gemfile} +3 -2
  101. data/gemfiles/{jruby_9.2.11.1_rails61_postgres.gemfile.lock → jruby_9.2.18.0_rails61_postgres.gemfile.lock} +79 -77
  102. data/gemfiles/{jruby_9.2.11.1_rails61_postgres_redis.gemfile → jruby_9.2.18.0_rails61_postgres_redis.gemfile} +3 -2
  103. data/gemfiles/{jruby_9.2.11.1_rails61_postgres_redis.gemfile.lock → jruby_9.2.18.0_rails61_postgres_redis.gemfile.lock} +80 -78
  104. data/gemfiles/{jruby_9.2.11.1_rails61_postgres_sidekiq.gemfile → jruby_9.2.18.0_rails61_postgres_sidekiq.gemfile} +3 -2
  105. data/gemfiles/{jruby_9.2.11.1_rails61_postgres_sidekiq.gemfile.lock → jruby_9.2.18.0_rails61_postgres_sidekiq.gemfile.lock} +80 -78
  106. data/gemfiles/jruby_9.2.18.0_rails61_semantic_logger.gemfile +41 -0
  107. data/gemfiles/jruby_9.2.18.0_rails61_semantic_logger.gemfile.lock +291 -0
  108. data/gemfiles/{jruby_9.2.11.1_rails6_mysql2.gemfile → jruby_9.2.18.0_rails6_mysql2.gemfile} +4 -3
  109. data/gemfiles/{jruby_9.2.11.1_rails6_mysql2.gemfile.lock → jruby_9.2.18.0_rails6_mysql2.gemfile.lock} +74 -72
  110. data/gemfiles/{jruby_9.2.11.1_rails6_postgres.gemfile → jruby_9.2.18.0_rails6_postgres.gemfile} +4 -3
  111. data/gemfiles/{jruby_9.2.11.1_rails6_postgres.gemfile.lock → jruby_9.2.18.0_rails6_postgres.gemfile.lock} +74 -72
  112. data/gemfiles/{jruby_9.2.11.1_rails6_postgres_redis.gemfile → jruby_9.2.18.0_rails6_postgres_redis.gemfile} +4 -3
  113. data/gemfiles/{jruby_9.2.11.1_rails6_postgres_redis.gemfile.lock → jruby_9.2.18.0_rails6_postgres_redis.gemfile.lock} +75 -73
  114. data/gemfiles/{jruby_9.2.11.1_rails6_postgres_redis_activesupport.gemfile → jruby_9.2.18.0_rails6_postgres_redis_activesupport.gemfile} +4 -3
  115. data/gemfiles/{jruby_9.2.11.1_rails6_postgres_redis_activesupport.gemfile.lock → jruby_9.2.18.0_rails6_postgres_redis_activesupport.gemfile.lock} +75 -73
  116. data/gemfiles/{jruby_9.2.11.1_rails6_postgres_sidekiq.gemfile → jruby_9.2.18.0_rails6_postgres_sidekiq.gemfile} +4 -3
  117. data/gemfiles/{jruby_9.2.11.1_rails6_postgres_sidekiq.gemfile.lock → jruby_9.2.18.0_rails6_postgres_sidekiq.gemfile.lock} +75 -73
  118. data/gemfiles/jruby_9.2.18.0_rails6_semantic_logger.gemfile +41 -0
  119. data/gemfiles/jruby_9.2.18.0_rails6_semantic_logger.gemfile.lock +288 -0
  120. data/gemfiles/{jruby_9.2.11.1_resque2_redis3.gemfile → jruby_9.2.18.0_resque2_redis3.gemfile} +3 -2
  121. data/gemfiles/{jruby_9.2.11.1_resque2_redis3.gemfile.lock → jruby_9.2.18.0_resque2_redis3.gemfile.lock} +20 -18
  122. data/gemfiles/{jruby_9.2.11.1_resque2_redis4.gemfile → jruby_9.2.18.0_resque2_redis4.gemfile} +3 -2
  123. data/gemfiles/{jruby_9.2.11.1_resque2_redis4.gemfile.lock → jruby_9.2.18.0_resque2_redis4.gemfile.lock} +21 -19
  124. data/gemfiles/ruby_2.1.10_contrib_old.gemfile +3 -1
  125. data/gemfiles/ruby_2.1.10_contrib_old.gemfile.lock +14 -9
  126. data/gemfiles/ruby_2.1.10_core_old.gemfile +2 -1
  127. data/gemfiles/ruby_2.1.10_core_old.gemfile.lock +6 -4
  128. data/gemfiles/ruby_2.1.10_rails30_postgres.gemfile +3 -3
  129. data/gemfiles/ruby_2.1.10_rails30_postgres.gemfile.lock +9 -12
  130. data/gemfiles/ruby_2.1.10_rails30_postgres_sidekiq.gemfile +3 -3
  131. data/gemfiles/ruby_2.1.10_rails30_postgres_sidekiq.gemfile.lock +9 -12
  132. data/gemfiles/ruby_2.1.10_rails32_mysql2.gemfile +3 -3
  133. data/gemfiles/ruby_2.1.10_rails32_mysql2.gemfile.lock +9 -12
  134. data/gemfiles/ruby_2.1.10_rails32_postgres.gemfile +3 -3
  135. data/gemfiles/ruby_2.1.10_rails32_postgres.gemfile.lock +9 -12
  136. data/gemfiles/ruby_2.1.10_rails32_postgres_redis.gemfile +3 -3
  137. data/gemfiles/ruby_2.1.10_rails32_postgres_redis.gemfile.lock +9 -12
  138. data/gemfiles/ruby_2.1.10_rails32_postgres_sidekiq.gemfile +3 -3
  139. data/gemfiles/ruby_2.1.10_rails32_postgres_sidekiq.gemfile.lock +9 -12
  140. data/gemfiles/ruby_2.1.10_rails4_mysql2.gemfile +4 -3
  141. data/gemfiles/ruby_2.1.10_rails4_mysql2.gemfile.lock +10 -8
  142. data/gemfiles/ruby_2.1.10_rails4_postgres.gemfile +4 -3
  143. data/gemfiles/ruby_2.1.10_rails4_postgres.gemfile.lock +10 -8
  144. data/gemfiles/ruby_2.1.10_rails4_postgres_redis.gemfile +4 -3
  145. data/gemfiles/ruby_2.1.10_rails4_postgres_redis.gemfile.lock +11 -9
  146. data/gemfiles/ruby_2.1.10_rails4_semantic_logger.gemfile +39 -0
  147. data/gemfiles/ruby_2.1.10_rails4_semantic_logger.gemfile.lock +218 -0
  148. data/gemfiles/ruby_2.2.10_contrib.gemfile +4 -1
  149. data/gemfiles/ruby_2.2.10_contrib.gemfile.lock +188 -139
  150. data/gemfiles/ruby_2.2.10_core_old.gemfile +2 -1
  151. data/gemfiles/ruby_2.2.10_core_old.gemfile.lock +7 -5
  152. data/gemfiles/ruby_2.2.10_rails30_postgres.gemfile +3 -3
  153. data/gemfiles/ruby_2.2.10_rails30_postgres.gemfile.lock +10 -13
  154. data/gemfiles/ruby_2.2.10_rails30_postgres_sidekiq.gemfile +3 -3
  155. data/gemfiles/ruby_2.2.10_rails30_postgres_sidekiq.gemfile.lock +10 -13
  156. data/gemfiles/ruby_2.2.10_rails32_mysql2.gemfile +3 -3
  157. data/gemfiles/ruby_2.2.10_rails32_mysql2.gemfile.lock +10 -13
  158. data/gemfiles/ruby_2.2.10_rails32_postgres.gemfile +3 -3
  159. data/gemfiles/ruby_2.2.10_rails32_postgres.gemfile.lock +10 -13
  160. data/gemfiles/ruby_2.2.10_rails32_postgres_redis.gemfile +3 -3
  161. data/gemfiles/ruby_2.2.10_rails32_postgres_redis.gemfile.lock +10 -13
  162. data/gemfiles/ruby_2.2.10_rails32_postgres_sidekiq.gemfile +3 -3
  163. data/gemfiles/ruby_2.2.10_rails32_postgres_sidekiq.gemfile.lock +10 -13
  164. data/gemfiles/ruby_2.2.10_rails4_mysql2.gemfile +4 -3
  165. data/gemfiles/ruby_2.2.10_rails4_mysql2.gemfile.lock +11 -9
  166. data/gemfiles/ruby_2.2.10_rails4_postgres.gemfile +4 -3
  167. data/gemfiles/ruby_2.2.10_rails4_postgres.gemfile.lock +11 -9
  168. data/gemfiles/ruby_2.2.10_rails4_postgres_redis.gemfile +4 -3
  169. data/gemfiles/ruby_2.2.10_rails4_postgres_redis.gemfile.lock +12 -10
  170. data/gemfiles/ruby_2.2.10_rails4_postgres_sidekiq.gemfile +4 -3
  171. data/gemfiles/ruby_2.2.10_rails4_postgres_sidekiq.gemfile.lock +11 -9
  172. data/gemfiles/ruby_2.2.10_rails4_semantic_logger.gemfile +39 -0
  173. data/gemfiles/ruby_2.2.10_rails4_semantic_logger.gemfile.lock +218 -0
  174. data/gemfiles/ruby_2.2.10_rails5_mysql2.gemfile +4 -3
  175. data/gemfiles/ruby_2.2.10_rails5_mysql2.gemfile.lock +12 -10
  176. data/gemfiles/ruby_2.2.10_rails5_postgres.gemfile +4 -3
  177. data/gemfiles/ruby_2.2.10_rails5_postgres.gemfile.lock +12 -10
  178. data/gemfiles/ruby_2.2.10_rails5_postgres_redis.gemfile +4 -3
  179. data/gemfiles/ruby_2.2.10_rails5_postgres_redis.gemfile.lock +12 -10
  180. data/gemfiles/ruby_2.2.10_rails5_postgres_redis_activesupport.gemfile +4 -3
  181. data/gemfiles/ruby_2.2.10_rails5_postgres_redis_activesupport.gemfile.lock +12 -10
  182. data/gemfiles/ruby_2.2.10_rails5_postgres_sidekiq.gemfile +4 -3
  183. data/gemfiles/ruby_2.2.10_rails5_postgres_sidekiq.gemfile.lock +12 -10
  184. data/gemfiles/ruby_2.2.10_rails5_semantic_logger.gemfile +39 -0
  185. data/gemfiles/ruby_2.2.10_rails5_semantic_logger.gemfile.lock +234 -0
  186. data/gemfiles/ruby_2.3.8_contrib.gemfile +4 -2
  187. data/gemfiles/ruby_2.3.8_contrib.gemfile.lock +197 -148
  188. data/gemfiles/ruby_2.3.8_contrib_old.gemfile +3 -3
  189. data/gemfiles/ruby_2.3.8_contrib_old.gemfile.lock +10 -14
  190. data/gemfiles/ruby_2.3.8_core_old.gemfile +2 -2
  191. data/gemfiles/ruby_2.3.8_core_old.gemfile.lock +8 -12
  192. data/gemfiles/ruby_2.3.8_cucumber3.gemfile +3 -3
  193. data/gemfiles/ruby_2.3.8_cucumber3.gemfile.lock +10 -14
  194. data/gemfiles/ruby_2.3.8_cucumber4.gemfile +3 -3
  195. data/gemfiles/ruby_2.3.8_cucumber4.gemfile.lock +11 -15
  196. data/gemfiles/ruby_2.3.8_rails30_postgres.gemfile +3 -4
  197. data/gemfiles/ruby_2.3.8_rails30_postgres.gemfile.lock +11 -20
  198. data/gemfiles/ruby_2.3.8_rails30_postgres_sidekiq.gemfile +3 -4
  199. data/gemfiles/ruby_2.3.8_rails30_postgres_sidekiq.gemfile.lock +11 -20
  200. data/gemfiles/ruby_2.3.8_rails32_mysql2.gemfile +3 -4
  201. data/gemfiles/ruby_2.3.8_rails32_mysql2.gemfile.lock +11 -20
  202. data/gemfiles/ruby_2.3.8_rails32_postgres.gemfile +3 -4
  203. data/gemfiles/ruby_2.3.8_rails32_postgres.gemfile.lock +11 -20
  204. data/gemfiles/ruby_2.3.8_rails32_postgres_redis.gemfile +3 -4
  205. data/gemfiles/ruby_2.3.8_rails32_postgres_redis.gemfile.lock +11 -20
  206. data/gemfiles/ruby_2.3.8_rails32_postgres_sidekiq.gemfile +3 -4
  207. data/gemfiles/ruby_2.3.8_rails32_postgres_sidekiq.gemfile.lock +11 -20
  208. data/gemfiles/ruby_2.3.8_rails4_mysql2.gemfile +4 -4
  209. data/gemfiles/ruby_2.3.8_rails4_mysql2.gemfile.lock +12 -16
  210. data/gemfiles/ruby_2.3.8_rails4_postgres.gemfile +4 -4
  211. data/gemfiles/ruby_2.3.8_rails4_postgres.gemfile.lock +12 -16
  212. data/gemfiles/ruby_2.3.8_rails4_postgres_redis.gemfile +4 -4
  213. data/gemfiles/ruby_2.3.8_rails4_postgres_redis.gemfile.lock +13 -17
  214. data/gemfiles/ruby_2.3.8_rails4_postgres_sidekiq.gemfile +4 -4
  215. data/gemfiles/ruby_2.3.8_rails4_postgres_sidekiq.gemfile.lock +13 -17
  216. data/gemfiles/ruby_2.3.8_rails4_semantic_logger.gemfile +38 -0
  217. data/gemfiles/ruby_2.3.8_rails4_semantic_logger.gemfile.lock +218 -0
  218. data/gemfiles/ruby_2.3.8_rails5_mysql2.gemfile +4 -4
  219. data/gemfiles/ruby_2.3.8_rails5_mysql2.gemfile.lock +49 -53
  220. data/gemfiles/ruby_2.3.8_rails5_postgres.gemfile +4 -4
  221. data/gemfiles/ruby_2.3.8_rails5_postgres.gemfile.lock +49 -53
  222. data/gemfiles/ruby_2.3.8_rails5_postgres_redis.gemfile +4 -4
  223. data/gemfiles/ruby_2.3.8_rails5_postgres_redis.gemfile.lock +50 -54
  224. data/gemfiles/ruby_2.3.8_rails5_postgres_redis_activesupport.gemfile +4 -4
  225. data/gemfiles/ruby_2.3.8_rails5_postgres_redis_activesupport.gemfile.lock +50 -54
  226. data/gemfiles/ruby_2.3.8_rails5_postgres_sidekiq.gemfile +4 -4
  227. data/gemfiles/ruby_2.3.8_rails5_postgres_sidekiq.gemfile.lock +49 -53
  228. data/gemfiles/ruby_2.3.8_rails5_semantic_logger.gemfile +37 -0
  229. data/gemfiles/ruby_2.3.8_rails5_semantic_logger.gemfile.lock +229 -0
  230. data/gemfiles/ruby_2.3.8_resque2_redis3.gemfile +3 -3
  231. data/gemfiles/ruby_2.3.8_resque2_redis3.gemfile.lock +10 -14
  232. data/gemfiles/ruby_2.3.8_resque2_redis4.gemfile +3 -3
  233. data/gemfiles/ruby_2.3.8_resque2_redis4.gemfile.lock +11 -15
  234. data/gemfiles/{ruby_2.4.6_contrib.gemfile → ruby_2.4.10_contrib.gemfile} +5 -2
  235. data/gemfiles/{ruby_2.4.6_contrib.gemfile.lock → ruby_2.4.10_contrib.gemfile.lock} +232 -149
  236. data/gemfiles/{ruby_2.4.6_contrib_old.gemfile → ruby_2.4.10_contrib_old.gemfile} +3 -2
  237. data/gemfiles/{ruby_2.4.6_contrib_old.gemfile.lock → ruby_2.4.10_contrib_old.gemfile.lock} +13 -11
  238. data/gemfiles/{ruby_2.4.6_core_old.gemfile → ruby_2.4.10_core_old.gemfile} +2 -1
  239. data/gemfiles/{ruby_2.4.6_core_old.gemfile.lock → ruby_2.4.10_core_old.gemfile.lock} +11 -9
  240. data/gemfiles/{ruby_2.4.6_cucumber3.gemfile → ruby_2.4.10_cucumber3.gemfile} +3 -2
  241. data/gemfiles/{ruby_2.4.6_cucumber3.gemfile.lock → ruby_2.4.10_cucumber3.gemfile.lock} +13 -11
  242. data/gemfiles/{ruby_2.4.6_cucumber4.gemfile → ruby_2.4.10_cucumber4.gemfile} +3 -2
  243. data/gemfiles/{ruby_2.4.6_cucumber4.gemfile.lock → ruby_2.4.10_cucumber4.gemfile.lock} +14 -12
  244. data/gemfiles/{ruby_2.4.6_rails5_mysql2.gemfile → ruby_2.4.10_rails5_mysql2.gemfile} +4 -3
  245. data/gemfiles/{ruby_2.4.6_rails5_mysql2.gemfile.lock → ruby_2.4.10_rails5_mysql2.gemfile.lock} +52 -50
  246. data/gemfiles/{ruby_2.4.6_rails5_postgres.gemfile → ruby_2.4.10_rails5_postgres.gemfile} +4 -3
  247. data/gemfiles/{ruby_2.4.6_rails5_postgres_redis_activesupport.gemfile.lock → ruby_2.4.10_rails5_postgres.gemfile.lock} +52 -52
  248. data/gemfiles/{ruby_2.4.6_rails5_postgres_redis.gemfile → ruby_2.4.10_rails5_postgres_redis.gemfile} +4 -3
  249. data/gemfiles/{ruby_2.4.6_rails5_postgres_redis.gemfile.lock → ruby_2.4.10_rails5_postgres_redis.gemfile.lock} +53 -51
  250. data/gemfiles/{ruby_2.4.6_rails5_postgres_redis_activesupport.gemfile → ruby_2.4.10_rails5_postgres_redis_activesupport.gemfile} +4 -3
  251. data/gemfiles/{ruby_2.4.6_rails5_postgres.gemfile.lock → ruby_2.4.10_rails5_postgres_redis_activesupport.gemfile.lock} +54 -50
  252. data/gemfiles/{ruby_2.4.6_rails5_postgres_sidekiq.gemfile → ruby_2.4.10_rails5_postgres_sidekiq.gemfile} +4 -3
  253. data/gemfiles/{ruby_2.4.6_rails5_postgres_sidekiq.gemfile.lock → ruby_2.4.10_rails5_postgres_sidekiq.gemfile.lock} +52 -50
  254. data/gemfiles/ruby_2.4.10_rails5_semantic_logger.gemfile +42 -0
  255. data/gemfiles/ruby_2.4.10_rails5_semantic_logger.gemfile.lock +263 -0
  256. data/gemfiles/{ruby_2.4.6_resque2_redis3.gemfile → ruby_2.4.10_resque2_redis3.gemfile} +3 -2
  257. data/gemfiles/{ruby_2.4.6_resque2_redis3.gemfile.lock → ruby_2.4.10_resque2_redis3.gemfile.lock} +13 -11
  258. data/gemfiles/{ruby_2.4.6_resque2_redis4.gemfile → ruby_2.4.10_resque2_redis4.gemfile} +3 -2
  259. data/gemfiles/{ruby_2.4.6_resque2_redis4.gemfile.lock → ruby_2.4.10_resque2_redis4.gemfile.lock} +14 -12
  260. data/gemfiles/{ruby_2.5.6_contrib.gemfile → ruby_2.5.9_contrib.gemfile} +4 -1
  261. data/gemfiles/{ruby_2.5.6_contrib.gemfile.lock → ruby_2.5.9_contrib.gemfile.lock} +273 -191
  262. data/gemfiles/{ruby_2.5.6_contrib_old.gemfile → ruby_2.5.9_contrib_old.gemfile} +3 -2
  263. data/gemfiles/{ruby_2.5.6_contrib_old.gemfile.lock → ruby_2.5.9_contrib_old.gemfile.lock} +22 -20
  264. data/gemfiles/{ruby_2.5.6_core_old.gemfile → ruby_2.5.9_core_old.gemfile} +2 -1
  265. data/gemfiles/{ruby_2.5.6_core_old.gemfile.lock → ruby_2.5.9_core_old.gemfile.lock} +20 -18
  266. data/gemfiles/{ruby_2.5.6_cucumber3.gemfile → ruby_2.5.9_cucumber3.gemfile} +3 -2
  267. data/gemfiles/{ruby_2.5.6_cucumber3.gemfile.lock → ruby_2.5.9_cucumber3.gemfile.lock} +22 -20
  268. data/gemfiles/{ruby_2.5.6_cucumber4.gemfile → ruby_2.5.9_cucumber4.gemfile} +3 -2
  269. data/gemfiles/{ruby_2.5.6_cucumber4.gemfile.lock → ruby_2.5.9_cucumber4.gemfile.lock} +23 -21
  270. data/gemfiles/{ruby_2.5.6_cucumber5.gemfile → ruby_2.5.9_cucumber5.gemfile} +3 -2
  271. data/gemfiles/{ruby_2.5.6_cucumber5.gemfile.lock → ruby_2.5.9_cucumber5.gemfile.lock} +23 -21
  272. data/gemfiles/{ruby_2.5.6_rails5_mysql2.gemfile → ruby_2.5.9_rails5_mysql2.gemfile} +4 -3
  273. data/gemfiles/{ruby_2.5.6_rails5_mysql2.gemfile.lock → ruby_2.5.9_rails5_mysql2.gemfile.lock} +62 -62
  274. data/gemfiles/{ruby_2.5.6_rails5_postgres.gemfile → ruby_2.5.9_rails5_postgres.gemfile} +4 -3
  275. data/gemfiles/{ruby_2.5.6_rails5_postgres.gemfile.lock → ruby_2.5.9_rails5_postgres.gemfile.lock} +62 -62
  276. data/gemfiles/{ruby_2.5.6_rails5_postgres_redis.gemfile → ruby_2.5.9_rails5_postgres_redis.gemfile} +4 -3
  277. data/gemfiles/{ruby_2.5.6_rails5_postgres_redis.gemfile.lock → ruby_2.5.9_rails5_postgres_redis.gemfile.lock} +63 -63
  278. data/gemfiles/{ruby_2.5.6_rails5_postgres_redis_activesupport.gemfile → ruby_2.5.9_rails5_postgres_redis_activesupport.gemfile} +4 -3
  279. data/gemfiles/{ruby_2.5.6_rails5_postgres_redis_activesupport.gemfile.lock → ruby_2.5.9_rails5_postgres_redis_activesupport.gemfile.lock} +63 -63
  280. data/gemfiles/{ruby_2.5.6_rails5_postgres_sidekiq.gemfile → ruby_2.5.9_rails5_postgres_sidekiq.gemfile} +4 -3
  281. data/gemfiles/{ruby_2.5.6_rails5_postgres_sidekiq.gemfile.lock → ruby_2.5.9_rails5_postgres_sidekiq.gemfile.lock} +63 -63
  282. data/gemfiles/ruby_2.5.9_rails5_semantic_logger.gemfile +45 -0
  283. data/gemfiles/ruby_2.5.9_rails5_semantic_logger.gemfile.lock +275 -0
  284. data/gemfiles/{ruby_2.5.6_rails61_mysql2.gemfile → ruby_2.5.9_rails61_mysql2.gemfile} +3 -2
  285. data/gemfiles/{ruby_2.5.6_rails61_mysql2.gemfile.lock → ruby_2.5.9_rails61_mysql2.gemfile.lock} +81 -81
  286. data/gemfiles/{ruby_2.5.6_rails61_postgres.gemfile → ruby_2.5.9_rails61_postgres.gemfile} +3 -2
  287. data/gemfiles/{ruby_2.5.6_rails61_postgres.gemfile.lock → ruby_2.5.9_rails61_postgres.gemfile.lock} +81 -81
  288. data/gemfiles/{ruby_2.5.6_rails61_postgres_redis.gemfile → ruby_2.5.9_rails61_postgres_redis.gemfile} +3 -2
  289. data/gemfiles/{ruby_2.5.6_rails61_postgres_redis.gemfile.lock → ruby_2.5.9_rails61_postgres_redis.gemfile.lock} +82 -82
  290. data/gemfiles/{ruby_2.5.6_rails61_postgres_sidekiq.gemfile → ruby_2.5.9_rails61_postgres_sidekiq.gemfile} +3 -2
  291. data/gemfiles/{ruby_2.5.6_rails61_postgres_sidekiq.gemfile.lock → ruby_2.5.9_rails61_postgres_sidekiq.gemfile.lock} +82 -82
  292. data/gemfiles/ruby_2.5.9_rails61_semantic_logger.gemfile +45 -0
  293. data/gemfiles/ruby_2.5.9_rails61_semantic_logger.gemfile.lock +294 -0
  294. data/gemfiles/{ruby_2.5.6_rails6_mysql2.gemfile → ruby_2.5.9_rails6_mysql2.gemfile} +4 -3
  295. data/gemfiles/{ruby_2.5.6_rails6_mysql2.gemfile.lock → ruby_2.5.9_rails6_mysql2.gemfile.lock} +76 -76
  296. data/gemfiles/{ruby_2.5.6_rails6_postgres.gemfile → ruby_2.5.9_rails6_postgres.gemfile} +4 -3
  297. data/gemfiles/{ruby_2.5.6_rails6_postgres.gemfile.lock → ruby_2.5.9_rails6_postgres.gemfile.lock} +76 -76
  298. data/gemfiles/{ruby_2.5.6_rails6_postgres_redis_activesupport.gemfile → ruby_2.5.9_rails6_postgres_redis.gemfile} +4 -3
  299. data/gemfiles/{ruby_2.5.6_rails6_postgres_redis.gemfile.lock → ruby_2.5.9_rails6_postgres_redis.gemfile.lock} +77 -77
  300. data/gemfiles/{ruby_2.5.6_rails6_postgres_redis.gemfile → ruby_2.5.9_rails6_postgres_redis_activesupport.gemfile} +4 -3
  301. data/gemfiles/{ruby_2.5.6_rails6_postgres_redis_activesupport.gemfile.lock → ruby_2.5.9_rails6_postgres_redis_activesupport.gemfile.lock} +77 -77
  302. data/gemfiles/{ruby_2.5.6_rails6_postgres_sidekiq.gemfile → ruby_2.5.9_rails6_postgres_sidekiq.gemfile} +4 -3
  303. data/gemfiles/{ruby_2.5.6_rails6_postgres_sidekiq.gemfile.lock → ruby_2.5.9_rails6_postgres_sidekiq.gemfile.lock} +77 -77
  304. data/gemfiles/ruby_2.5.9_rails6_semantic_logger.gemfile +45 -0
  305. data/gemfiles/ruby_2.5.9_rails6_semantic_logger.gemfile.lock +291 -0
  306. data/gemfiles/{ruby_2.5.6_resque2_redis3.gemfile → ruby_2.5.9_resque2_redis3.gemfile} +3 -2
  307. data/gemfiles/{ruby_2.5.6_resque2_redis3.gemfile.lock → ruby_2.5.9_resque2_redis3.gemfile.lock} +22 -20
  308. data/gemfiles/{ruby_2.5.6_resque2_redis4.gemfile → ruby_2.5.9_resque2_redis4.gemfile} +3 -2
  309. data/gemfiles/{ruby_2.5.6_resque2_redis4.gemfile.lock → ruby_2.5.9_resque2_redis4.gemfile.lock} +23 -21
  310. data/gemfiles/{ruby_2.6.4_contrib.gemfile → ruby_2.6.7_contrib.gemfile} +4 -1
  311. data/gemfiles/{ruby_2.7.0_contrib.gemfile.lock → ruby_2.6.7_contrib.gemfile.lock} +280 -197
  312. data/gemfiles/{ruby_2.6.4_contrib_old.gemfile → ruby_2.6.7_contrib_old.gemfile} +3 -2
  313. data/gemfiles/{ruby_2.7.0_contrib_old.gemfile.lock → ruby_2.6.7_contrib_old.gemfile.lock} +26 -24
  314. data/gemfiles/{ruby_2.7.0_core_old.gemfile → ruby_2.6.7_core_old.gemfile} +2 -1
  315. data/gemfiles/{ruby_2.7.0_core_old.gemfile.lock → ruby_2.6.7_core_old.gemfile.lock} +24 -22
  316. data/gemfiles/{ruby_2.7.0_cucumber3.gemfile → ruby_2.6.7_cucumber3.gemfile} +3 -2
  317. data/gemfiles/{ruby_2.7.0_cucumber3.gemfile.lock → ruby_2.6.7_cucumber3.gemfile.lock} +26 -24
  318. data/gemfiles/{ruby_2.6.4_cucumber4.gemfile → ruby_2.6.7_cucumber4.gemfile} +3 -2
  319. data/gemfiles/{ruby_2.7.0_cucumber4.gemfile.lock → ruby_2.6.7_cucumber4.gemfile.lock} +27 -25
  320. data/gemfiles/{ruby_2.6.4_cucumber5.gemfile → ruby_2.6.7_cucumber5.gemfile} +3 -2
  321. data/gemfiles/{ruby_2.7.0_cucumber5.gemfile.lock → ruby_2.6.7_cucumber5.gemfile.lock} +27 -25
  322. data/gemfiles/{ruby_2.6.4_rails5_mysql2.gemfile → ruby_2.6.7_rails5_mysql2.gemfile} +4 -3
  323. data/gemfiles/ruby_2.6.7_rails5_mysql2.gemfile.lock +276 -0
  324. data/gemfiles/{ruby_2.6.4_rails5_postgres.gemfile → ruby_2.6.7_rails5_postgres.gemfile} +4 -3
  325. data/gemfiles/{ruby_2.6.4_rails5_postgres_redis_activesupport.gemfile.lock → ruby_2.6.7_rails5_postgres.gemfile.lock} +62 -64
  326. data/gemfiles/{ruby_2.6.4_rails5_postgres_redis.gemfile → ruby_2.6.7_rails5_postgres_redis.gemfile} +4 -3
  327. data/gemfiles/{ruby_2.6.4_rails5_postgres_redis.gemfile.lock → ruby_2.6.7_rails5_postgres_redis.gemfile.lock} +63 -63
  328. data/gemfiles/{ruby_2.6.4_rails5_postgres_redis_activesupport.gemfile → ruby_2.6.7_rails5_postgres_redis_activesupport.gemfile} +4 -3
  329. data/gemfiles/ruby_2.6.7_rails5_postgres_redis_activesupport.gemfile.lock +278 -0
  330. data/gemfiles/{ruby_2.6.4_rails5_postgres_sidekiq.gemfile → ruby_2.6.7_rails5_postgres_sidekiq.gemfile} +4 -3
  331. data/gemfiles/{ruby_2.7.0_rails5_postgres_sidekiq.gemfile.lock → ruby_2.6.7_rails5_postgres_sidekiq.gemfile.lock} +67 -67
  332. data/gemfiles/ruby_2.6.7_rails5_semantic_logger.gemfile +43 -0
  333. data/gemfiles/ruby_2.6.7_rails5_semantic_logger.gemfile.lock +275 -0
  334. data/gemfiles/{ruby_2.6.4_rails61_mysql2.gemfile → ruby_2.6.7_rails61_mysql2.gemfile} +3 -2
  335. data/gemfiles/ruby_2.6.7_rails61_mysql2.gemfile.lock +295 -0
  336. data/gemfiles/{ruby_2.6.4_rails61_postgres.gemfile → ruby_2.6.7_rails61_postgres.gemfile} +3 -2
  337. data/gemfiles/ruby_2.6.7_rails61_postgres.gemfile.lock +295 -0
  338. data/gemfiles/{ruby_2.7.0_rails61_postgres_redis.gemfile → ruby_2.6.7_rails61_postgres_redis.gemfile} +3 -2
  339. data/gemfiles/ruby_2.6.7_rails61_postgres_redis.gemfile.lock +297 -0
  340. data/gemfiles/{ruby_2.7.0_rails61_postgres_sidekiq.gemfile → ruby_2.6.7_rails61_postgres_sidekiq.gemfile} +3 -2
  341. data/gemfiles/{ruby_3.0.0_rails61_postgres_sidekiq.gemfile.lock → ruby_2.6.7_rails61_postgres_sidekiq.gemfile.lock} +82 -82
  342. data/gemfiles/{ruby_2.6.4_rails61_postgres_sidekiq.gemfile → ruby_2.6.7_rails61_semantic_logger.gemfile} +4 -4
  343. data/gemfiles/ruby_2.6.7_rails61_semantic_logger.gemfile.lock +294 -0
  344. data/gemfiles/{ruby_2.6.4_rails6_mysql2.gemfile → ruby_2.6.7_rails6_mysql2.gemfile} +4 -3
  345. data/gemfiles/ruby_2.6.7_rails6_mysql2.gemfile.lock +292 -0
  346. data/gemfiles/{ruby_2.6.4_rails6_postgres.gemfile → ruby_2.6.7_rails6_postgres.gemfile} +4 -3
  347. data/gemfiles/ruby_2.6.7_rails6_postgres.gemfile.lock +292 -0
  348. data/gemfiles/{ruby_2.6.4_rails6_postgres_redis_activesupport.gemfile → ruby_2.6.7_rails6_postgres_redis.gemfile} +4 -3
  349. data/gemfiles/{ruby_2.6.4_rails6_postgres_redis.gemfile.lock → ruby_2.6.7_rails6_postgres_redis.gemfile.lock} +77 -77
  350. data/gemfiles/{ruby_2.6.4_rails6_postgres_redis.gemfile → ruby_2.6.7_rails6_postgres_redis_activesupport.gemfile} +4 -3
  351. data/gemfiles/{ruby_2.6.4_rails6_postgres_redis_activesupport.gemfile.lock → ruby_2.6.7_rails6_postgres_redis_activesupport.gemfile.lock} +77 -77
  352. data/gemfiles/{ruby_2.6.4_rails6_postgres_sidekiq.gemfile → ruby_2.6.7_rails6_postgres_sidekiq.gemfile} +4 -3
  353. data/gemfiles/{ruby_2.7.0_rails6_postgres_sidekiq.gemfile.lock → ruby_2.6.7_rails6_postgres_sidekiq.gemfile.lock} +81 -81
  354. data/gemfiles/ruby_2.6.7_rails6_semantic_logger.gemfile +43 -0
  355. data/gemfiles/ruby_2.6.7_rails6_semantic_logger.gemfile.lock +291 -0
  356. data/gemfiles/{ruby_2.7.0_resque2_redis3.gemfile → ruby_2.6.7_resque2_redis3.gemfile} +3 -2
  357. data/gemfiles/ruby_2.6.7_resque2_redis3.gemfile.lock +192 -0
  358. data/gemfiles/{ruby_2.7.0_resque2_redis4.gemfile → ruby_2.6.7_resque2_redis4.gemfile} +3 -2
  359. data/gemfiles/ruby_2.6.7_resque2_redis4.gemfile.lock +192 -0
  360. data/gemfiles/{ruby_2.7.0_contrib.gemfile → ruby_2.7.3_contrib.gemfile} +4 -1
  361. data/gemfiles/{ruby_2.6.4_contrib.gemfile.lock → ruby_2.7.3_contrib.gemfile.lock} +230 -174
  362. data/gemfiles/{ruby_2.7.0_contrib_old.gemfile → ruby_2.7.3_contrib_old.gemfile} +3 -2
  363. data/gemfiles/{ruby_2.6.4_contrib_old.gemfile.lock → ruby_2.7.3_contrib_old.gemfile.lock} +21 -19
  364. data/gemfiles/{ruby_2.6.4_core_old.gemfile → ruby_2.7.3_core_old.gemfile} +2 -1
  365. data/gemfiles/{ruby_2.6.4_core_old.gemfile.lock → ruby_2.7.3_core_old.gemfile.lock} +19 -17
  366. data/gemfiles/{ruby_2.6.4_cucumber3.gemfile → ruby_2.7.3_cucumber3.gemfile} +3 -2
  367. data/gemfiles/{ruby_2.6.4_cucumber3.gemfile.lock → ruby_2.7.3_cucumber3.gemfile.lock} +21 -19
  368. data/gemfiles/{ruby_2.7.0_cucumber4.gemfile → ruby_2.7.3_cucumber4.gemfile} +3 -2
  369. data/gemfiles/{ruby_2.6.4_cucumber4.gemfile.lock → ruby_2.7.3_cucumber4.gemfile.lock} +22 -20
  370. data/gemfiles/{ruby_2.7.0_cucumber5.gemfile → ruby_2.7.3_cucumber5.gemfile} +3 -2
  371. data/gemfiles/{ruby_2.6.4_cucumber5.gemfile.lock → ruby_2.7.3_cucumber5.gemfile.lock} +22 -20
  372. data/gemfiles/{ruby_2.7.0_rails5_mysql2.gemfile → ruby_2.7.3_rails5_mysql2.gemfile} +4 -3
  373. data/gemfiles/{ruby_2.6.4_rails5_mysql2.gemfile.lock → ruby_2.7.3_rails5_mysql2.gemfile.lock} +62 -60
  374. data/gemfiles/ruby_2.7.3_rails5_postgres.gemfile +43 -0
  375. data/gemfiles/{ruby_2.6.4_rails5_postgres.gemfile.lock → ruby_2.7.3_rails5_postgres.gemfile.lock} +62 -60
  376. data/gemfiles/{ruby_2.7.0_rails5_postgres_redis.gemfile → ruby_2.7.3_rails5_postgres_redis.gemfile} +4 -3
  377. data/gemfiles/{ruby_2.7.0_rails5_postgres_redis.gemfile.lock → ruby_2.7.3_rails5_postgres_redis.gemfile.lock} +68 -66
  378. data/gemfiles/{ruby_2.7.0_rails5_postgres_redis_activesupport.gemfile → ruby_2.7.3_rails5_postgres_redis_activesupport.gemfile} +4 -3
  379. data/gemfiles/{ruby_2.7.0_rails5_postgres_redis_activesupport.gemfile.lock → ruby_2.7.3_rails5_postgres_redis_activesupport.gemfile.lock} +68 -66
  380. data/gemfiles/{ruby_2.7.0_rails5_postgres_sidekiq.gemfile → ruby_2.7.3_rails5_postgres_sidekiq.gemfile} +4 -3
  381. data/gemfiles/{ruby_2.6.4_rails5_postgres_sidekiq.gemfile.lock → ruby_2.7.3_rails5_postgres_sidekiq.gemfile.lock} +63 -61
  382. data/gemfiles/ruby_2.7.3_rails5_semantic_logger.gemfile +43 -0
  383. data/gemfiles/ruby_2.7.3_rails5_semantic_logger.gemfile.lock +277 -0
  384. data/gemfiles/{ruby_2.7.0_rails61_mysql2.gemfile → ruby_2.7.3_rails61_mysql2.gemfile} +3 -2
  385. data/gemfiles/{ruby_2.6.4_rails61_mysql2.gemfile.lock → ruby_2.7.3_rails61_mysql2.gemfile.lock} +81 -79
  386. data/gemfiles/{ruby_2.7.0_rails61_postgres.gemfile → ruby_2.7.3_rails61_postgres.gemfile} +3 -2
  387. data/gemfiles/{ruby_2.6.4_rails61_postgres.gemfile.lock → ruby_2.7.3_rails61_postgres.gemfile.lock} +81 -79
  388. data/gemfiles/{ruby_2.6.4_rails61_postgres_redis.gemfile → ruby_2.7.3_rails61_postgres_redis.gemfile} +3 -2
  389. data/gemfiles/{ruby_2.6.4_rails61_postgres_redis.gemfile.lock → ruby_2.7.3_rails61_postgres_redis.gemfile.lock} +82 -80
  390. data/gemfiles/{ruby_3.0.0_rails61_postgres_sidekiq.gemfile → ruby_2.7.3_rails61_postgres_sidekiq.gemfile} +3 -3
  391. data/gemfiles/{ruby_2.6.4_rails61_postgres_sidekiq.gemfile.lock → ruby_2.7.3_rails61_postgres_sidekiq.gemfile.lock} +82 -80
  392. data/gemfiles/ruby_2.7.3_rails61_semantic_logger.gemfile +43 -0
  393. data/gemfiles/ruby_2.7.3_rails61_semantic_logger.gemfile.lock +296 -0
  394. data/gemfiles/{ruby_2.7.0_rails6_mysql2.gemfile → ruby_2.7.3_rails6_mysql2.gemfile} +4 -3
  395. data/gemfiles/{ruby_2.6.4_rails6_mysql2.gemfile.lock → ruby_2.7.3_rails6_mysql2.gemfile.lock} +76 -74
  396. data/gemfiles/ruby_2.7.3_rails6_postgres.gemfile +43 -0
  397. data/gemfiles/{ruby_2.6.4_rails6_postgres.gemfile.lock → ruby_2.7.3_rails6_postgres.gemfile.lock} +76 -74
  398. data/gemfiles/{ruby_2.7.0_rails6_postgres_redis.gemfile → ruby_2.7.3_rails6_postgres_redis.gemfile} +4 -3
  399. data/gemfiles/{ruby_2.7.0_rails6_postgres_redis.gemfile.lock → ruby_2.7.3_rails6_postgres_redis.gemfile.lock} +82 -80
  400. data/gemfiles/{ruby_2.7.0_rails6_postgres_redis_activesupport.gemfile → ruby_2.7.3_rails6_postgres_redis_activesupport.gemfile} +4 -3
  401. data/gemfiles/{ruby_2.7.0_rails6_postgres_redis_activesupport.gemfile.lock → ruby_2.7.3_rails6_postgres_redis_activesupport.gemfile.lock} +82 -80
  402. data/gemfiles/{ruby_2.7.0_rails6_postgres_sidekiq.gemfile → ruby_2.7.3_rails6_postgres_sidekiq.gemfile} +4 -3
  403. data/gemfiles/{ruby_2.6.4_rails6_postgres_sidekiq.gemfile.lock → ruby_2.7.3_rails6_postgres_sidekiq.gemfile.lock} +77 -75
  404. data/gemfiles/ruby_2.7.3_rails6_semantic_logger.gemfile +43 -0
  405. data/gemfiles/ruby_2.7.3_rails6_semantic_logger.gemfile.lock +293 -0
  406. data/gemfiles/{ruby_2.6.4_resque2_redis3.gemfile → ruby_2.7.3_resque2_redis3.gemfile} +3 -2
  407. data/gemfiles/{ruby_2.6.4_resque2_redis3.gemfile.lock → ruby_2.7.3_resque2_redis3.gemfile.lock} +21 -19
  408. data/gemfiles/{ruby_2.6.4_resque2_redis4.gemfile → ruby_2.7.3_resque2_redis4.gemfile} +3 -2
  409. data/gemfiles/{ruby_2.6.4_resque2_redis4.gemfile.lock → ruby_2.7.3_resque2_redis4.gemfile.lock} +22 -20
  410. data/gemfiles/{ruby_3.0.0_contrib.gemfile → ruby_3.0.1_contrib.gemfile} +3 -1
  411. data/gemfiles/{ruby_3.0.0_contrib.gemfile.lock → ruby_3.0.1_contrib.gemfile.lock} +215 -172
  412. data/gemfiles/{ruby_3.0.0_core_old.gemfile → ruby_3.0.1_core_old.gemfile} +2 -1
  413. data/gemfiles/{ruby_3.0.0_core_old.gemfile.lock → ruby_3.0.1_core_old.gemfile.lock} +20 -18
  414. data/gemfiles/{ruby_3.0.0_cucumber3.gemfile → ruby_3.0.1_cucumber3.gemfile} +3 -2
  415. data/gemfiles/{ruby_3.0.0_cucumber3.gemfile.lock → ruby_3.0.1_cucumber3.gemfile.lock} +22 -20
  416. data/gemfiles/{ruby_3.0.0_cucumber4.gemfile → ruby_3.0.1_cucumber4.gemfile} +3 -2
  417. data/gemfiles/{ruby_3.0.0_cucumber4.gemfile.lock → ruby_3.0.1_cucumber4.gemfile.lock} +23 -21
  418. data/gemfiles/{ruby_3.0.0_cucumber5.gemfile → ruby_3.0.1_cucumber5.gemfile} +3 -2
  419. data/gemfiles/{ruby_3.0.0_cucumber5.gemfile.lock → ruby_3.0.1_cucumber5.gemfile.lock} +23 -21
  420. data/gemfiles/{ruby_3.0.0_rails61_mysql2.gemfile → ruby_3.0.1_rails61_mysql2.gemfile} +3 -2
  421. data/gemfiles/{ruby_3.0.0_rails61_mysql2.gemfile.lock → ruby_3.0.1_rails61_mysql2.gemfile.lock} +81 -79
  422. data/gemfiles/{ruby_3.0.0_rails61_postgres.gemfile → ruby_3.0.1_rails61_postgres.gemfile} +3 -2
  423. data/gemfiles/{ruby_3.0.0_rails61_postgres.gemfile.lock → ruby_3.0.1_rails61_postgres.gemfile.lock} +81 -79
  424. data/gemfiles/{ruby_3.0.0_rails61_postgres_redis.gemfile → ruby_3.0.1_rails61_postgres_redis.gemfile} +3 -2
  425. data/gemfiles/{ruby_3.0.0_rails61_postgres_redis.gemfile.lock → ruby_3.0.1_rails61_postgres_redis.gemfile.lock} +82 -80
  426. data/gemfiles/ruby_3.0.1_rails61_postgres_sidekiq.gemfile +46 -0
  427. data/gemfiles/{ruby_2.7.0_rails61_postgres_sidekiq.gemfile.lock → ruby_3.0.1_rails61_postgres_sidekiq.gemfile.lock} +95 -86
  428. data/gemfiles/ruby_3.0.1_rails61_semantic_logger.gemfile +44 -0
  429. data/gemfiles/ruby_3.0.1_rails61_semantic_logger.gemfile.lock +296 -0
  430. data/gemfiles/{ruby_3.0.0_resque2_redis3.gemfile → ruby_3.0.1_resque2_redis3.gemfile} +3 -2
  431. data/gemfiles/{ruby_3.0.0_resque2_redis3.gemfile.lock → ruby_3.0.1_resque2_redis3.gemfile.lock} +22 -20
  432. data/gemfiles/{ruby_3.0.0_resque2_redis4.gemfile → ruby_3.0.1_resque2_redis4.gemfile} +3 -2
  433. data/gemfiles/{ruby_3.0.0_resque2_redis4.gemfile.lock → ruby_3.0.1_resque2_redis4.gemfile.lock} +23 -21
  434. data/integration/apps/rspec/bin/setup +6 -0
  435. data/integration/apps/rspec/docker-compose.yml +1 -0
  436. data/integration/images/include/datadog/demo_env.rb +15 -14
  437. data/lib/datadog/ci/contrib/cucumber/configuration/settings.rb +1 -1
  438. data/lib/datadog/ci/contrib/rspec/configuration/settings.rb +1 -1
  439. data/lib/datadog/ci/ext/environment.rb +224 -89
  440. data/lib/datadog/ci/ext/test.rb +7 -1
  441. data/lib/datadog/ci/test.rb +13 -0
  442. data/lib/datadog/core/environment/cgroup.rb +49 -0
  443. data/lib/datadog/core/environment/class_count.rb +19 -0
  444. data/lib/datadog/core/environment/container.rb +88 -0
  445. data/lib/datadog/core/environment/ext.rb +26 -0
  446. data/lib/datadog/core/environment/gc.rb +18 -0
  447. data/lib/datadog/core/environment/identity.rb +50 -0
  448. data/lib/datadog/core/environment/object_space.rb +22 -0
  449. data/lib/datadog/core/environment/socket.rb +16 -0
  450. data/lib/datadog/core/environment/thread_count.rb +18 -0
  451. data/lib/datadog/core/environment/variable_helpers.rb +39 -0
  452. data/lib/ddtrace.rb +2 -0
  453. data/lib/ddtrace/auto_instrument.rb +1 -0
  454. data/lib/ddtrace/buffer.rb +2 -2
  455. data/lib/ddtrace/configuration/base.rb +3 -3
  456. data/lib/ddtrace/configuration/components.rb +33 -4
  457. data/lib/ddtrace/configuration/settings.rb +11 -3
  458. data/lib/ddtrace/contrib/active_record/utils.rb +2 -2
  459. data/lib/ddtrace/contrib/lograge/configuration/settings.rb +18 -0
  460. data/lib/ddtrace/contrib/lograge/ext.rb +10 -0
  461. data/lib/ddtrace/contrib/lograge/instrumentation.rb +38 -0
  462. data/lib/ddtrace/contrib/lograge/integration.rb +45 -0
  463. data/lib/ddtrace/contrib/lograge/patcher.rb +25 -0
  464. data/lib/ddtrace/contrib/rack/middlewares.rb +1 -1
  465. data/lib/ddtrace/contrib/rails/framework.rb +25 -1
  466. data/lib/ddtrace/contrib/rails/log_injection.rb +0 -40
  467. data/lib/ddtrace/contrib/rails/patcher.rb +11 -9
  468. data/lib/ddtrace/contrib/semantic_logger/configuration/settings.rb +18 -0
  469. data/lib/ddtrace/contrib/semantic_logger/ext.rb +10 -0
  470. data/lib/ddtrace/contrib/semantic_logger/instrumentation.rb +42 -0
  471. data/lib/ddtrace/contrib/semantic_logger/integration.rb +47 -0
  472. data/lib/ddtrace/contrib/semantic_logger/patcher.rb +25 -0
  473. data/lib/ddtrace/correlation.rb +1 -1
  474. data/lib/ddtrace/diagnostics/environment_logger.rb +2 -2
  475. data/lib/ddtrace/ext/environment.rb +7 -0
  476. data/lib/ddtrace/ext/git.rb +9 -1
  477. data/lib/ddtrace/ext/runtime.rb +0 -9
  478. data/lib/ddtrace/metrics.rb +54 -28
  479. data/lib/ddtrace/profiling/ext/cpu.rb +16 -1
  480. data/lib/ddtrace/profiling/flush.rb +9 -9
  481. data/lib/ddtrace/profiling/transport/http.rb +7 -7
  482. data/lib/ddtrace/runtime/metrics.rb +18 -10
  483. data/lib/ddtrace/span.rb +17 -6
  484. data/lib/ddtrace/sync_writer.rb +2 -2
  485. data/lib/ddtrace/tracer.rb +4 -12
  486. data/lib/ddtrace/transport/http.rb +7 -7
  487. data/lib/ddtrace/version.rb +1 -1
  488. data/lib/ddtrace/workers/trace_writer.rb +1 -1
  489. data/lib/ddtrace/writer.rb +2 -2
  490. data/tasks/update_appraisal_gemfiles.rake +36 -0
  491. metadata +301 -242
  492. data/gemfiles/ruby_2.7.0_rails5_mysql2.gemfile.lock +0 -276
  493. data/gemfiles/ruby_2.7.0_rails5_postgres.gemfile +0 -42
  494. data/gemfiles/ruby_2.7.0_rails5_postgres.gemfile.lock +0 -276
  495. data/gemfiles/ruby_2.7.0_rails61_mysql2.gemfile.lock +0 -295
  496. data/gemfiles/ruby_2.7.0_rails61_postgres.gemfile.lock +0 -295
  497. data/gemfiles/ruby_2.7.0_rails61_postgres_redis.gemfile.lock +0 -297
  498. data/gemfiles/ruby_2.7.0_rails6_mysql2.gemfile.lock +0 -292
  499. data/gemfiles/ruby_2.7.0_rails6_postgres.gemfile +0 -42
  500. data/gemfiles/ruby_2.7.0_rails6_postgres.gemfile.lock +0 -292
  501. data/gemfiles/ruby_2.7.0_resque2_redis3.gemfile.lock +0 -190
  502. data/gemfiles/ruby_2.7.0_resque2_redis4.gemfile.lock +0 -190
  503. data/lib/ddtrace/environment.rb +0 -41
  504. data/lib/ddtrace/runtime/cgroup.rb +0 -44
  505. data/lib/ddtrace/runtime/class_count.rb +0 -17
  506. data/lib/ddtrace/runtime/container.rb +0 -87
  507. data/lib/ddtrace/runtime/gc.rb +0 -16
  508. data/lib/ddtrace/runtime/identity.rb +0 -48
  509. data/lib/ddtrace/runtime/object_space.rb +0 -19
  510. data/lib/ddtrace/runtime/socket.rb +0 -14
  511. data/lib/ddtrace/runtime/thread_count.rb +0 -16
@@ -13,11 +13,12 @@ gem "memory_profiler", "~> 0.9"
13
13
  gem "minitest", "= 5.10.1"
14
14
  gem "minitest-around", "0.5.0"
15
15
  gem "minitest-stub_any_instance", "1.0.2"
16
+ gem "os", "~> 1.1"
16
17
  gem "pimpmychangelog", ">= 0.1.2"
17
18
  gem "pry"
18
19
  gem "pry-byebug"
19
20
  gem "pry-stack_explorer"
20
- gem "rake", ">= 10.5"
21
+ gem "rake", ">= 10.5", "< 13.0.4"
21
22
  gem "redcarpet", "~> 3.4"
22
23
  gem "rspec", "~> 3.10"
23
24
  gem "rspec-collection_matchers", "~> 1.1"
@@ -32,7 +33,7 @@ gem "yard", "~> 0.9"
32
33
  gem "rubocop", "~> 1.10", require: false
33
34
  gem "rubocop-performance", "~> 1.9", require: false
34
35
  gem "rubocop-rspec", "~> 2.2", require: false
35
- gem "dogstatsd-ruby", ">= 3.3.0"
36
+ gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0"
36
37
  gem "opentracing", ">= 0.4.1"
37
38
  gem "google-protobuf", ["~> 3.0", "!= 3.7.0", "!= 3.7.1"]
38
39
  gem "redis", ">= 4.0"
@@ -24,7 +24,7 @@ GEM
24
24
  rake
25
25
  thor (>= 0.14.0)
26
26
  ast (2.4.2)
27
- benchmark-ips (2.8.4)
27
+ benchmark-ips (2.9.1)
28
28
  benchmark-memory (0.1.2)
29
29
  memory_profiler (~> 0.9)
30
30
  binding_of_caller (1.0.0)
@@ -34,16 +34,16 @@ GEM
34
34
  climate_control (0.2.0)
35
35
  coderay (1.1.3)
36
36
  colorize (0.8.1)
37
- concurrent-ruby (1.1.8)
37
+ concurrent-ruby (1.1.9)
38
38
  crack (0.4.5)
39
39
  rexml
40
40
  cri (2.15.11)
41
41
  debug_inspector (1.1.0)
42
42
  diff-lcs (1.4.4)
43
- docile (1.3.5)
44
- dogstatsd-ruby (5.0.1)
45
- ffi (1.15.0)
46
- google-protobuf (3.15.8-x86_64-linux)
43
+ docile (1.4.0)
44
+ dogstatsd-ruby (4.8.3)
45
+ ffi (1.15.3)
46
+ google-protobuf (3.17.3-x86_64-linux)
47
47
  hashdiff (1.0.1)
48
48
  memory_profiler (0.9.14)
49
49
  method_source (1.0.0)
@@ -57,8 +57,9 @@ GEM
57
57
  mustermann (1.1.1)
58
58
  ruby2_keywords (~> 0.0.1)
59
59
  opentracing (0.5.0)
60
+ os (1.1.1)
60
61
  parallel (1.20.1)
61
- parser (3.0.1.0)
62
+ parser (3.0.1.1)
62
63
  ast (~> 2.4.1)
63
64
  pimpmychangelog (0.1.3)
64
65
  pry (0.14.1)
@@ -76,7 +77,7 @@ GEM
76
77
  rainbow (3.0.0)
77
78
  rake (13.0.3)
78
79
  redcarpet (3.5.1)
79
- redis (4.2.5)
80
+ redis (4.3.1)
80
81
  redis-namespace (1.8.1)
81
82
  redis (>= 3.0.4)
82
83
  regexp_parser (2.1.1)
@@ -104,31 +105,31 @@ GEM
104
105
  rspec-support (3.10.2)
105
106
  rspec_junit_formatter (0.4.1)
106
107
  rspec-core (>= 2, < 4, != 2.12.0)
107
- rspec_n (1.3.0)
108
+ rspec_n (1.4.0)
108
109
  colorize (~> 0.8.0)
109
110
  cri (~> 2.15.3)
110
- rubocop (1.12.1)
111
+ rubocop (1.18.3)
111
112
  parallel (~> 1.10)
112
113
  parser (>= 3.0.0.0)
113
114
  rainbow (>= 2.2.2, < 4.0)
114
115
  regexp_parser (>= 1.8, < 3.0)
115
116
  rexml
116
- rubocop-ast (>= 1.2.0, < 2.0)
117
+ rubocop-ast (>= 1.7.0, < 2.0)
117
118
  ruby-progressbar (~> 1.7)
118
119
  unicode-display_width (>= 1.4.0, < 3.0)
119
- rubocop-ast (1.4.1)
120
- parser (>= 2.7.1.5)
121
- rubocop-performance (1.10.2)
122
- rubocop (>= 0.90.0, < 2.0)
120
+ rubocop-ast (1.7.0)
121
+ parser (>= 3.0.1.1)
122
+ rubocop-performance (1.11.3)
123
+ rubocop (>= 1.7.0, < 2.0)
123
124
  rubocop-ast (>= 0.4.0)
124
- rubocop-rspec (2.2.0)
125
+ rubocop-rspec (2.4.0)
125
126
  rubocop (~> 1.0)
126
127
  rubocop-ast (>= 1.1.0)
127
128
  ruby-prof (1.4.3)
128
129
  ruby-progressbar (1.11.0)
129
130
  ruby2_keywords (0.0.4)
130
131
  simplecov-html (0.12.3)
131
- simplecov_json_formatter (0.1.2)
132
+ simplecov_json_formatter (0.1.3)
132
133
  sinatra (2.1.0)
133
134
  mustermann (~> 1.0)
134
135
  rack (~> 2.2)
@@ -140,7 +141,7 @@ GEM
140
141
  vegas (0.1.11)
141
142
  rack (>= 1.0.0)
142
143
  warning (1.2.0)
143
- webmock (3.12.2)
144
+ webmock (3.13.0)
144
145
  addressable (>= 2.3.6)
145
146
  crack (>= 0.3.2)
146
147
  hashdiff (>= 0.4.0, < 2.0.0)
@@ -159,18 +160,19 @@ DEPENDENCIES
159
160
  climate_control (~> 0.2.0)
160
161
  concurrent-ruby
161
162
  ddtrace!
162
- dogstatsd-ruby (>= 3.3.0)
163
+ dogstatsd-ruby (>= 3.3.0, != 5.1.0, != 5.0.1, != 5.0.0)
163
164
  google-protobuf (~> 3.0, != 3.7.1, != 3.7.0)
164
165
  memory_profiler (~> 0.9)
165
166
  minitest (= 5.10.1)
166
167
  minitest-around (= 0.5.0)
167
168
  minitest-stub_any_instance (= 1.0.2)
168
169
  opentracing (>= 0.4.1)
170
+ os (~> 1.1)
169
171
  pimpmychangelog (>= 0.1.2)
170
172
  pry
171
173
  pry-byebug
172
174
  pry-stack_explorer
173
- rake (>= 10.5)
175
+ rake (>= 10.5, < 13.0.4)
174
176
  redcarpet (~> 3.4)
175
177
  redis (>= 4.0)
176
178
  resque (>= 2.0)
@@ -189,4 +191,4 @@ DEPENDENCIES
189
191
  yard (~> 0.9)
190
192
 
191
193
  BUNDLED WITH
192
- 2.2.4
194
+ 2.2.19
@@ -14,4 +14,10 @@ chdir APP_ROOT do
14
14
  puts "\n== Installing dependencies =="
15
15
  system! 'gem install bundler --conservative'
16
16
  system('bundle check') || system!('bundle install')
17
+
18
+ # Create an non-trivial git repository, to augment test payload information.
19
+ system! 'git init'
20
+ system! 'GIT_AUTHOR_NAME="Test Author" GIT_AUTHOR_EMAIL=author@local.test ' \
21
+ 'GIT_COMMITTER_NAME="Test Committer" GIT_COMMITTER_EMAIL=committer@local.test ' \
22
+ 'git commit --allow-empty -m "Test message"'
17
23
  end
@@ -27,6 +27,7 @@ services:
27
27
  tty: true
28
28
  volumes:
29
29
  - .:/app
30
+ - /app/.git
30
31
  - ./data/app:/data/app
31
32
  - bundle:/usr/local/bundle
32
33
  - ../../images/include:/vendor/dd-demo
@@ -1,15 +1,16 @@
1
1
  module Datadog
2
+ # Helpers to read the application environment
2
3
  module DemoEnv
3
4
  module_function
4
5
 
5
6
  def gem_spec(gem_name, defaults = {})
6
- args = if local_gem(gem_name)
7
- [local_gem(gem_name)]
8
- elsif git_gem(gem_name)
9
- [git_gem(gem_name)]
10
- else
11
- []
12
- end
7
+ args = if local_gem(gem_name)
8
+ [local_gem(gem_name)]
9
+ elsif git_gem(gem_name)
10
+ [git_gem(gem_name)]
11
+ else
12
+ []
13
+ end
13
14
 
14
15
  yield(args) if block_given?
15
16
 
@@ -17,7 +18,7 @@ module Datadog
17
18
  end
18
19
 
19
20
  def gem_env_name(gem_name)
20
- gem_name.upcase.gsub('-', '_')
21
+ gem_name.upcase.tr('-', '_')
21
22
  end
22
23
 
23
24
  def local_gem(gem_name)
@@ -55,11 +56,11 @@ module Datadog
55
56
  puts "Features: #{features}"
56
57
  puts "Rails env: #{ENV['RAILS_ENV']}" if ENV['RAILS_ENV']
57
58
  puts "PID: #{Process.pid}"
58
- if ddtrace = Gem.loaded_specs['ddtrace']
59
- puts "Runtime ID: #{Datadog::Runtime::Identity.id}" if defined?(Datadog::Runtime::Identity)
59
+ if (ddtrace = Gem.loaded_specs['ddtrace'])
60
+ puts "Runtime ID: #{Datadog::Core::Environment::Identity.id}" if defined?(Datadog::Core::Environment::Identity)
60
61
  puts "ddtrace version: #{ddtrace.version}"
61
62
  puts "ddtrace path: #{ddtrace.full_gem_path}"
62
- if git_spec = git_gem('ddtrace')
63
+ if (git_spec = git_gem('ddtrace'))
63
64
  puts "ddtrace git: #{git_spec[:git]}"
64
65
  puts "ddtrace ref: #{git_spec[:ref]}"
65
66
  end
@@ -69,10 +70,10 @@ module Datadog
69
70
 
70
71
  def profiler_file_transport(dump_path = "/data/profile-pid-#{Process.pid}.pprof")
71
72
  Datadog::Profiling::Transport::IO.default(
72
- write: ->(out, data) do
73
+ write: lambda do |_out, data|
73
74
  result = nil
74
75
  puts "Writing pprof #{dump_path}..."
75
- File.open(dump_path, "w") { |f| result = f.write(data) }
76
+ File.open(dump_path, 'w') { |f| result = f.write(data) }
76
77
  puts "Pprof #{dump_path} written!"
77
78
  result
78
79
  end
@@ -86,7 +87,7 @@ module Datadog
86
87
 
87
88
  def finish_mem_dump!(dump_path = "/data/mem-pid-#{Process.pid}.dump")
88
89
  File.delete(dump_path) if File.exist?(dump_path)
89
- File.open(dump_path, "w") do |io|
90
+ File.open(dump_path, 'w') do |io|
90
91
  ObjectSpace.dump_all(output: io)
91
92
  end
92
93
  end
@@ -14,7 +14,7 @@ module Datadog
14
14
  end
15
15
 
16
16
  option :service_name do |o|
17
- o.default { Datadog.configuration.service || Ext::SERVICE_NAME }
17
+ o.default { Datadog.configuration.service_without_fallback || Ext::SERVICE_NAME }
18
18
  o.lazy
19
19
  end
20
20
 
@@ -14,7 +14,7 @@ module Datadog
14
14
  end
15
15
 
16
16
  option :service_name do |o|
17
- o.default { Datadog.configuration.service || Ext::SERVICE_NAME }
17
+ o.default { Datadog.configuration.service_without_fallback || Ext::SERVICE_NAME }
18
18
  o.lazy
19
19
  end
20
20
 
@@ -1,53 +1,65 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'ddtrace/ext/git'
2
4
 
5
+ require 'open3'
6
+
3
7
  module Datadog
4
8
  module CI
5
9
  module Ext
6
10
  # Defines constants for CI tags
7
11
  # rubocop:disable Metrics/ModuleLength:
8
12
  module Environment
9
- TAG_STAGE_NAME = 'ci.stage.name'.freeze
10
- TAG_JOB_NAME = 'ci.job.name'.freeze
11
- TAG_JOB_URL = 'ci.job.url'.freeze
12
- TAG_PIPELINE_ID = 'ci.pipeline.id'.freeze
13
- TAG_PIPELINE_NAME = 'ci.pipeline.name'.freeze
14
- TAG_PIPELINE_NUMBER = 'ci.pipeline.number'.freeze
15
- TAG_PIPELINE_URL = 'ci.pipeline.url'.freeze
16
- TAG_PROVIDER_NAME = 'ci.provider.name'.freeze
17
- TAG_WORKSPACE_PATH = 'ci.workspace_path'.freeze
13
+ TAG_JOB_NAME = 'ci.job.name'
14
+ TAG_JOB_URL = 'ci.job.url'
15
+ TAG_PIPELINE_ID = 'ci.pipeline.id'
16
+ TAG_PIPELINE_NAME = 'ci.pipeline.name'
17
+ TAG_PIPELINE_NUMBER = 'ci.pipeline.number'
18
+ TAG_PIPELINE_URL = 'ci.pipeline.url'
19
+ TAG_PROVIDER_NAME = 'ci.provider.name'
20
+ TAG_STAGE_NAME = 'ci.stage.name'
21
+ TAG_WORKSPACE_PATH = 'ci.workspace_path'
18
22
 
19
23
  PROVIDERS = [
20
- ['APPVEYOR'.freeze, :extract_appveyor],
21
- ['TF_BUILD'.freeze, :extract_azure_pipelines],
22
- ['BITBUCKET_COMMIT'.freeze, :extract_bitbucket],
23
- ['BUILDKITE'.freeze, :extract_buildkite],
24
- ['CIRCLECI'.freeze, :extract_circle_ci],
25
- ['GITHUB_SHA'.freeze, :extract_github_actions],
26
- ['GITLAB_CI'.freeze, :extract_gitlab],
27
- ['JENKINS_URL'.freeze, :extract_jenkins],
28
- ['TEAMCITY_VERSION'.freeze, :extract_teamcity],
29
- ['TRAVIS'.freeze, :extract_travis],
30
- ['BITRISE_BUILD_SLUG'.freeze, :extract_bitrise]
24
+ ['APPVEYOR', :extract_appveyor],
25
+ ['TF_BUILD', :extract_azure_pipelines],
26
+ ['BITBUCKET_COMMIT', :extract_bitbucket],
27
+ ['BUILDKITE', :extract_buildkite],
28
+ ['CIRCLECI', :extract_circle_ci],
29
+ ['GITHUB_SHA', :extract_github_actions],
30
+ ['GITLAB_CI', :extract_gitlab],
31
+ ['JENKINS_URL', :extract_jenkins],
32
+ ['TEAMCITY_VERSION', :extract_teamcity],
33
+ ['TRAVIS', :extract_travis],
34
+ ['BITRISE_BUILD_SLUG', :extract_bitrise]
31
35
  ].freeze
32
36
 
33
37
  module_function
34
38
 
35
39
  def tags(env)
36
- provider = PROVIDERS.find { |c| env.key? c[0] }
37
- return {} if provider.nil?
40
+ _, extractor = PROVIDERS.find { |provider_env_var, _| env.key?(provider_env_var) }
41
+ if extractor
42
+ tags = public_send(extractor, env)
38
43
 
39
- tags = send(provider[1], env)
44
+ tags[Datadog::Ext::Git::TAG_TAG] = normalize_ref(tags[Datadog::Ext::Git::TAG_TAG])
45
+ tags.delete(Datadog::Ext::Git::TAG_BRANCH) unless tags[Datadog::Ext::Git::TAG_TAG].nil?
46
+ tags[Datadog::Ext::Git::TAG_BRANCH] = normalize_ref(tags[Datadog::Ext::Git::TAG_BRANCH])
47
+ tags[Datadog::Ext::Git::TAG_REPOSITORY_URL] = filter_sensitive_info(tags[Datadog::Ext::Git::TAG_REPOSITORY_URL])
40
48
 
41
- tags[Datadog::Ext::Git::TAG_TAG] = normalize_ref(tags[Datadog::Ext::Git::TAG_TAG])
42
- tags.delete(Datadog::Ext::Git::TAG_BRANCH) unless tags[Datadog::Ext::Git::TAG_TAG].nil?
43
- tags[Datadog::Ext::Git::TAG_BRANCH] = normalize_ref(tags[Datadog::Ext::Git::TAG_BRANCH])
44
- tags[Datadog::Ext::Git::TAG_REPOSITORY_URL] = filter_sensitive_info(tags[Datadog::Ext::Git::TAG_REPOSITORY_URL])
49
+ # Expand ~
50
+ workspace_path = tags[TAG_WORKSPACE_PATH]
51
+ if !workspace_path.nil? && (workspace_path == '~' || workspace_path.start_with?('~/'))
52
+ tags[TAG_WORKSPACE_PATH] = File.expand_path(workspace_path)
53
+ end
54
+ else
55
+ tags = {}
56
+ end
45
57
 
46
- # Expand ~
47
- workspace_path = tags[TAG_WORKSPACE_PATH]
48
- if !workspace_path.nil? && (workspace_path == '~' || workspace_path.start_with?('~/'))
49
- tags[TAG_WORKSPACE_PATH] = File.expand_path(workspace_path)
58
+ # Fill out tags from local git as fallback
59
+ extract_local_git.each do |key, value|
60
+ tags[key] ||= value
50
61
  end
62
+
51
63
  tags.reject { |_, v| v.nil? }
52
64
  end
53
65
 
@@ -85,44 +97,45 @@ module Datadog
85
97
  TAG_PIPELINE_URL => url,
86
98
  TAG_JOB_URL => url,
87
99
  Datadog::Ext::Git::TAG_BRANCH => branch,
88
- Datadog::Ext::Git::TAG_TAG => tag
100
+ Datadog::Ext::Git::TAG_TAG => tag,
101
+ Datadog::Ext::Git::TAG_COMMIT_AUTHOR_NAME => env['APPVEYOR_REPO_COMMIT_AUTHOR'],
102
+ Datadog::Ext::Git::TAG_COMMIT_AUTHOR_EMAIL => env['APPVEYOR_REPO_COMMIT_AUTHOR_EMAIL'],
103
+ Datadog::Ext::Git::TAG_COMMIT_MESSAGE => env['APPVEYOR_REPO_COMMIT_MESSAGE_EXTENDED']
89
104
  }
90
105
  end
91
106
 
92
107
  def extract_azure_pipelines(env)
93
- if env['SYSTEM_TEAMFOUNDATIONSERVERURI'] && env['SYSTEM_TEAMPROJECTID'] && env['BUILD_BUILDID']
94
- base_url = "#{env['SYSTEM_TEAMFOUNDATIONSERVERURI']}#{env['SYSTEM_TEAMPROJECTID']}" \
95
- "/_build/results?buildId=#{env['BUILD_BUILDID']}"
96
- pipeline_url = base_url
97
- job_url = base_url + "&view=logs&j=#{env['SYSTEM_JOBID']}&t=#{env['SYSTEM_TASKINSTANCEID']}"
98
- else
99
- pipeline_url = job_url = nil
100
- end
101
- branch_or_tag = (
102
- env['SYSTEM_PULLREQUEST_SOURCEBRANCH'] || env['BUILD_SOURCEBRANCH'] || env['BUILD_SOURCEBRANCHNAME']
103
- )
104
- if branch_or_tag.include? 'tags/'
105
- branch = nil
106
- tag = branch_or_tag
107
- else
108
- branch = branch_or_tag
109
- tag = nil
108
+ build_id = env['BUILD_BUILDID']
109
+
110
+ if build_id &&
111
+ (team_foundation_server_uri = env['SYSTEM_TEAMFOUNDATIONSERVERURI']) &&
112
+ (team_project_id = env['SYSTEM_TEAMPROJECTID'])
113
+
114
+ pipeline_url = "#{team_foundation_server_uri}#{team_project_id}/_build/results?buildId=#{build_id}"
115
+
116
+ job_url = "#{pipeline_url}&view=logs&j=#{env['SYSTEM_JOBID']}&t=#{env['SYSTEM_TASKINSTANCEID']}"
110
117
  end
118
+
119
+ branch, tag = branch_or_tag(env['SYSTEM_PULLREQUEST_SOURCEBRANCH'] ||
120
+ env['BUILD_SOURCEBRANCH'] ||
121
+ env['BUILD_SOURCEBRANCHNAME'])
122
+
111
123
  {
112
124
  TAG_PROVIDER_NAME => 'azurepipelines',
113
125
  TAG_WORKSPACE_PATH => env['BUILD_SOURCESDIRECTORY'],
114
- TAG_PIPELINE_ID => env['BUILD_BUILDID'],
126
+ TAG_PIPELINE_ID => build_id,
115
127
  TAG_PIPELINE_NAME => env['BUILD_DEFINITIONNAME'],
116
- TAG_PIPELINE_NUMBER => env['BUILD_BUILDID'],
128
+ TAG_PIPELINE_NUMBER => build_id,
117
129
  TAG_PIPELINE_URL => pipeline_url,
118
130
  TAG_JOB_URL => job_url,
119
- Datadog::Ext::Git::TAG_REPOSITORY_URL => (
120
- env['SYSTEM_PULLREQUEST_SOURCEREPOSITORYURI'] \
121
- || env['BUILD_REPOSITORY_URI']
122
- ),
123
- Datadog::Ext::Git::TAG_COMMIT_SHA => (env['SYSTEM_PULLREQUEST_SOURCECOMMITID'] || env['BUILD_SOURCEVERSION']),
131
+ Datadog::Ext::Git::TAG_REPOSITORY_URL =>
132
+ env['SYSTEM_PULLREQUEST_SOURCEREPOSITORYURI'] || env['BUILD_REPOSITORY_URI'],
133
+ Datadog::Ext::Git::TAG_COMMIT_SHA => env['SYSTEM_PULLREQUEST_SOURCECOMMITID'] || env['BUILD_SOURCEVERSION'],
124
134
  Datadog::Ext::Git::TAG_BRANCH => branch,
125
- Datadog::Ext::Git::TAG_TAG => tag
135
+ Datadog::Ext::Git::TAG_TAG => tag,
136
+ Datadog::Ext::Git::TAG_COMMIT_AUTHOR_NAME => env['BUILD_REQUESTEDFORID'],
137
+ Datadog::Ext::Git::TAG_COMMIT_AUTHOR_EMAIL => env['BUILD_REQUESTEDFOREMAIL'],
138
+ Datadog::Ext::Git::TAG_COMMIT_MESSAGE => env['BUILD_SOURCEVERSIONMESSAGE']
126
139
  }
127
140
  end
128
141
 
@@ -135,12 +148,15 @@ module Datadog
135
148
  Datadog::Ext::Git::TAG_REPOSITORY_URL => env['BITBUCKET_GIT_SSH_ORIGIN'],
136
149
  Datadog::Ext::Git::TAG_TAG => env['BITBUCKET_TAG'],
137
150
  TAG_JOB_URL => url,
138
- TAG_PIPELINE_ID => env['BITBUCKET_PIPELINE_UUID'] ? env['BITBUCKET_PIPELINE_UUID'].tr('{}', '') : None,
151
+ TAG_PIPELINE_ID => env['BITBUCKET_PIPELINE_UUID'] ? env['BITBUCKET_PIPELINE_UUID'].tr('{}', '') : nil,
139
152
  TAG_PIPELINE_NAME => env['BITBUCKET_REPO_FULL_NAME'],
140
153
  TAG_PIPELINE_NUMBER => env['BITBUCKET_BUILD_NUMBER'],
141
154
  TAG_PIPELINE_URL => url,
142
155
  TAG_PROVIDER_NAME => 'bitbucket',
143
- TAG_WORKSPACE_PATH => env['BITBUCKET_CLONE_DIR']
156
+ TAG_WORKSPACE_PATH => env['BITBUCKET_CLONE_DIR'],
157
+ Datadog::Ext::Git::TAG_COMMIT_AUTHOR_NAME => env['BUILD_REQUESTEDFORID'],
158
+ Datadog::Ext::Git::TAG_COMMIT_AUTHOR_EMAIL => env['BUILD_REQUESTEDFOREMAIL'],
159
+ Datadog::Ext::Git::TAG_COMMIT_MESSAGE => env['BUILD_SOURCEVERSIONMESSAGE']
144
160
  }
145
161
  end
146
162
 
@@ -156,7 +172,10 @@ module Datadog
156
172
  TAG_PIPELINE_URL => env['BUILDKITE_BUILD_URL'],
157
173
  TAG_JOB_URL => "#{env['BUILDKITE_BUILD_URL']}##{env['BUILDKITE_JOB_ID']}",
158
174
  TAG_PROVIDER_NAME => 'buildkite',
159
- TAG_WORKSPACE_PATH => env['BUILDKITE_BUILD_CHECKOUT_PATH']
175
+ TAG_WORKSPACE_PATH => env['BUILDKITE_BUILD_CHECKOUT_PATH'],
176
+ Datadog::Ext::Git::TAG_COMMIT_AUTHOR_NAME => env['BUILDKITE_BUILD_AUTHOR'],
177
+ Datadog::Ext::Git::TAG_COMMIT_AUTHOR_EMAIL => env['BUILDKITE_BUILD_AUTHOR_EMAIL'],
178
+ Datadog::Ext::Git::TAG_COMMIT_MESSAGE => env['BUILDKITE_MESSAGE']
160
179
  }
161
180
  end
162
181
 
@@ -168,23 +187,20 @@ module Datadog
168
187
  Datadog::Ext::Git::TAG_TAG => env['CIRCLE_TAG'],
169
188
  TAG_PIPELINE_ID => env['CIRCLE_WORKFLOW_ID'],
170
189
  TAG_PIPELINE_NAME => env['CIRCLE_PROJECT_REPONAME'],
171
- TAG_PIPELINE_NUMBER => env['CIRCLE_BUILD_NUM'],
172
- TAG_PIPELINE_URL => env['CIRCLE_BUILD_URL'],
190
+ TAG_PIPELINE_URL => "https://app.circleci.com/pipelines/workflows/#{env['CIRCLE_WORKFLOW_ID']}",
191
+ TAG_JOB_NAME => env['CIRCLE_JOB'],
173
192
  TAG_JOB_URL => env['CIRCLE_BUILD_URL'],
174
193
  TAG_PROVIDER_NAME => 'circleci',
175
- TAG_WORKSPACE_PATH => env['CIRCLE_WORKING_DIRECTORY']
194
+ TAG_WORKSPACE_PATH => env['CIRCLE_WORKING_DIRECTORY'],
195
+ Datadog::Ext::Git::TAG_COMMIT_AUTHOR_NAME => env['BUILD_REQUESTEDFORID'],
196
+ Datadog::Ext::Git::TAG_COMMIT_AUTHOR_EMAIL => env['BUILD_REQUESTEDFOREMAIL'],
197
+ Datadog::Ext::Git::TAG_COMMIT_MESSAGE => env['BUILD_SOURCEVERSIONMESSAGE']
176
198
  }
177
199
  end
178
200
 
179
201
  def extract_github_actions(env)
180
- branch_or_tag = (env['GITHUB_HEAD_REF'] || env['GITHUB_REF'])
181
- if branch_or_tag.include? 'tags/'
182
- branch = nil
183
- tag = branch_or_tag
184
- else
185
- branch = branch_or_tag
186
- tag = nil
187
- end
202
+ branch, tag = branch_or_tag(env['GITHUB_HEAD_REF'] || env['GITHUB_REF'])
203
+
188
204
  {
189
205
  Datadog::Ext::Git::TAG_BRANCH => branch,
190
206
  Datadog::Ext::Git::TAG_COMMIT_SHA => env['GITHUB_SHA'],
@@ -196,13 +212,15 @@ module Datadog
196
212
  TAG_PIPELINE_NUMBER => env['GITHUB_RUN_NUMBER'],
197
213
  TAG_PIPELINE_URL => "https://github.com/#{env['GITHUB_REPOSITORY']}/commit/#{env['GITHUB_SHA']}/checks",
198
214
  TAG_PROVIDER_NAME => 'github',
199
- TAG_WORKSPACE_PATH => env['GITHUB_WORKSPACE']
215
+ TAG_WORKSPACE_PATH => env['GITHUB_WORKSPACE'],
216
+ Datadog::Ext::Git::TAG_COMMIT_AUTHOR_NAME => env['BUILD_REQUESTEDFORID'],
217
+ Datadog::Ext::Git::TAG_COMMIT_AUTHOR_EMAIL => env['BUILD_REQUESTEDFOREMAIL'],
218
+ Datadog::Ext::Git::TAG_COMMIT_MESSAGE => env['BUILD_SOURCEVERSIONMESSAGE']
200
219
  }
201
220
  end
202
221
 
203
222
  def extract_gitlab(env)
204
223
  url = env['CI_PIPELINE_URL']
205
- url = url.gsub(%r{/-/pipelines/}, '/pipelines/') unless url.nil?
206
224
  {
207
225
  Datadog::Ext::Git::TAG_BRANCH => env['CI_COMMIT_BRANCH'],
208
226
  Datadog::Ext::Git::TAG_COMMIT_SHA => env['CI_COMMIT_SHA'],
@@ -214,24 +232,20 @@ module Datadog
214
232
  TAG_PIPELINE_ID => env['CI_PIPELINE_ID'],
215
233
  TAG_PIPELINE_NAME => env['CI_PROJECT_PATH'],
216
234
  TAG_PIPELINE_NUMBER => env['CI_PIPELINE_IID'],
217
- TAG_PIPELINE_URL => url,
235
+ TAG_PIPELINE_URL => (url.gsub(%r{/-/pipelines/}, '/pipelines/') if url),
218
236
  TAG_PROVIDER_NAME => 'gitlab',
219
- TAG_WORKSPACE_PATH => env['CI_PROJECT_DIR']
237
+ TAG_WORKSPACE_PATH => env['CI_PROJECT_DIR'],
238
+ Datadog::Ext::Git::TAG_COMMIT_MESSAGE => env['CI_COMMIT_MESSAGE']
220
239
  }
221
240
  end
222
241
 
223
242
  def extract_jenkins(env)
224
- branch_or_tag = env['GIT_BRANCH']
225
- if branch_or_tag.include? 'tags/'
226
- branch = nil
227
- tag = branch_or_tag
228
- else
229
- branch = branch_or_tag
230
- tag = nil
243
+ branch, tag = branch_or_tag(env['GIT_BRANCH'])
244
+
245
+ if (name = env['JOB_NAME'])
246
+ name = name.gsub("/#{normalize_ref(branch)}", '') if branch
247
+ name = name.split('/').reject { |v| v.nil? || v.include?('=') }.join('/')
231
248
  end
232
- name = env['JOB_NAME']
233
- name = name.gsub("/#{normalize_ref(branch)}", '') unless name.nil? || branch.nil?
234
- name = name.split('/').reject { |v| v.nil? || v.include?('=') }.join('/') unless name.nil?
235
249
  {
236
250
  Datadog::Ext::Git::TAG_BRANCH => branch,
237
251
  Datadog::Ext::Git::TAG_COMMIT_SHA => env['GIT_COMMIT'],
@@ -242,7 +256,10 @@ module Datadog
242
256
  TAG_PIPELINE_NUMBER => env['BUILD_NUMBER'],
243
257
  TAG_PIPELINE_URL => env['BUILD_URL'],
244
258
  TAG_PROVIDER_NAME => 'jenkins',
245
- TAG_WORKSPACE_PATH => env['WORKSPACE']
259
+ TAG_WORKSPACE_PATH => env['WORKSPACE'],
260
+ Datadog::Ext::Git::TAG_COMMIT_AUTHOR_NAME => env['BUILD_REQUESTEDFORID'],
261
+ Datadog::Ext::Git::TAG_COMMIT_AUTHOR_EMAIL => env['BUILD_REQUESTEDFOREMAIL'],
262
+ Datadog::Ext::Git::TAG_COMMIT_MESSAGE => env['BUILD_SOURCEVERSIONMESSAGE']
246
263
  }
247
264
  end
248
265
 
@@ -256,7 +273,10 @@ module Datadog
256
273
  TAG_PIPELINE_NUMBER => env['BUILD_NUMBER'],
257
274
  TAG_PIPELINE_URL => (
258
275
  env['SERVER_URL'] && env['BUILD_ID'] ? "#{env['SERVER_URL']}/viewLog.html?buildId=#{env['SERVER_URL']}" : nil
259
- )
276
+ ),
277
+ Datadog::Ext::Git::TAG_COMMIT_AUTHOR_NAME => env['BUILD_REQUESTEDFORID'],
278
+ Datadog::Ext::Git::TAG_COMMIT_AUTHOR_EMAIL => env['BUILD_REQUESTEDFOREMAIL'],
279
+ Datadog::Ext::Git::TAG_COMMIT_MESSAGE => env['BUILD_SOURCEVERSIONMESSAGE']
260
280
  }
261
281
  end
262
282
 
@@ -272,7 +292,8 @@ module Datadog
272
292
  TAG_PIPELINE_NUMBER => env['TRAVIS_BUILD_NUMBER'],
273
293
  TAG_PIPELINE_URL => env['TRAVIS_BUILD_WEB_URL'],
274
294
  TAG_PROVIDER_NAME => 'travisci',
275
- TAG_WORKSPACE_PATH => env['TRAVIS_BUILD_DIR']
295
+ TAG_WORKSPACE_PATH => env['TRAVIS_BUILD_DIR'],
296
+ Datadog::Ext::Git::TAG_COMMIT_MESSAGE => env['TRAVIS_COMMIT_MESSAGE']
276
297
  }
277
298
  end
278
299
 
@@ -293,9 +314,123 @@ module Datadog
293
314
  Datadog::Ext::Git::TAG_REPOSITORY_URL => env['GIT_REPOSITORY_URL'],
294
315
  Datadog::Ext::Git::TAG_COMMIT_SHA => commit,
295
316
  Datadog::Ext::Git::TAG_BRANCH => branch,
296
- Datadog::Ext::Git::TAG_TAG => env['BITRISE_GIT_TAG']
317
+ Datadog::Ext::Git::TAG_TAG => env['BITRISE_GIT_TAG'],
318
+ Datadog::Ext::Git::TAG_COMMIT_MESSAGE => env['BITRISE_GIT_MESSAGE']
297
319
  }
298
320
  end
321
+
322
+ def git_commit_users
323
+ # Get committer and author information in one command.
324
+ output = exec_git_command("git show -s --format='%an\t%ae\t%at\t%cn\t%ce\t%ct'")
325
+ return unless output
326
+
327
+ fields = output.split("\t").each(&:strip!)
328
+
329
+ {
330
+ author_name: fields[0],
331
+ author_email: fields[1],
332
+ # Because we can't get a reliable UTC time from all recent versions of git
333
+ # We have to rely on converting the date to UTC ourselves.
334
+ author_date: Time.at(fields[2].to_i).utc.to_datetime.iso8601,
335
+ committer_name: fields[3],
336
+ committer_email: fields[4],
337
+ # Because we can't get a reliable UTC time from all recent versions of git
338
+ # We have to rely on converting the date to UTC ourselves.
339
+ committer_date: Time.at(fields[5].to_i).utc.to_datetime.iso8601
340
+ }
341
+ rescue => e
342
+ Datadog.logger.debug("Unable to read git commit users: #{e.message} at #{e.backtrace.first}")
343
+ nil
344
+ end
345
+
346
+ def git_repository_url
347
+ exec_git_command('git ls-remote --get-url')
348
+ rescue => e
349
+ Datadog.logger.debug("Unable to read git repository url: #{e.message} at #{e.backtrace.first}")
350
+ nil
351
+ end
352
+
353
+ def git_commit_message
354
+ exec_git_command('git show -s --format=%s')
355
+ rescue => e
356
+ Datadog.logger.debug("Unable to read git commit message: #{e.message} at #{e.backtrace.first}")
357
+ nil
358
+ end
359
+
360
+ def git_branch
361
+ exec_git_command('git rev-parse --abbrev-ref HEAD')
362
+ rescue => e
363
+ Datadog.logger.debug("Unable to read git branch: #{e.message} at #{e.backtrace.first}")
364
+ nil
365
+ end
366
+
367
+ def git_commit_sha
368
+ exec_git_command('git rev-parse HEAD')
369
+ rescue => e
370
+ Datadog.logger.debug("Unable to read git commit SHA: #{e.message} at #{e.backtrace.first}")
371
+ nil
372
+ end
373
+
374
+ def git_tag
375
+ exec_git_command('git tag --points-at HEAD')
376
+ rescue => e
377
+ Datadog.logger.debug("Unable to read git tag: #{e.message} at #{e.backtrace.first}")
378
+ nil
379
+ end
380
+
381
+ def git_base_directory
382
+ exec_git_command('git rev-parse --show-toplevel')
383
+ rescue => e
384
+ Datadog.logger.debug("Unable to read git base directory: #{e.message} at #{e.backtrace.first}")
385
+ nil
386
+ end
387
+
388
+ def exec_git_command(cmd)
389
+ out, status = Open3.capture2e(cmd)
390
+
391
+ raise "Failed to run git command #{cmd}: #{out}" unless status.success?
392
+
393
+ out.strip! # There's always a "\n" at the end of the command output
394
+
395
+ return nil if out.empty?
396
+
397
+ out
398
+ end
399
+
400
+ def extract_local_git
401
+ env = {
402
+ TAG_WORKSPACE_PATH => git_base_directory,
403
+ Datadog::Ext::Git::TAG_REPOSITORY_URL => git_repository_url,
404
+ Datadog::Ext::Git::TAG_COMMIT_SHA => git_commit_sha,
405
+ Datadog::Ext::Git::TAG_BRANCH => git_branch,
406
+ Datadog::Ext::Git::TAG_TAG => git_tag,
407
+ Datadog::Ext::Git::TAG_COMMIT_MESSAGE => git_commit_message
408
+ }
409
+
410
+ if (commit_users = git_commit_users)
411
+ env.merge!(
412
+ Datadog::Ext::Git::TAG_COMMIT_AUTHOR_NAME => commit_users[:author_name],
413
+ Datadog::Ext::Git::TAG_COMMIT_AUTHOR_EMAIL => commit_users[:author_email],
414
+ Datadog::Ext::Git::TAG_COMMIT_AUTHOR_DATE => commit_users[:author_date],
415
+ Datadog::Ext::Git::TAG_COMMIT_COMMITTER_NAME => commit_users[:committer_name],
416
+ Datadog::Ext::Git::TAG_COMMIT_COMMITTER_EMAIL => commit_users[:committer_email],
417
+ Datadog::Ext::Git::TAG_COMMIT_COMMITTER_DATE => commit_users[:committer_date]
418
+ )
419
+ end
420
+
421
+ env
422
+ end
423
+
424
+ def branch_or_tag(branch_or_tag)
425
+ branch = tag = nil
426
+ if branch_or_tag.include?('tags/')
427
+ tag = branch_or_tag
428
+ else
429
+ branch = branch_or_tag
430
+ end
431
+
432
+ [branch, tag]
433
+ end
299
434
  end
300
435
  # rubocop:enable Metrics/ModuleLength:
301
436
  end