elastic-apm 4.6.0 → 4.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (64) hide show
  1. checksums.yaml +4 -4
  2. data/.ci/.exclude.yml +193 -0
  3. data/.ci/.main_framework.yml +4 -0
  4. data/.ci/.ruby.yml +10 -0
  5. data/.ci/docker/jruby/11-jdk/Dockerfile +8 -3
  6. data/.ci/docker/jruby/12-jdk/Dockerfile +5 -2
  7. data/.ci/docker/jruby/13-jdk/Dockerfile +5 -2
  8. data/.ci/docker/jruby/7-jdk/Dockerfile +6 -3
  9. data/.ci/docker/jruby/8-jdk/Dockerfile +8 -3
  10. data/.ci/docker/jruby/README.md +1 -1
  11. data/.ci/docker/jruby/run.sh +33 -9
  12. data/.ci/docker/jruby/test.sh +17 -2
  13. data/.ci/scripts/bench.sh +52 -0
  14. data/.ci/scripts/install-build-system.sh +5 -0
  15. data/.ci/snapshoty.yml +33 -0
  16. data/.ci/updatecli.d/update-gherkin-specs.yml +117 -0
  17. data/.ci/updatecli.d/update-json-specs.yml +121 -0
  18. data/.ci/updatecli.d/update-specs.yml +108 -0
  19. data/.github/workflows/ci-docs.yml +20 -0
  20. data/.github/workflows/ci.yml +70 -0
  21. data/.github/workflows/coverage-reporter.yml +34 -0
  22. data/.github/workflows/microbenchmark.yml +48 -0
  23. data/.github/workflows/opentelemetry.yml +27 -0
  24. data/.github/workflows/release.yml +71 -0
  25. data/.github/workflows/run-matrix.yml +56 -0
  26. data/.github/workflows/snapshoty.yml +35 -0
  27. data/.github/workflows/test-reporter.yml +24 -0
  28. data/.github/workflows/updatecli.yml +28 -0
  29. data/.pre-commit-config.yaml +0 -2
  30. data/CHANGELOG.asciidoc +29 -1
  31. data/CONTRIBUTING.md +1 -1
  32. data/Gemfile +8 -2
  33. data/README.md +1 -1
  34. data/Rakefile +2 -2
  35. data/bench/rubyprof.rb +1 -0
  36. data/bin/run-tests +10 -1
  37. data/docker-compose.yml +10 -1
  38. data/docs/configuration.asciidoc +6 -5
  39. data/docs/index.asciidoc +2 -2
  40. data/docs/{log-correlation.asciidoc → logs.asciidoc} +29 -2
  41. data/docs/opentracing.asciidoc +1 -1
  42. data/docs/redirects.asciidoc +9 -0
  43. data/lib/elastic_apm/context_builder.rb +3 -3
  44. data/lib/elastic_apm/metrics.rb +24 -20
  45. data/lib/elastic_apm/span_helpers.rb +6 -6
  46. data/lib/elastic_apm/spies/faraday.rb +13 -4
  47. data/lib/elastic_apm/trace_context/tracestate.rb +3 -1
  48. data/lib/elastic_apm/transport/connection/http.rb +9 -3
  49. data/lib/elastic_apm/version.rb +1 -1
  50. metadata +25 -17
  51. data/.ci/.jenkins_exclude.yml +0 -191
  52. data/.ci/.jenkins_main_framework.yml +0 -4
  53. data/.ci/.jenkins_ruby.yml +0 -10
  54. data/.ci/.jenkins_ruby_benchmarks.yml +0 -6
  55. data/.ci/Jenkinsfile +0 -419
  56. data/.ci/jobs/apm-agent-ruby-downstream.yml +0 -38
  57. data/.ci/jobs/apm-agent-ruby-linting-mbp.yml +0 -39
  58. data/.ci/jobs/apm-agent-ruby-mbp.yml +0 -43
  59. data/.ci/jobs/apm-agent-ruby.yml +0 -4
  60. data/.ci/jobs/defaults.yml +0 -24
  61. data/.ci/linting.groovy +0 -32
  62. data/.ci/packer_cache.sh +0 -16
  63. /data/.ci/{.jenkins_codecov.yml → .codecov.yml} +0 -0
  64. /data/.ci/{.jenkins_framework.yml → .framework.yml} +0 -0
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: edae30dc148307b137e402a81ffed731cbe738ca7924f31c9440a9a6ea9a8eb4
4
- data.tar.gz: ef860d2d783fd9351b0eea3106e96eafbadef339fa72a4b5979fbc38d4e3d46a
3
+ metadata.gz: 0cd4366b1660aa74bcabd2f70126ab00d849d6bf326c884ab47d9877564430db
4
+ data.tar.gz: a9c5faf9bc50e3922ac2eb816e85b71c32a946c263c284b5c69675330b262047
5
5
  SHA512:
6
- metadata.gz: 8e1543b7f39d5ba73eb30e34777ba07a8ae940ddd1aee2d84afc445642319304bd26036a9eb5b5e6d4d9c11bbc0323c7c17aa2bd18101bbfcfed1cdcf6bdc635
7
- data.tar.gz: 971963f1d06a398c2af8f988e4386004b7fb176e67d6d8c35b9be8a781b8561fd8236395d89f51ef87e3cad4375f9c91c4105e550dc7f7b1e7b1142e1d0f7c17
6
+ metadata.gz: 2fb7959b551db2b43453beeef14cf59adf3c9a18fecfe9b54129dbb449d6c7e320bfbf15df0b3e25fbebb8a3d96c59e91df841027c2cb1cefe55d288889738f8
7
+ data.tar.gz: ce91a520a1358d9610b816d1f6a1bf20bb6b270a66c6c6ff0a410af975f1535424b9686f3a958c1e22d1c630a465d7161cabe5fb48ffb17df7e3fe38bb97550e
data/.ci/.exclude.yml ADDED
@@ -0,0 +1,193 @@
1
+ exclude:
2
+ # Ruby 2.4
3
+ # Only test on rails-4.2, sinatra-1.4
4
+ - VERSION: ruby:2.4
5
+ FRAMEWORK: rails-7.0
6
+ - VERSION: ruby:2.4
7
+ FRAMEWORK: rails-6.1
8
+ - VERSION: ruby:2.4
9
+ FRAMEWORK: rails-6.0
10
+ - VERSION: ruby:2.4
11
+ FRAMEWORK: rails-5.2
12
+ - VERSION: ruby:2.4
13
+ FRAMEWORK: sinatra-2.2
14
+ - VERSION: ruby:2.4
15
+ FRAMEWORK: grape-1.6
16
+ - VERSION: ruby:2.4
17
+ FRAMEWORK: grape-1.6,sinatra-2.2,rails-6.0
18
+ - VERSION: ruby:2.4
19
+ FRAMEWORK: rails-main
20
+ - VERSION: ruby:2.4
21
+ FRAMEWORK: sinatra-main
22
+ - VERSION: ruby:2.4
23
+ FRAMEWORK: grape-master
24
+
25
+ # rails-4.2 exclusions
26
+ # Only test on ruby 2.4
27
+ - VERSION: ruby:3.1
28
+ FRAMEWORK: rails-4.2
29
+ - VERSION: ruby:3.0
30
+ FRAMEWORK: rails-4.2
31
+ - VERSION: ruby:2.7
32
+ FRAMEWORK: rails-4.2
33
+ - VERSION: ruby:2.6
34
+ FRAMEWORK: rails-4.2
35
+ - VERSION: jruby:9.2
36
+ FRAMEWORK: rails-4.2
37
+ - VERSION: elasticobservability/jruby:9.2-13-jdk
38
+ FRAMEWORK: rails-4.2
39
+ - VERSION: elasticobservability/jruby:9.2-11-jdk
40
+ FRAMEWORK: rails-4.2
41
+ - VERSION: elasticobservability/jruby:9.2-8-jdk
42
+ FRAMEWORK: rails-4.2
43
+ # sinatra-1.4 exclusions
44
+ - VERSION: ruby:3.1
45
+ FRAMEWORK: sinatra-1.4
46
+ - VERSION: ruby:3.0
47
+ FRAMEWORK: sinatra-1.4
48
+ - VERSION: ruby:2.7
49
+ FRAMEWORK: sinatra-1.4
50
+ - VERSION: jruby:9.2
51
+ FRAMEWORK: sinatra-1.4
52
+ - VERSION: elasticobservability/jruby:9.2-13-jdk
53
+ FRAMEWORK: sinatra-1.4
54
+ - VERSION: elasticobservability/jruby:9.2-11-jdk
55
+ FRAMEWORK: sinatra-1.4
56
+ - VERSION: elasticobservability/jruby:9.2-8-jdk
57
+ FRAMEWORK: sinatra-1.4
58
+
59
+ # rails-6.0 and rails-6.1 exclusions
60
+ # Don't test on ruby 2.4
61
+ - VERSION: ruby:2.4
62
+ FRAMEWORK: rails-6.1
63
+ - VERSION: ruby:2.4
64
+ FRAMEWORK: rails-6.0
65
+
66
+ # Only test rails main on ruby 3.1
67
+ - VERSION: ruby:3.0
68
+ FRAMEWORK: rails-main
69
+ - VERSION: ruby:2.7
70
+ FRAMEWORK: rails-main
71
+ - VERSION: ruby:2.6
72
+ FRAMEWORK: rails-main
73
+ - VERSION: ruby:2.5
74
+ FRAMEWORK: rails-main
75
+ - VERSION: ruby:2.4
76
+ FRAMEWORK: rails-main
77
+ - VERSION: jruby:9.2
78
+ FRAMEWORK: rails-main
79
+ - VERSION: elasticobservability/jruby:9.2-13-jdk
80
+ FRAMEWORK: rails-main
81
+ - VERSION: elasticobservability/jruby:9.2-11-jdk
82
+ FRAMEWORK: rails-main
83
+ - VERSION: elasticobservability/jruby:9.2-8-jdk
84
+ FRAMEWORK: rails-main
85
+
86
+ # Only test rails 7.0 on ruby >= 2.7
87
+ - VERSION: ruby:2.6
88
+ FRAMEWORK: rails-7.0
89
+ - VERSION: ruby:2.5
90
+ FRAMEWORK: rails-7.0
91
+ - VERSION: ruby:2.4
92
+ FRAMEWORK: rails-7.0
93
+ - VERSION: jruby:9.2
94
+ FRAMEWORK: rails-7.0
95
+ - VERSION: elasticobservability/jruby:9.2-13-jdk
96
+ FRAMEWORK: rails-7.0
97
+ - VERSION: elasticobservability/jruby:9.2-11-jdk
98
+ FRAMEWORK: rails-7.0
99
+ - VERSION: elasticobservability/jruby:9.2-8-jdk
100
+ FRAMEWORK: rails-7.0
101
+
102
+ # Only test sinatra main on ruby 2.7 and ruby 3.1
103
+ - VERSION: ruby:3.0
104
+ FRAMEWORK: sinatra-main
105
+ - VERSION: ruby:2.6
106
+ FRAMEWORK: sinatra-main
107
+ - VERSION: ruby:2.5
108
+ FRAMEWORK: sinatra-main
109
+ - VERSION: ruby:2.4
110
+ FRAMEWORK: sinatra-main
111
+ - VERSION: jruby:9.2
112
+ FRAMEWORK: sinatra-main
113
+ - VERSION: elasticobservability/jruby:9.2-13-jdk
114
+ FRAMEWORK: sinatra-main
115
+ - VERSION: elasticobservability/jruby:9.2-11-jdk
116
+ FRAMEWORK: sinatra-main
117
+ - VERSION: elasticobservability/jruby:9.2-8-jdk
118
+ FRAMEWORK: sinatra-main
119
+
120
+ # Only test grape master on ruby 2.7 and ruby 3.0
121
+ - VERSION: ruby:2.6
122
+ FRAMEWORK: grape-master
123
+ - VERSION: ruby:2.5
124
+ FRAMEWORK: grape-master
125
+ - VERSION: ruby:2.4
126
+ FRAMEWORK: grape-master
127
+ - VERSION: jruby:9.2
128
+ FRAMEWORK: grape-master
129
+ - VERSION: elasticobservability/jruby:9.2-13-jdk
130
+ FRAMEWORK: grape-master
131
+ - VERSION: elasticobservability/jruby:9.2-11-jdk
132
+ FRAMEWORK: grape-master
133
+ - VERSION: elasticobservability/jruby:9.2-8-jdk
134
+ FRAMEWORK: grape-master
135
+
136
+ # grape 1.5 doesn't support ruby 3.0
137
+ - VERSION: ruby:3.1
138
+ FRAMEWORK: grape-1.6
139
+ - VERSION: ruby:3.1
140
+ FRAMEWORK: grape-1.6,sinatra-2.2,rails-7.0
141
+ - VERSION: ruby:3.1
142
+ FRAMEWORK: grape-1.6,sinatra-2.2,rails-6.1
143
+ - VERSION: ruby:3.0
144
+ FRAMEWORK: grape-1.6
145
+ - VERSION: ruby:3.0
146
+ FRAMEWORK: grape-1.6,sinatra-2.2,rails-6.1
147
+
148
+ # only test ruby >= 3.0 with rails 6.0 and rails 6.1
149
+ - VERSION: ruby:3.1
150
+ FRAMEWORK: rails-5.2
151
+ - VERSION: ruby:3.1
152
+ FRAMEWORK: rails-5.1
153
+ - VERSION: ruby:3.0
154
+ FRAMEWORK: rails-5.2
155
+ - VERSION: ruby:3.0
156
+ FRAMEWORK: rails-5.1
157
+
158
+ # Unsupported
159
+ # Ruby 2.6
160
+ - VERSION: ruby:2.6
161
+ FRAMEWORK: grape-1.6,sinatra-2.2,rails-6.1
162
+ - VERSION: ruby:2.6
163
+ FRAMEWORK: grape-1.6,sinatra-2.2,rails-7.0
164
+ # Ruby 2.5
165
+ - VERSION: ruby:2.5
166
+ FRAMEWORK: grape-1.6,sinatra-2.2,rails-6.1
167
+ - VERSION: ruby:2.5
168
+ FRAMEWORK: grape-1.6,sinatra-2.2,rails-7.0
169
+ # Ruby 2.4
170
+ - VERSION: ruby:2.4
171
+ FRAMEWORK: grape-1.6,sinatra-2.2,rails-6.1
172
+ - VERSION: ruby:2.4
173
+ FRAMEWORK: grape-1.6,sinatra-2.2,rails-7.0
174
+ # JRuby 9.2
175
+ - VERSION: jruby:9.2
176
+ FRAMEWORK: grape-1.6,sinatra-2.2,rails-6.1
177
+ - VERSION: jruby:9.2
178
+ FRAMEWORK: grape-1.6,sinatra-2.2,rails-7.0
179
+ # JRuby 9.2-13-jdk
180
+ - VERSION: elasticobservability/jruby:9.2-13-jdk
181
+ FRAMEWORK: grape-1.6,sinatra-2.2,rails-6.1
182
+ - VERSION: elasticobservability/jruby:9.2-13-jdk
183
+ FRAMEWORK: grape-1.6,sinatra-2.2,rails-7.0
184
+ # JRuby 9.2-11-jdk
185
+ - VERSION: elasticobservability/jruby:9.2-11-jdk
186
+ FRAMEWORK: grape-1.6,sinatra-2.2,rails-6.1
187
+ - VERSION: elasticobservability/jruby:9.2-11-jdk
188
+ FRAMEWORK: grape-1.6,sinatra-2.2,rails-7.0
189
+ # JRuby 9.2-8-jdk
190
+ - VERSION: elasticobservability/jruby:9.2-8-jdk
191
+ FRAMEWORK: grape-1.6,sinatra-2.2,rails-6.1
192
+ - VERSION: elasticobservability/jruby:9.2-8-jdk
193
+ FRAMEWORK: grape-1.6,sinatra-2.2,rails-7.0
@@ -0,0 +1,4 @@
1
+ FRAMEWORK:
2
+ #- rails-main
3
+ - sinatra-main
4
+ - grape-master
data/.ci/.ruby.yml ADDED
@@ -0,0 +1,10 @@
1
+ VERSION:
2
+ - ruby:3.1
3
+ - ruby:3.0
4
+ - ruby:2.7
5
+ - ruby:2.6
6
+ - ruby:2.4
7
+ - jruby:9.2
8
+ - elasticobservability/jruby:9.2-13-jdk
9
+ - elasticobservability/jruby:9.2-11-jdk
10
+ - elasticobservability/jruby:9.2-8-jdk
@@ -6,11 +6,11 @@ RUN apt-get update \
6
6
  && rm -rf /var/lib/apt/lists/*
7
7
 
8
8
  ENV JRUBY_VERSION 9.2.16.0
9
- ENV JRUBY_SHA256 9199707712c683c525252ccb1de5cb8e75f53b790c5b57a18f6367039ec79553
10
9
 
11
10
  RUN mkdir -p /opt/jruby \
11
+ && curl -fSL https://repo1.maven.org/maven2/org/jruby/jruby-dist/${JRUBY_VERSION}/jruby-dist-${JRUBY_VERSION}-bin.tar.gz.sha256 -o /tmp/jruby.sha256 \
12
12
  && curl -fSL https://repo1.maven.org/maven2/org/jruby/jruby-dist/${JRUBY_VERSION}/jruby-dist-${JRUBY_VERSION}-bin.tar.gz -o /tmp/jruby.tar.gz \
13
- && echo "$JRUBY_SHA256 */tmp/jruby.tar.gz" | sha256sum -c - \
13
+ && echo "$(cat /tmp/jruby.sha256) */tmp/jruby.tar.gz" | sha256sum -c - \
14
14
  && tar -zx --strip-components=1 -f /tmp/jruby.tar.gz -C /opt/jruby \
15
15
  && update-alternatives --install /usr/local/bin/ruby ruby /opt/jruby/bin/jruby 1
16
16
 
@@ -25,7 +25,9 @@ RUN mkdir -p /opt/jruby/etc \
25
25
  } >> /opt/jruby/etc/gemrc
26
26
 
27
27
  # install bundler, gem requires bash to work
28
- RUN gem install bundler rake net-telnet xmlrpc tzinfo-data
28
+ # https://github.com/rubygems/rubygems/issues/2534#issuecomment-448843746
29
+ RUN gem update --system --conservative || (gem i "rubygems-update:~>2.7" --no-document && update_rubygems) \
30
+ && gem install bundler:2.3.26 rake net-telnet xmlrpc tzinfo-data
29
31
 
30
32
  # install things globally, for great justice
31
33
  # and don't create ".bundle" in all our apps
@@ -38,4 +40,7 @@ ENV PATH $BUNDLE_BIN:$PATH
38
40
  RUN mkdir -p "$GEM_HOME" "$BUNDLE_BIN" \
39
41
  && chmod 777 "$GEM_HOME" "$BUNDLE_BIN"
40
42
 
43
+ RUN useradd -rm -d /home/jruby -u 1001 jruby
44
+ USER jruby
45
+ WORKDIR /home/jruby
41
46
  CMD [ "irb" ]
@@ -6,11 +6,11 @@ RUN apt-get update \
6
6
  && rm -rf /var/lib/apt/lists/*
7
7
 
8
8
  ENV JRUBY_VERSION 9.3.1.0
9
- ENV JRUBY_SHA256 9199707712c683c525252ccb1de5cb8e75f53b790c5b57a18f6367039ec79553
10
9
 
11
10
  RUN mkdir -p /opt/jruby \
11
+ && curl -fSL https://repo1.maven.org/maven2/org/jruby/jruby-dist/${JRUBY_VERSION}/jruby-dist-${JRUBY_VERSION}-bin.tar.gz.sha256 -o /tmp/jruby.sha256 \
12
12
  && curl -fSL https://repo1.maven.org/maven2/org/jruby/jruby-dist/${JRUBY_VERSION}/jruby-dist-${JRUBY_VERSION}-bin.tar.gz -o /tmp/jruby.tar.gz \
13
- && echo "$JRUBY_SHA256 */tmp/jruby.tar.gz" | sha256sum -c - \
13
+ && echo "$(cat /tmp/jruby.sha256) */tmp/jruby.tar.gz" | sha256sum -c - \
14
14
  && tar -zx --strip-components=1 -f /tmp/jruby.tar.gz -C /opt/jruby \
15
15
  && update-alternatives --install /usr/local/bin/ruby ruby /opt/jruby/bin/jruby 1
16
16
 
@@ -38,4 +38,7 @@ ENV PATH $BUNDLE_BIN:$PATH
38
38
  RUN mkdir -p "$GEM_HOME" "$BUNDLE_BIN" \
39
39
  && chmod 777 "$GEM_HOME" "$BUNDLE_BIN"
40
40
 
41
+ RUN useradd -rm -d /home/jruby -u 1001 jruby
42
+ USER jruby
43
+ WORKDIR /home/jruby
41
44
  CMD [ "irb" ]
@@ -6,11 +6,11 @@ RUN apt-get update \
6
6
  && rm -rf /var/lib/apt/lists/*
7
7
 
8
8
  ENV JRUBY_VERSION 9.3.1.0
9
- ENV JRUBY_SHA256 9199707712c683c525252ccb1de5cb8e75f53b790c5b57a18f6367039ec79553
10
9
 
11
10
  RUN mkdir -p /opt/jruby \
11
+ && curl -fSL https://repo1.maven.org/maven2/org/jruby/jruby-dist/${JRUBY_VERSION}/jruby-dist-${JRUBY_VERSION}-bin.tar.gz.sha256 -o /tmp/jruby.sha256 \
12
12
  && curl -fSL https://repo1.maven.org/maven2/org/jruby/jruby-dist/${JRUBY_VERSION}/jruby-dist-${JRUBY_VERSION}-bin.tar.gz -o /tmp/jruby.tar.gz \
13
- && echo "$JRUBY_SHA256 */tmp/jruby.tar.gz" | sha256sum -c - \
13
+ && echo "$(cat /tmp/jruby.sha256) */tmp/jruby.tar.gz" | sha256sum -c - \
14
14
  && tar -zx --strip-components=1 -f /tmp/jruby.tar.gz -C /opt/jruby \
15
15
  && update-alternatives --install /usr/local/bin/ruby ruby /opt/jruby/bin/jruby 1
16
16
 
@@ -38,4 +38,7 @@ ENV PATH $BUNDLE_BIN:$PATH
38
38
  RUN mkdir -p "$GEM_HOME" "$BUNDLE_BIN" \
39
39
  && chmod 777 "$GEM_HOME" "$BUNDLE_BIN"
40
40
 
41
+ RUN useradd -rm -d /home/jruby -u 1001 jruby
42
+ USER jruby
43
+ WORKDIR /home/jruby
41
44
  CMD [ "irb" ]
@@ -2,15 +2,15 @@ FROM openjdk:7-jdk
2
2
 
3
3
  RUN apt-get update \
4
4
  && apt-get install -y libc6-dev --no-install-recommends \
5
- && apt-get install -y gcc \
5
+ && apt-get install --force-yes -y gcc \
6
6
  && rm -rf /var/lib/apt/lists/*
7
7
 
8
8
  ENV JRUBY_VERSION 9.3.1.0
9
- ENV JRUBY_SHA256 6a22f7bf8fef1a52530a9c9781a9d374ad07bbbef0d3d8e2af0ff5cbead0dfd5
10
9
 
11
10
  RUN mkdir -p /opt/jruby \
11
+ && curl -fSL https://repo1.maven.org/maven2/org/jruby/jruby-dist/${JRUBY_VERSION}/jruby-dist-${JRUBY_VERSION}-bin.tar.gz.sha256 -o /tmp/jruby.sha256 \
12
12
  && curl -fSL https://repo1.maven.org/maven2/org/jruby/jruby-dist/${JRUBY_VERSION}/jruby-dist-${JRUBY_VERSION}-bin.tar.gz -o /tmp/jruby.tar.gz \
13
- && echo "$JRUBY_SHA256 */tmp/jruby.tar.gz" | sha256sum -c - \
13
+ && echo "$(cat /tmp/jruby.sha256) */tmp/jruby.tar.gz" | sha256sum -c - \
14
14
  && tar -zx --strip-components=1 -f /tmp/jruby.tar.gz -C /opt/jruby \
15
15
  && update-alternatives --install /usr/local/bin/ruby ruby /opt/jruby/bin/jruby 1
16
16
 
@@ -38,4 +38,7 @@ ENV PATH $BUNDLE_BIN:$PATH
38
38
  RUN mkdir -p "$GEM_HOME" "$BUNDLE_BIN" \
39
39
  && chmod 777 "$GEM_HOME" "$BUNDLE_BIN"
40
40
 
41
+ RUN useradd -rm -d /home/jruby -u 1001 jruby
42
+ USER jruby
43
+ WORKDIR /home/jruby
41
44
  CMD [ "irb" ]
@@ -6,11 +6,11 @@ RUN apt-get update \
6
6
  && rm -rf /var/lib/apt/lists/*
7
7
 
8
8
  ENV JRUBY_VERSION 9.2.14.0
9
- ENV JRUBY_SHA256 9199707712c683c525252ccb1de5cb8e75f53b790c5b57a18f6367039ec79553
10
9
 
11
10
  RUN mkdir -p /opt/jruby \
11
+ && curl -fSL https://repo1.maven.org/maven2/org/jruby/jruby-dist/${JRUBY_VERSION}/jruby-dist-${JRUBY_VERSION}-bin.tar.gz.sha256 -o /tmp/jruby.sha256 \
12
12
  && curl -fSL https://repo1.maven.org/maven2/org/jruby/jruby-dist/${JRUBY_VERSION}/jruby-dist-${JRUBY_VERSION}-bin.tar.gz -o /tmp/jruby.tar.gz \
13
- && echo "$JRUBY_SHA256 */tmp/jruby.tar.gz" | sha256sum -c - \
13
+ && echo "$(cat /tmp/jruby.sha256) */tmp/jruby.tar.gz" | sha256sum -c - \
14
14
  && tar -zx --strip-components=1 -f /tmp/jruby.tar.gz -C /opt/jruby \
15
15
  && update-alternatives --install /usr/local/bin/ruby ruby /opt/jruby/bin/jruby 1
16
16
 
@@ -25,7 +25,9 @@ RUN mkdir -p /opt/jruby/etc \
25
25
  } >> /opt/jruby/etc/gemrc
26
26
 
27
27
  # install bundler, gem requires bash to work
28
- RUN gem install bundler rake net-telnet xmlrpc tzinfo-data
28
+ # https://github.com/rubygems/rubygems/issues/2534#issuecomment-448843746
29
+ RUN gem update --system --conservative || (gem i "rubygems-update:~>2.7" --no-document && update_rubygems) \
30
+ && gem install bundler:2.3.26 rake net-telnet xmlrpc tzinfo-data
29
31
 
30
32
  # install things globally, for great justice
31
33
  # and don't create ".bundle" in all our apps
@@ -38,4 +40,7 @@ ENV PATH $BUNDLE_BIN:$PATH
38
40
  RUN mkdir -p "$GEM_HOME" "$BUNDLE_BIN" \
39
41
  && chmod 777 "$GEM_HOME" "$BUNDLE_BIN"
40
42
 
43
+ RUN useradd -rm -d /home/jruby -u 1001 jruby
44
+ USER jruby
45
+ WORKDIR /home/jruby
41
46
  CMD [ "irb" ]
@@ -12,7 +12,7 @@ To build the images run
12
12
 
13
13
  You can set your own docker registry with the flag `--registry x.y.z/org`
14
14
 
15
- You can exclude what images can be built with the flag `--exclude jdk-7`
15
+ You can exclude what images can be built with the flag `--exclude jdk-7`. Multiple usages of `--exclude` are accepted.
16
16
 
17
17
  ## Test
18
18
 
@@ -1,5 +1,10 @@
1
1
  #!/usr/bin/env bash
2
2
 
3
+ set -o pipefail
4
+
5
+ # 7-jdk is excluded by default. See https://github.com/elastic/apm-agent-ruby/pull/1367#issuecomment-1437228929
6
+ EXCLUDE=("7-jdk")
7
+
3
8
  while (( "$#" )); do
4
9
  case "$1" in
5
10
  -r|--registry)
@@ -7,7 +12,7 @@ while (( "$#" )); do
7
12
  shift 2
8
13
  ;;
9
14
  -e|--exclude)
10
- EXCLUDE=$2
15
+ EXCLUDE+=("$2")
11
16
  shift 2
12
17
  ;;
13
18
  -a|--action)
@@ -28,12 +33,13 @@ while (( "$#" )); do
28
33
  esac
29
34
  done
30
35
 
36
+ function convert_exclude_opts() {
37
+ for val in "${EXCLUDE[@]}"; do
38
+ printf "! -path \"./%s/*\" " $val
39
+ done
40
+ }
31
41
 
32
- if [ -n "$EXCLUDE" ] ; then
33
- search=$(find . -path ./$EXCLUDE -prune -o -name 'Dockerfile' -print)
34
- else
35
- search=$(find . -name 'Dockerfile' -print)
36
- fi
42
+ search=$(bash -c "find . -name 'Dockerfile' $(convert_exclude_opts) -print")
37
43
 
38
44
  function report {
39
45
  if [ $1 -eq 0 ] ; then
@@ -43,7 +49,18 @@ function report {
43
49
  fi
44
50
  }
45
51
 
52
+ function max {
53
+ if [ "$1" -gt "$2" ]; then
54
+ echo "$1"
55
+ else
56
+ echo "$2"
57
+ fi
58
+ }
59
+
46
60
  echo "${ACTION} docker images"
61
+
62
+ EXIT_CODE=0
63
+
47
64
  for i in ${search}; do
48
65
  jdk_image=$(basename `dirname "$i"`)
49
66
  jdk_version=$(echo "$jdk_image" | cut -d'-' -f1)
@@ -63,11 +80,18 @@ for i in ${search}; do
63
80
 
64
81
  if [ "${ACTION}" == "build" ] ; then
65
82
  docker build --tag "${name}" -< $i >> output.log 2>&1
66
- report $? "${name}"
83
+ result=$?
84
+ report $result "${name}"
67
85
  elif [ "${ACTION}" == "push" ] ; then
68
86
  docker push "${name}" >> output.log 2>&1
69
- report $? "${name}"
87
+ result=$?
88
+ report $result "${name}"
70
89
  else
71
90
  ./test.sh "${name}" $jdk_version
91
+ result=$?
72
92
  fi
73
- done
93
+
94
+ EXIT_CODE=$(max $EXIT_CODE $result)
95
+ done
96
+
97
+ exit "${EXIT_CODE}"
@@ -6,8 +6,23 @@ printf '\tTest %-30s %s\n' ${image}
6
6
 
7
7
  if [ -n "$version" ] ; then
8
8
  test_name="Test java -version '$version'"
9
- docker run -t --rm $image java -version | grep -q "openjdk version \"$version\|1.$version" && printf '\t\t%-40s %s\n' "${test_name}" "PASSED" || printf '\t\t%-40s %s\n' "${test_name}" "FAILED"
9
+ docker run -t --rm $image java -version | grep -q "openjdk version \"$version\|1.$version"
10
+ TEST_JAVA_VERSION_RESULT=$?
11
+ if [[ $TEST_JAVA_VERSION_RESULT -eq 0 ]]; then
12
+ printf '\t\t%-40s %s\n' "${test_name}" "PASSED"
13
+ else
14
+ printf '\t\t%-40s %s\n' "${test_name}" "FAILED"
15
+ fi
10
16
  fi
11
17
 
12
18
  test_name="Test Hello World"
13
- docker run -t --rm $image jruby -e "puts 'Hello World" | grep -q 'Hello World' && printf '\t\t%-40s %s\n' "${test_name}" "PASSED" || printf '\t\t%-40s %s\n' "${test_name}" "FAILED"
19
+ # random operation to verify that ruby evaluates the passed string correctly
20
+ docker run -t --rm $image jruby -e "foo = 3 * 4; puts foo" | grep -q '12'
21
+ TEST_HELLO_WORLD_RESULT=$?
22
+ if [[ $TEST_HELLO_WORLD_RESULT -eq 0 ]]; then
23
+ printf '\t\t%-40s %s\n' "${test_name}" "PASSED"
24
+ else
25
+ printf '\t\t%-40s %s\n' "${test_name}" "FAILED"
26
+ fi
27
+
28
+ ! (( $TEST_JAVA_VERSION_RESULT || $TEST_HELLO_WORLD_RESULT ))
@@ -0,0 +1,52 @@
1
+ #!/usr/bin/env bash
2
+
3
+ # Bash strict mode
4
+ set -eo pipefail
5
+
6
+ # Found current script directory
7
+ RELATIVE_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )"
8
+
9
+ # Found project directory
10
+ BASE_PROJECT="$(dirname "$(dirname "${RELATIVE_DIR}")")"
11
+
12
+ ## Buildkite specific configuration
13
+ if [ "$CI" == "true" ] ; then
14
+ # If HOME is not set then use the Buildkite workspace
15
+ # that's normally happening when running in the CI
16
+ # owned by Elastic.
17
+ if [ -z "$HOME" ] ; then
18
+ HOME=$BUILDKITE_BUILD_CHECKOUT_PATH
19
+ export HOME
20
+ fi
21
+
22
+ # required when running the benchmark
23
+ PATH=$PATH:$HOME/.local/bin
24
+ export PATH
25
+
26
+ echo 'Docker login is done in the Buildkite hooks'
27
+ fi
28
+
29
+ # It does not fail so it runs for every single version and then we report the error at the end.
30
+ set +e
31
+ status=0
32
+
33
+ for VERSION in "ruby:3.1" "ruby:3.0" "ruby:2.7" "ruby:2.6" "jruby:9.2" ; do
34
+ ## Transform the versions like:
35
+ ## jruby:9.1 to jruby-9.1
36
+ echo "--- Benchmark for :ruby: ${VERSION}"
37
+ OUTPUT_NAME=benchmark-$(echo "${VERSION//:/-}")
38
+
39
+ # TBC, maybe a timeout could help so it can run the other versions?
40
+ ${BASE_PROJECT}/spec/scripts/benchmarks.sh "${VERSION}" "${OUTPUT_NAME}"
41
+
42
+ # Gather error if any
43
+ if [ $? -gt 0 ] ; then
44
+ status=1
45
+ fi
46
+
47
+ # Then we ship the data using the helper
48
+ sendBenchmark "${ES_USER_SECRET}" "${ES_PASS_SECRET}" "${ES_URL_SECRET}" "${BASE_PROJECT}/spec/${OUTPUT_NAME}.bulk"
49
+ done
50
+
51
+ # Report status
52
+ exit $status
@@ -0,0 +1,5 @@
1
+ #!/usr/bin/env bash
2
+
3
+ set -euxo pipefail
4
+
5
+ gem install rake yard rspec
data/.ci/snapshoty.yml ADDED
@@ -0,0 +1,33 @@
1
+ ---
2
+
3
+ # Version of configuration to use
4
+ version: '1.0'
5
+
6
+ # You can define a Google Cloud Account to use
7
+ account:
8
+ # Project id of the service account
9
+ project: '${GCS_PROJECT}'
10
+ # Private key id of the service account
11
+ private_key_id: '${GCS_PRIVATE_KEY_ID}'
12
+ # Private key of the service account
13
+ private_key: '${GCS_PRIVATE_KEY}'
14
+ # Email of the service account
15
+ client_email: '${GCS_CLIENT_EMAIL}'
16
+ # URI token
17
+ token_uri: 'https://oauth2.googleapis.com/token'
18
+
19
+ # List of artifacts
20
+ artifacts:
21
+ # Path to use for artifacts discovery
22
+ - path: './pkg'
23
+ # Files pattern to match
24
+ files_pattern: 'elastic-apm-(?P<app_version>\d+\.\d+\.\d+)\.gem'
25
+ # File layout on GCS bucket
26
+ output_pattern: '{project}/{github_branch_name}/elastic-apm-ruby-{app_version}-{github_sha_short}.gem'
27
+ # List of metadata processors to use.
28
+ metadata:
29
+ # Define static custom metadata
30
+ - name: 'custom'
31
+ data:
32
+ project: 'apm-agent-ruby'
33
+ - name: 'github_actions'