ddtrace 0.39.0 → 0.44.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (146) hide show
  1. checksums.yaml +4 -4
  2. data/.circleci/config.yml +142 -115
  3. data/.circleci/images/primary/Dockerfile-3.0.0 +73 -0
  4. data/.github/workflows/add-milestone-to-pull-requests.yml +42 -0
  5. data/.github/workflows/create-next-milestone.yml +20 -0
  6. data/.gitlab-ci.yml +1 -0
  7. data/.simplecov +41 -0
  8. data/Appraisals +476 -120
  9. data/CHANGELOG.md +1115 -325
  10. data/CONTRIBUTING.md +2 -2
  11. data/Gemfile +4 -2
  12. data/Rakefile +665 -477
  13. data/ddtrace.gemspec +8 -8
  14. data/docker-compose.yml +30 -0
  15. data/docs/DevelopmentGuide.md +28 -2
  16. data/docs/GettingStarted.md +170 -41
  17. data/lib/ddtrace.rb +4 -0
  18. data/lib/ddtrace/buffer.rb +259 -52
  19. data/lib/ddtrace/configuration.rb +55 -5
  20. data/lib/ddtrace/configuration/components.rb +4 -7
  21. data/lib/ddtrace/configuration/options.rb +3 -1
  22. data/lib/ddtrace/configuration/settings.rb +9 -3
  23. data/lib/ddtrace/context.rb +18 -0
  24. data/lib/ddtrace/context_provider.rb +17 -5
  25. data/lib/ddtrace/contrib/action_pack/action_controller/instrumentation.rb +0 -7
  26. data/lib/ddtrace/contrib/action_view/event.rb +0 -4
  27. data/lib/ddtrace/contrib/action_view/events/render_partial.rb +1 -0
  28. data/lib/ddtrace/contrib/action_view/events/render_template.rb +1 -0
  29. data/lib/ddtrace/contrib/active_record/events/sql.rb +4 -0
  30. data/lib/ddtrace/contrib/active_record/utils.rb +11 -1
  31. data/lib/ddtrace/contrib/active_support/cache/instrumentation.rb +104 -3
  32. data/lib/ddtrace/contrib/active_support/cache/patcher.rb +21 -0
  33. data/lib/ddtrace/contrib/active_support/ext.rb +3 -0
  34. data/lib/ddtrace/contrib/active_support/notifications/event.rb +10 -0
  35. data/lib/ddtrace/contrib/active_support/notifications/subscription.rb +2 -2
  36. data/lib/ddtrace/contrib/aws/instrumentation.rb +6 -1
  37. data/lib/ddtrace/contrib/aws/patcher.rb +0 -1
  38. data/lib/ddtrace/contrib/aws/services.rb +1 -0
  39. data/lib/ddtrace/contrib/configurable.rb +2 -0
  40. data/lib/ddtrace/contrib/configuration/resolvers/pattern_resolver.rb +6 -5
  41. data/lib/ddtrace/contrib/cucumber/configuration/settings.rb +38 -0
  42. data/lib/ddtrace/contrib/cucumber/ext.rb +19 -0
  43. data/lib/ddtrace/contrib/cucumber/formatter.rb +104 -0
  44. data/lib/ddtrace/contrib/cucumber/instrumentation.rb +24 -0
  45. data/lib/ddtrace/contrib/cucumber/integration.rb +40 -0
  46. data/lib/ddtrace/contrib/cucumber/patcher.rb +23 -0
  47. data/lib/ddtrace/contrib/dalli/instrumentation.rb +4 -0
  48. data/lib/ddtrace/contrib/delayed_job/configuration/settings.rb +2 -0
  49. data/lib/ddtrace/contrib/delayed_job/ext.rb +2 -0
  50. data/lib/ddtrace/contrib/delayed_job/plugin.rb +39 -15
  51. data/lib/ddtrace/contrib/elasticsearch/patcher.rb +4 -0
  52. data/lib/ddtrace/contrib/ethon/easy_patch.rb +5 -3
  53. data/lib/ddtrace/contrib/ethon/ext.rb +1 -0
  54. data/lib/ddtrace/contrib/ethon/multi_patch.rb +4 -0
  55. data/lib/ddtrace/contrib/excon/middleware.rb +11 -1
  56. data/lib/ddtrace/contrib/faraday/middleware.rb +4 -0
  57. data/lib/ddtrace/contrib/faraday/patcher.rb +1 -1
  58. data/lib/ddtrace/contrib/grape/configuration/settings.rb +7 -0
  59. data/lib/ddtrace/contrib/grape/endpoint.rb +53 -18
  60. data/lib/ddtrace/contrib/grape/ext.rb +1 -0
  61. data/lib/ddtrace/contrib/grpc/datadog_interceptor/client.rb +5 -1
  62. data/lib/ddtrace/contrib/grpc/datadog_interceptor/server.rb +4 -0
  63. data/lib/ddtrace/contrib/http/instrumentation.rb +6 -2
  64. data/lib/ddtrace/contrib/httprb/instrumentation.rb +6 -3
  65. data/lib/ddtrace/contrib/kafka/event.rb +1 -1
  66. data/lib/ddtrace/contrib/mongodb/subscribers.rb +4 -0
  67. data/lib/ddtrace/contrib/mysql2/instrumentation.rb +4 -0
  68. data/lib/ddtrace/contrib/presto/instrumentation.rb +3 -0
  69. data/lib/ddtrace/contrib/qless/configuration/settings.rb +35 -0
  70. data/lib/ddtrace/contrib/qless/ext.rb +20 -0
  71. data/lib/ddtrace/contrib/qless/integration.rb +38 -0
  72. data/lib/ddtrace/contrib/qless/patcher.rb +35 -0
  73. data/lib/ddtrace/contrib/qless/qless_job.rb +72 -0
  74. data/lib/ddtrace/contrib/qless/tracer_cleaner.rb +32 -0
  75. data/lib/ddtrace/contrib/que/configuration/settings.rb +43 -0
  76. data/lib/ddtrace/contrib/que/ext.rb +30 -0
  77. data/lib/ddtrace/contrib/que/integration.rb +42 -0
  78. data/lib/ddtrace/contrib/que/patcher.rb +24 -0
  79. data/lib/ddtrace/contrib/que/tracer.rb +57 -0
  80. data/lib/ddtrace/contrib/racecar/event.rb +4 -0
  81. data/lib/ddtrace/contrib/racecar/events.rb +2 -0
  82. data/lib/ddtrace/contrib/racecar/events/consume.rb +27 -0
  83. data/lib/ddtrace/contrib/racecar/ext.rb +1 -0
  84. data/lib/ddtrace/contrib/rack/middlewares.rb +2 -0
  85. data/lib/ddtrace/contrib/rails/configuration/settings.rb +5 -0
  86. data/lib/ddtrace/contrib/rails/ext.rb +1 -0
  87. data/lib/ddtrace/contrib/rails/log_injection.rb +81 -0
  88. data/lib/ddtrace/contrib/rails/middlewares.rb +7 -2
  89. data/lib/ddtrace/contrib/rails/patcher.rb +29 -0
  90. data/lib/ddtrace/contrib/redis/configuration/resolver.rb +3 -1
  91. data/lib/ddtrace/contrib/redis/configuration/settings.rb +5 -0
  92. data/lib/ddtrace/contrib/redis/ext.rb +1 -0
  93. data/lib/ddtrace/contrib/redis/patcher.rb +20 -3
  94. data/lib/ddtrace/contrib/redis/quantize.rb +27 -0
  95. data/lib/ddtrace/contrib/redis/tags.rb +9 -1
  96. data/lib/ddtrace/contrib/resque/configuration/settings.rb +1 -0
  97. data/lib/ddtrace/contrib/resque/integration.rb +1 -1
  98. data/lib/ddtrace/contrib/resque/resque_job.rb +1 -1
  99. data/lib/ddtrace/contrib/rest_client/request_patch.rb +4 -0
  100. data/lib/ddtrace/contrib/rspec/configuration/settings.rb +38 -0
  101. data/lib/ddtrace/contrib/rspec/example.rb +61 -0
  102. data/lib/ddtrace/contrib/rspec/example_group.rb +61 -0
  103. data/lib/ddtrace/contrib/rspec/ext.rb +19 -0
  104. data/lib/ddtrace/contrib/rspec/integration.rb +41 -0
  105. data/lib/ddtrace/contrib/rspec/patcher.rb +25 -0
  106. data/lib/ddtrace/contrib/sequel/database.rb +3 -1
  107. data/lib/ddtrace/contrib/sequel/dataset.rb +3 -2
  108. data/lib/ddtrace/contrib/sequel/ext.rb +1 -0
  109. data/lib/ddtrace/contrib/sequel/utils.rb +16 -5
  110. data/lib/ddtrace/contrib/shoryuken/configuration/settings.rb +1 -0
  111. data/lib/ddtrace/contrib/shoryuken/tracer.rb +4 -1
  112. data/lib/ddtrace/contrib/sidekiq/configuration/settings.rb +1 -0
  113. data/lib/ddtrace/contrib/sidekiq/server_tracer.rb +4 -1
  114. data/lib/ddtrace/contrib/sinatra/env.rb +5 -4
  115. data/lib/ddtrace/contrib/sinatra/tracer.rb +21 -42
  116. data/lib/ddtrace/contrib/sinatra/tracer_middleware.rb +50 -23
  117. data/lib/ddtrace/contrib/sneakers/configuration/settings.rb +1 -0
  118. data/lib/ddtrace/contrib/sneakers/tracer.rb +17 -20
  119. data/lib/ddtrace/contrib/status_code_matcher.rb +67 -0
  120. data/lib/ddtrace/ext/app_types.rb +1 -0
  121. data/lib/ddtrace/ext/ci.rb +264 -0
  122. data/lib/ddtrace/ext/distributed.rb +8 -2
  123. data/lib/ddtrace/ext/git.rb +12 -0
  124. data/lib/ddtrace/ext/integration.rb +8 -0
  125. data/lib/ddtrace/ext/runtime.rb +2 -0
  126. data/lib/ddtrace/ext/test.rb +24 -0
  127. data/lib/ddtrace/opentracer/distributed_headers.rb +1 -1
  128. data/lib/ddtrace/propagation/grpc_propagator.rb +18 -6
  129. data/lib/ddtrace/runtime/identity.rb +4 -5
  130. data/lib/ddtrace/runtime/metrics.rb +6 -2
  131. data/lib/ddtrace/sampler.rb +2 -2
  132. data/lib/ddtrace/sampling/rate_limiter.rb +65 -16
  133. data/lib/ddtrace/span.rb +152 -27
  134. data/lib/ddtrace/tracer.rb +25 -13
  135. data/lib/ddtrace/transport/http/adapters/net.rb +8 -2
  136. data/lib/ddtrace/transport/http/statistics.rb +14 -1
  137. data/lib/ddtrace/transport/traces.rb +7 -2
  138. data/lib/ddtrace/utils.rb +16 -13
  139. data/lib/ddtrace/utils/forking.rb +52 -0
  140. data/lib/ddtrace/version.rb +1 -1
  141. data/lib/ddtrace/workers/async.rb +2 -2
  142. data/lib/ddtrace/workers/loop.rb +1 -1
  143. data/lib/ddtrace/workers/polling.rb +1 -1
  144. data/lib/ddtrace/workers/runtime_metrics.rb +7 -3
  145. data/lib/ddtrace/writer.rb +19 -1
  146. metadata +147 -42
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: dabe2325911d2a18a25e4b4e09f07bd0c132e68725b455f2313742ddceaff878
4
- data.tar.gz: c3e395ea4faba49b4220842eb89f3aaac353bbf2d30d286b382d1b59f17b248f
3
+ metadata.gz: 9bab61fb7855f2281cbaa808536cc7f7f6fe857657c49f91b532e6780c05187f
4
+ data.tar.gz: 463065e1f917522e19b2ace842cf117bfaf747b2e41e2bae405073080cf6f077
5
5
  SHA512:
6
- metadata.gz: 0bcecad99a9d2ee23ac3b57ff7f82724837bdcdebaaae3fb6014367b06d36d990aaabd7c8284da08f20970d47b15852aa011b3e94821472e53371f6b419d5cbd
7
- data.tar.gz: 9c64c7a12a16524b388d62534765799041f6c9466272042184703b6a1776e2f3dcb489a04e7edbc96b1d8c78ede8855067488f1ae9ab824ea29293c18bf4e626
6
+ metadata.gz: 688c0fb395d61cb53609eb872f32eba8337c810d7d83d4751822e31487a34cf5322284f025b512bc3e7251369406b77467754aecf327403dcf0128fcfebbdfc6
7
+ data.tar.gz: a484ea8f729a3736209c8182ea729e7e2f9475eff4742d366f1824b8d50bf78ebd92d0eb4afbf0c6fc01e2bedcb0e553d11c246e2cbcfd299d64819e64902d99
@@ -2,13 +2,41 @@ 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
+ - &container_base_environment
25
+ BUNDLE_GEMFILE: /app/Gemfile
26
+ - &container_parameters_environment
27
+ - *container_base_environment
28
+ - RUBY_OPT: <<# parameters.jit >>--jit<</ parameters.jit >>
29
+ - TEST_DATADOG_INTEGRATION: 1
30
+ - COVERAGE_BASE_DIR: coverage
9
31
  - &container_base
32
+ image: <<parameters.image>>
10
33
  environment:
11
- - BUNDLE_GEMFILE=/app/Gemfile
34
+ *container_parameters_environment
35
+ - &test_job_default
36
+ <<: *job_defaults
37
+ <<: *job_parameters
38
+ docker:
39
+ - *container_base
12
40
  - &container_postgres
13
41
  image: postgres:9.6
14
42
  environment:
@@ -88,41 +116,13 @@ filters_only_release_tags: &filters_only_release_tags
88
116
  orbs:
89
117
  orb:
90
118
  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
119
  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>>
120
+ <<: *test_job_default
121
121
  steps:
122
+ - checkout
122
123
  - restore_cache:
123
124
  keys:
124
125
  - '{{ .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
126
  - restore_cache:
127
127
  keys:
128
128
  - bundle-{{ .Environment.CIRCLE_CACHE_VERSION }}-<<parameters.ruby_version>>-{{ checksum "lib/ddtrace/version.rb" }}-{{ .Branch }}-{{ checksum "Gemfile" }}-{{ checksum "Appraisals" }}-{{ checksum "ddtrace.gemspec" }}
@@ -148,20 +148,9 @@ orbs:
148
148
  paths:
149
149
  - /usr/local/bundle
150
150
  test:
151
- <<: *job_defaults
152
- parameters:
153
- ruby_version:
154
- description: Ruby version
155
- type: string
156
- image:
157
- description: Docker image location
158
- type: string
151
+ <<: *test_job_default
159
152
  docker:
160
153
  - <<: *container_base
161
- image: <<parameters.image>>
162
- environment:
163
- - BUNDLE_GEMFILE: /app/Gemfile
164
- - TEST_DATADOG_INTEGRATION: 1
165
154
  - *container_postgres
166
155
  - *container_presto
167
156
  - *container_mysql
@@ -170,6 +159,7 @@ orbs:
170
159
  - *container_mongo
171
160
  - *container_memcached
172
161
  - *container_agent
162
+ parallelism: 22
173
163
  steps:
174
164
  - restore_cache:
175
165
  keys:
@@ -177,22 +167,20 @@ orbs:
177
167
  - restore_cache:
178
168
  keys:
179
169
  - '{{ .Environment.CIRCLE_CACHE_VERSION }}-bundle-<<parameters.ruby_version>>-{{ checksum ".circleci/bundle_checksum" }}'
170
+ - run:
171
+ name: Set coverage report directory
172
+ command: |
173
+ # Create a unique coverage directory for this job, to avoid conflicts when merging all results
174
+ echo 'export COVERAGE_DIR="$COVERAGE_BASE_DIR/versions/$CIRCLE_JOB/$CIRCLE_NODE_INDEX"' >> $BASH_ENV
180
175
  - *step_run_all_tests
176
+ - persist_to_workspace:
177
+ root: .
178
+ paths:
179
+ - coverage
181
180
  benchmark:
182
- <<: *job_defaults
183
- parameters:
184
- ruby_version:
185
- description: Ruby version
186
- type: string
187
- image:
188
- description: Docker image location
189
- type: string
181
+ <<: *test_job_default
190
182
  docker:
191
183
  - <<: *container_base
192
- image: <<parameters.image>>
193
- environment:
194
- - BUNDLE_GEMFILE: /app/Gemfile
195
- - TEST_DATADOG_INTEGRATION: 1
196
184
  - *container_postgres
197
185
  - *container_redis
198
186
  - *container_agent
@@ -210,19 +198,7 @@ orbs:
210
198
  name: Run Benchmark without ddtracer
211
199
  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
212
200
  lint:
213
- <<: *job_defaults
214
- parameters:
215
- ruby_version:
216
- description: Ruby version
217
- type: string
218
- image:
219
- description: Docker image location
220
- type: string
221
- docker:
222
- - <<: *container_base
223
- image: <<parameters.image>>
224
- environment:
225
- - BUNDLE_GEMFILE: /app/Gemfile
201
+ <<: *test_job_default
226
202
  steps:
227
203
  - restore_cache:
228
204
  keys:
@@ -231,6 +207,49 @@ orbs:
231
207
  keys:
232
208
  - '{{ .Environment.CIRCLE_CACHE_VERSION }}-bundle-<<parameters.ruby_version>>-{{ checksum ".circleci/bundle_checksum" }}'
233
209
  - *step_rubocop
210
+ coverage:
211
+ <<: *test_job_default
212
+ steps:
213
+ - restore_cache:
214
+ keys:
215
+ - '{{ .Environment.CIRCLE_CACHE_VERSION }}-bundled-repo-<<parameters.ruby_version>>-{{ .Environment.CIRCLE_SHA1 }}'
216
+ - restore_cache:
217
+ keys:
218
+ - '{{ .Environment.CIRCLE_CACHE_VERSION }}-bundle-<<parameters.ruby_version>>-{{ checksum ".circleci/bundle_checksum" }}'
219
+ - attach_workspace:
220
+ at: /tmp/workspace
221
+ - run:
222
+ name: Install codecov
223
+ command: bundle add codecov
224
+ - run:
225
+ name: Generate coverage report artifact "coverage/index.html"
226
+ command: COVERAGE_DIR=/tmp/workspace/coverage bundle exec rake coverage:report
227
+ - run:
228
+ name: Generate coverage report artifact "coverage/versions/*/index.html"
229
+ command: COVERAGE_DIR=/tmp/workspace/coverage bundle exec rake coverage:report_per_ruby_version
230
+ - store_artifacts:
231
+ path: /tmp/workspace/coverage/report/
232
+ destination: coverage
233
+ changelog:
234
+ <<: *test_job_default
235
+ steps:
236
+ - restore_cache:
237
+ keys:
238
+ - '{{ .Environment.CIRCLE_CACHE_VERSION }}-bundled-repo-<<parameters.ruby_version>>-{{ .Environment.CIRCLE_SHA1 }}'
239
+ - restore_cache:
240
+ keys:
241
+ - '{{ .Environment.CIRCLE_CACHE_VERSION }}-bundle-<<parameters.ruby_version>>-{{ checksum ".circleci/bundle_checksum" }}'
242
+ - attach_workspace:
243
+ at: /tmp/workspace
244
+ - run:
245
+ name: Format changelog
246
+ command: bundle exec rake changelog:format
247
+ - run:
248
+ name: Check if changelog was unformatted
249
+ command: |
250
+ if ! git diff-files --quiet; then
251
+ echo "Please run 'bundle exec rake changelog:format' and commit the results."
252
+ fi
234
253
  commands:
235
254
  executors:
236
255
 
@@ -238,7 +257,8 @@ jobs:
238
257
  "deploy release":
239
258
  <<: *job_defaults
240
259
  docker:
241
- - <<: *container_base
260
+ - environment:
261
+ *container_base_environment
242
262
  image: marcotc/docker-library:ddtrace_rb_2_5_6
243
263
  steps:
244
264
  - checkout
@@ -258,7 +278,8 @@ jobs:
258
278
  "deploy prerelease Gem":
259
279
  <<: *job_defaults
260
280
  docker:
261
- - <<: *container_base
281
+ - environment:
282
+ *container_base_environment
262
283
  image: marcotc/docker-library:ddtrace_rb_2_5_6
263
284
  steps:
264
285
  - run:
@@ -324,6 +345,15 @@ job_configuration:
324
345
  <<: *filters_all_branches_and_tags
325
346
  ruby_version: '2.7'
326
347
  image: marcotc/docker-library:ddtrace_rb_2_7_0
348
+ - &config-3_0
349
+ <<: *filters_all_branches_and_tags
350
+ ruby_version: '3.0'
351
+ image: marcotc/docker-library:ddtrace_rb_3.0.0
352
+ - &config-3_0-jit
353
+ <<: *filters_all_branches_and_tags
354
+ ruby_version: '3.0'
355
+ image: marcotc/docker-library:ddtrace_rb_3.0.0
356
+ jit: true
327
357
  # JRuby
328
358
  - &config-jruby-9_2
329
359
  <<: *filters_all_branches_and_tags
@@ -339,54 +369,56 @@ workflows:
339
369
  name: lint
340
370
  requires:
341
371
  - build-2.6
372
+ - orb/coverage:
373
+ <<: *config-2_7
374
+ name: coverage
375
+ requires:
376
+ - test-2.0
377
+ - test-2.1
378
+ - test-2.2
379
+ - test-2.3
380
+ - test-2.4
381
+ - test-2.5
382
+ - test-2.6
383
+ - test-2.7
384
+ - test-3.0
385
+ - test-jruby-9.2
386
+ - orb/changelog:
387
+ <<: *config-2_7
388
+ name: changelog
389
+ requires:
390
+ - build-2.7
391
+ filters:
392
+ branches:
393
+ only: /bump_to_version_.*/
342
394
  # MRI
343
- - orb/checkout:
344
- <<: *config-2_0
345
- name: checkout-2.0
346
395
  - orb/build:
347
396
  <<: *config-2_0
348
397
  name: build-2.0
349
- requires:
350
- - checkout-2.0
351
398
  - orb/test:
352
399
  <<: *config-2_0
353
400
  name: test-2.0
354
401
  requires:
355
402
  - build-2.0
356
- - orb/checkout:
357
- <<: *config-2_1
358
- name: checkout-2.1
359
403
  - orb/build:
360
404
  <<: *config-2_1
361
405
  name: build-2.1
362
- requires:
363
- - checkout-2.1
364
406
  - orb/test:
365
407
  <<: *config-2_1
366
408
  name: test-2.1
367
409
  requires:
368
410
  - build-2.1
369
- - orb/checkout:
370
- <<: *config-2_2
371
- name: checkout-2.2
372
411
  - orb/build:
373
412
  <<: *config-2_2
374
413
  name: build-2.2
375
- requires:
376
- - checkout-2.2
377
414
  - orb/test:
378
415
  <<: *config-2_2
379
416
  name: test-2.2
380
417
  requires:
381
418
  - build-2.2
382
- - orb/checkout:
383
- <<: *config-2_3
384
- name: checkout-2.3
385
419
  - orb/build:
386
420
  <<: *config-2_3
387
421
  name: build-2.3
388
- requires:
389
- - checkout-2.3
390
422
  - orb/test:
391
423
  <<: *config-2_3
392
424
  name: test-2.3
@@ -397,67 +429,58 @@ workflows:
397
429
  name: benchmark-2.3
398
430
  requires:
399
431
  - build-2.3
400
- - orb/checkout:
401
- <<: *config-2_4
402
- name: checkout-2.4
403
432
  - orb/build:
404
433
  <<: *config-2_4
405
434
  name: build-2.4
406
- requires:
407
- - checkout-2.4
408
435
  - orb/test:
409
436
  <<: *config-2_4
410
437
  name: test-2.4
411
438
  requires:
412
439
  - build-2.4
413
- - orb/checkout:
414
- <<: *config-2_5
415
- name: checkout-2.5
416
440
  - orb/build:
417
441
  <<: *config-2_5
418
442
  name: build-2.5
419
- requires:
420
- - checkout-2.5
421
443
  - orb/test:
422
444
  <<: *config-2_5
423
445
  name: test-2.5
424
446
  requires:
425
447
  - build-2.5
426
- - orb/checkout:
427
- <<: *config-2_6
428
- name: checkout-2.6
429
448
  - orb/build:
430
449
  <<: *config-2_6
431
450
  name: build-2.6
432
- requires:
433
- - checkout-2.6
434
451
  - orb/test:
435
452
  <<: *config-2_6
436
453
  name: test-2.6
437
454
  requires:
438
455
  - build-2.6
439
- - orb/checkout:
440
- <<: *config-2_7
441
- name: checkout-2.7
442
456
  - orb/build:
443
457
  <<: *config-2_7
444
458
  name: build-2.7
445
- requires:
446
- - checkout-2.7
447
459
  - orb/test:
448
460
  <<: *config-2_7
449
461
  name: test-2.7
450
462
  requires:
451
463
  - build-2.7
464
+ - orb/build:
465
+ <<: *config-3_0
466
+ name: build-3.0
467
+ - orb/test:
468
+ <<: *config-3_0
469
+ name: test-3.0
470
+ requires:
471
+ - build-3.0
472
+ - orb/build:
473
+ <<: *config-3_0-jit
474
+ name: build-3.0-jit
475
+ - orb/test:
476
+ <<: *config-3_0-jit
477
+ name: test-3.0-jit
478
+ requires:
479
+ - build-3.0-jit
452
480
  # JRuby
453
- - orb/checkout:
454
- <<: *config-jruby-9_2
455
- name: checkout-jruby-9.2
456
481
  - orb/build:
457
482
  <<: *config-jruby-9_2
458
483
  name: build-jruby-9.2
459
- requires:
460
- - checkout-jruby-9.2
461
484
  - orb/test:
462
485
  <<: *config-jruby-9_2
463
486
  name: test-jruby-9.2
@@ -476,6 +499,8 @@ workflows:
476
499
  - test-2.5
477
500
  - test-2.6
478
501
  - test-2.7
502
+ - test-3.0
503
+ - test-3.0-jit
479
504
  - test-jruby-9.2
480
505
  - "deploy release":
481
506
  <<: *filters_only_release_tags
@@ -489,4 +514,6 @@ workflows:
489
514
  - test-2.5
490
515
  - test-2.6
491
516
  - test-2.7
517
+ - test-3.0
518
+ - test-3.0-jit
492
519
  - test-jruby-9.2
@@ -0,0 +1,73 @@
1
+ # https://hub.docker.com/layers/ruby/library/ruby/3.0.0/images/sha256-9719b7df964602b114a5e9319bd0a3ce2d4d44ccb7ea4d1702fa1ef9742a8f84
2
+ FROM ruby@sha256:9719b7df964602b114a5e9319bd0a3ce2d4d44ccb7ea4d1702fa1ef9742a8f84
3
+
4
+ # Make apt non-interactive
5
+ RUN echo 'APT::Get::Assume-Yes "true";' > /etc/apt/apt.conf.d/90circleci \
6
+ && echo 'DPkg::Options "--force-confnew";' >> /etc/apt/apt.conf.d/90circleci
7
+
8
+ ENV DEBIAN_FRONTEND=noninteractive
9
+
10
+ # Install required packages
11
+ RUN set -ex; \
12
+ apt-get update; \
13
+ mkdir -p /usr/share/man/man1; \
14
+ apt-get install -y --no-install-recommends \
15
+ git mercurial xvfb \
16
+ locales sudo openssh-client ca-certificates tar gzip parallel \
17
+ net-tools netcat unzip zip bzip2 gnupg curl wget \
18
+ tzdata rsync vim; \
19
+ rm -rf /var/lib/apt/lists/*;
20
+
21
+ # Set timezone to UTC by default
22
+ RUN ln -sf /usr/share/zoneinfo/Etc/UTC /etc/localtime
23
+
24
+ # Set language
25
+ RUN locale-gen en_US.UTF-8
26
+ ENV LANG en_US.UTF-8
27
+ ENV LANGUAGE en_US:en
28
+
29
+ # Install jq
30
+ RUN JQ_URL="https://circle-downloads.s3.amazonaws.com/circleci-images/cache/linux-amd64/jq-latest" \
31
+ && curl --silent --show-error --location --fail --retry 3 --output /usr/bin/jq $JQ_URL \
32
+ && chmod +x /usr/bin/jq \
33
+ && jq --version
34
+
35
+ # Install Docker
36
+ RUN set -ex \
37
+ && export DOCKER_VERSION=$(curl --silent --fail --retry 3 https://download.docker.com/linux/static/stable/x86_64/ | grep -o -e 'docker-[.0-9]*-ce\.tgz' | sort -r | head -n 1) \
38
+ && DOCKER_URL="https://download.docker.com/linux/static/stable/x86_64/${DOCKER_VERSION}" \
39
+ && echo Docker URL: $DOCKER_URL \
40
+ && curl --silent --show-error --location --fail --retry 3 --output /tmp/docker.tgz "${DOCKER_URL}" \
41
+ && ls -lha /tmp/docker.tgz \
42
+ && tar -xz -C /tmp -f /tmp/docker.tgz \
43
+ && mv /tmp/docker/* /usr/bin \
44
+ && rm -rf /tmp/docker /tmp/docker.tgz \
45
+ && which docker \
46
+ && (docker version || true)
47
+
48
+ # Install Docker Compose
49
+ RUN COMPOSE_URL="https://circle-downloads.s3.amazonaws.com/circleci-images/cache/linux-amd64/docker-compose-latest" \
50
+ && curl --silent --show-error --location --fail --retry 3 --output /usr/bin/docker-compose $COMPOSE_URL \
51
+ && chmod +x /usr/bin/docker-compose \
52
+ && docker-compose version
53
+
54
+ # Install Dockerize
55
+ RUN DOCKERIZE_URL="https://circle-downloads.s3.amazonaws.com/circleci-images/cache/linux-amd64/dockerize-latest.tar.gz" \
56
+ && curl --silent --show-error --location --fail --retry 3 --output /tmp/dockerize-linux-amd64.tar.gz $DOCKERIZE_URL \
57
+ && tar -C /usr/local/bin -xzvf /tmp/dockerize-linux-amd64.tar.gz \
58
+ && rm -rf /tmp/dockerize-linux-amd64.tar.gz \
59
+ && dockerize --version
60
+
61
+ # Install RubyGems
62
+ RUN gem update --system
63
+ RUN mkdir -p "$GEM_HOME" && chmod -R 777 "$GEM_HOME"
64
+
65
+ # Upgrade RubyGems and Bundler
66
+ RUN gem update --system
67
+ RUN gem install bundler
68
+ ENV BUNDLE_SILENCE_ROOT_WARNING 1
69
+
70
+ RUN mkdir /app
71
+ WORKDIR /app
72
+
73
+ CMD ["/bin/sh"]