elastic-apm 4.6.0 → 4.7.0

Sign up to get free protection for your applications and to get access to all the features.
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'