elastic-apm 4.5.0 → 4.6.2
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.
- checksums.yaml +4 -4
- data/.ci/.jenkins_exclude.yml +94 -37
- data/.ci/.jenkins_framework.yml +4 -3
- data/.ci/.jenkins_main_framework.yml +4 -0
- data/.ci/.jenkins_ruby.yml +1 -1
- data/.ci/.jenkins_ruby_benchmarks.yml +6 -0
- data/.ci/Jenkinsfile +46 -36
- data/.ci/docker/jruby/11-jdk/Dockerfile +8 -3
- data/.ci/docker/jruby/12-jdk/Dockerfile +5 -2
- data/.ci/docker/jruby/13-jdk/Dockerfile +5 -2
- data/.ci/docker/jruby/7-jdk/Dockerfile +6 -3
- data/.ci/docker/jruby/8-jdk/Dockerfile +8 -3
- data/.ci/docker/jruby/README.md +1 -1
- data/.ci/docker/jruby/run.sh +33 -9
- data/.ci/docker/jruby/test.sh +17 -2
- data/.ci/jobs/apm-agent-ruby-mbp.yml +1 -1
- data/.ci/snapshoty.yml +34 -0
- data/.ci/update-specs.yml +108 -0
- data/.github/PULL_REQUEST_TEMPLATE.md +5 -5
- data/.github/workflows/update-specs.yml +30 -0
- data/.pre-commit-config.yaml +2 -2
- data/CHANGELOG.asciidoc +55 -1
- data/CONTRIBUTING.md +3 -3
- data/Gemfile +15 -4
- data/README.md +1 -1
- data/Rakefile +4 -4
- data/bench/report.rb +1 -1
- data/docker-compose.yml +6 -0
- data/docs/api.asciidoc +2 -2
- data/docs/configuration.asciidoc +7 -5
- data/docs/introduction.asciidoc +3 -3
- data/docs/log-correlation.asciidoc +1 -1
- data/docs/upgrading.asciidoc +1 -1
- data/elastic-apm.gemspec +3 -2
- data/lib/elastic_apm/central_config.rb +5 -0
- data/lib/elastic_apm/config/server_info.rb +50 -0
- data/lib/elastic_apm/config.rb +25 -4
- data/lib/elastic_apm/error.rb +2 -1
- data/lib/elastic_apm/error_builder.rb +1 -0
- data/lib/elastic_apm/instrumenter.rb +4 -2
- data/lib/elastic_apm/metadata/system_info/container_info.rb +4 -3
- data/lib/elastic_apm/metadata/system_info.rb +1 -1
- data/lib/elastic_apm/metrics.rb +1 -4
- data/lib/elastic_apm/span/context/links.rb +32 -0
- data/lib/elastic_apm/span/context/service.rb +55 -0
- data/lib/elastic_apm/span/context.rb +19 -3
- data/lib/elastic_apm/span.rb +3 -0
- data/lib/elastic_apm/span_helpers.rb +2 -2
- data/lib/elastic_apm/spies/elasticsearch.rb +11 -1
- data/lib/elastic_apm/spies/faraday.rb +13 -4
- data/lib/elastic_apm/spies/mongo.rb +5 -12
- data/lib/elastic_apm/spies/racecar.rb +77 -0
- data/lib/elastic_apm/spies/redis.rb +1 -1
- data/lib/elastic_apm/spies/sequel.rb +9 -0
- data/lib/elastic_apm/spies/sns.rb +1 -1
- data/lib/elastic_apm/spies/sqs.rb +1 -0
- data/lib/elastic_apm/trace_context/tracestate.rb +4 -2
- data/lib/elastic_apm/trace_context.rb +1 -1
- data/lib/elastic_apm/transport/base.rb +1 -3
- data/lib/elastic_apm/transport/connection/http.rb +9 -3
- data/lib/elastic_apm/transport/serializers/span_serializer.rb +25 -0
- data/lib/elastic_apm/version.rb +1 -1
- data/lib/elastic_apm.rb +1 -0
- metadata +32 -9
- data/.ci/.jenkins_master_framework.yml +0 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f7c28585ab44cfdb7a4eb8c32b8dd60e1ecb10c091357c25a6b13f35a0fe2ffc
|
4
|
+
data.tar.gz: 3aad55a03f8c2a4d824ea09731be304e7712ee306dc4e585c5cc29ba11e25413
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: eb6480a61567bd000e5325e12702c46882a42a9c452a60bd7af997b7138b076cd332d853f101b694af30d120bdd3b48f1b911feb6ecf12e94cdfc58ba096855c
|
7
|
+
data.tar.gz: e626d4a1cb9370780d764385585fb4c4025d612a84b7ef36ae0525f6d6f6a83ddf7d5aa670ccf2610bf10f9e2c2d9a87f2f97818cc9e8de27153c3a85cd34875
|
data/.ci/.jenkins_exclude.yml
CHANGED
@@ -1,27 +1,31 @@
|
|
1
1
|
exclude:
|
2
|
-
# Ruby 2.
|
3
|
-
# Only
|
4
|
-
- RUBY_VERSION: ruby:2.
|
2
|
+
# Ruby 2.4
|
3
|
+
# Only test on rails-5.2, sinatra-1.4
|
4
|
+
- RUBY_VERSION: ruby:2.4
|
5
|
+
FRAMEWORK: rails-7.0
|
6
|
+
- RUBY_VERSION: ruby:2.4
|
5
7
|
FRAMEWORK: rails-6.1
|
6
|
-
- RUBY_VERSION: ruby:2.
|
8
|
+
- RUBY_VERSION: ruby:2.4
|
7
9
|
FRAMEWORK: rails-6.0
|
8
|
-
- RUBY_VERSION: ruby:2.
|
10
|
+
- RUBY_VERSION: ruby:2.4
|
9
11
|
FRAMEWORK: rails-4.2
|
10
|
-
- RUBY_VERSION: ruby:2.
|
11
|
-
FRAMEWORK: sinatra-
|
12
|
-
- RUBY_VERSION: ruby:2.
|
13
|
-
FRAMEWORK: grape-1.
|
14
|
-
- RUBY_VERSION: ruby:2.
|
15
|
-
FRAMEWORK: grape-1.
|
16
|
-
- RUBY_VERSION: ruby:2.
|
12
|
+
- RUBY_VERSION: ruby:2.4
|
13
|
+
FRAMEWORK: sinatra-2.2
|
14
|
+
- RUBY_VERSION: ruby:2.4
|
15
|
+
FRAMEWORK: grape-1.6
|
16
|
+
- RUBY_VERSION: ruby:2.4
|
17
|
+
FRAMEWORK: grape-1.6,sinatra-2.2,rails-6.0
|
18
|
+
- RUBY_VERSION: ruby:2.4
|
17
19
|
FRAMEWORK: rails-main
|
18
|
-
- RUBY_VERSION: ruby:2.
|
19
|
-
FRAMEWORK: sinatra-
|
20
|
-
- RUBY_VERSION: ruby:2.
|
20
|
+
- RUBY_VERSION: ruby:2.4
|
21
|
+
FRAMEWORK: sinatra-main
|
22
|
+
- RUBY_VERSION: ruby:2.4
|
21
23
|
FRAMEWORK: grape-master
|
22
24
|
|
23
25
|
# rails-4.2 exclusions
|
24
|
-
# Only test on ruby 2.6, 2.5, 2.4
|
26
|
+
# Only test on ruby 2.6, 2.5, 2.4
|
27
|
+
- RUBY_VERSION: ruby:3.1
|
28
|
+
FRAMEWORK: rails-4.2
|
25
29
|
- RUBY_VERSION: ruby:3.0
|
26
30
|
FRAMEWORK: rails-4.2
|
27
31
|
- RUBY_VERSION: ruby:2.7
|
@@ -35,6 +39,8 @@ exclude:
|
|
35
39
|
- RUBY_VERSION: docker.elastic.co/observability-ci/jruby:9.2-8-jdk
|
36
40
|
FRAMEWORK: rails-4.2
|
37
41
|
# sinatra-1.4 exclusions
|
42
|
+
- RUBY_VERSION: ruby:3.1
|
43
|
+
FRAMEWORK: sinatra-1.4
|
38
44
|
- RUBY_VERSION: ruby:3.0
|
39
45
|
FRAMEWORK: sinatra-1.4
|
40
46
|
- RUBY_VERSION: ruby:2.7
|
@@ -55,7 +61,11 @@ exclude:
|
|
55
61
|
- RUBY_VERSION: ruby:2.4
|
56
62
|
FRAMEWORK: rails-6.0
|
57
63
|
|
58
|
-
# Only test rails
|
64
|
+
# Only test rails main on ruby 3.1
|
65
|
+
- RUBY_VERSION: ruby:3.0
|
66
|
+
FRAMEWORK: rails-main
|
67
|
+
- RUBY_VERSION: ruby:2.7
|
68
|
+
FRAMEWORK: rails-main
|
59
69
|
- RUBY_VERSION: ruby:2.6
|
60
70
|
FRAMEWORK: rails-main
|
61
71
|
- RUBY_VERSION: ruby:2.5
|
@@ -71,21 +81,39 @@ exclude:
|
|
71
81
|
- RUBY_VERSION: docker.elastic.co/observability-ci/jruby:9.2-8-jdk
|
72
82
|
FRAMEWORK: rails-main
|
73
83
|
|
74
|
-
# Only test
|
84
|
+
# Only test rails 7.0 on ruby >= 2.7
|
75
85
|
- RUBY_VERSION: ruby:2.6
|
76
|
-
FRAMEWORK:
|
86
|
+
FRAMEWORK: rails-7.0
|
77
87
|
- RUBY_VERSION: ruby:2.5
|
78
|
-
FRAMEWORK:
|
88
|
+
FRAMEWORK: rails-7.0
|
79
89
|
- RUBY_VERSION: ruby:2.4
|
80
|
-
FRAMEWORK:
|
90
|
+
FRAMEWORK: rails-7.0
|
81
91
|
- RUBY_VERSION: jruby:9.2
|
82
|
-
FRAMEWORK:
|
92
|
+
FRAMEWORK: rails-7.0
|
83
93
|
- RUBY_VERSION: docker.elastic.co/observability-ci/jruby:9.2-13-jdk
|
84
|
-
FRAMEWORK:
|
94
|
+
FRAMEWORK: rails-7.0
|
85
95
|
- RUBY_VERSION: docker.elastic.co/observability-ci/jruby:9.2-11-jdk
|
86
|
-
FRAMEWORK:
|
96
|
+
FRAMEWORK: rails-7.0
|
87
97
|
- RUBY_VERSION: docker.elastic.co/observability-ci/jruby:9.2-8-jdk
|
88
|
-
FRAMEWORK:
|
98
|
+
FRAMEWORK: rails-7.0
|
99
|
+
|
100
|
+
# Only test sinatra main on ruby 2.7 and ruby 3.1
|
101
|
+
- RUBY_VERSION: ruby:3.0
|
102
|
+
FRAMEWORK: sinatra-main
|
103
|
+
- RUBY_VERSION: ruby:2.6
|
104
|
+
FRAMEWORK: sinatra-main
|
105
|
+
- RUBY_VERSION: ruby:2.5
|
106
|
+
FRAMEWORK: sinatra-main
|
107
|
+
- RUBY_VERSION: ruby:2.4
|
108
|
+
FRAMEWORK: sinatra-main
|
109
|
+
- RUBY_VERSION: jruby:9.2
|
110
|
+
FRAMEWORK: sinatra-main
|
111
|
+
- RUBY_VERSION: docker.elastic.co/observability-ci/jruby:9.2-13-jdk
|
112
|
+
FRAMEWORK: sinatra-main
|
113
|
+
- RUBY_VERSION: docker.elastic.co/observability-ci/jruby:9.2-11-jdk
|
114
|
+
FRAMEWORK: sinatra-main
|
115
|
+
- RUBY_VERSION: docker.elastic.co/observability-ci/jruby:9.2-8-jdk
|
116
|
+
FRAMEWORK: sinatra-main
|
89
117
|
|
90
118
|
# Only test grape master on ruby 2.7 and ruby 3.0
|
91
119
|
- RUBY_VERSION: ruby:2.6
|
@@ -104,31 +132,60 @@ exclude:
|
|
104
132
|
FRAMEWORK: grape-master
|
105
133
|
|
106
134
|
# grape 1.5 doesn't support ruby 3.0
|
135
|
+
- RUBY_VERSION: ruby:3.1
|
136
|
+
FRAMEWORK: grape-1.6
|
137
|
+
- RUBY_VERSION: ruby:3.1
|
138
|
+
FRAMEWORK: grape-1.6,sinatra-2.2,rails-7.0
|
139
|
+
- RUBY_VERSION: ruby:3.1
|
140
|
+
FRAMEWORK: grape-1.6,sinatra-2.2,rails-6.1
|
107
141
|
- RUBY_VERSION: ruby:3.0
|
108
|
-
FRAMEWORK: grape-1.
|
142
|
+
FRAMEWORK: grape-1.6
|
109
143
|
- RUBY_VERSION: ruby:3.0
|
110
|
-
FRAMEWORK: grape-1.
|
144
|
+
FRAMEWORK: grape-1.6,sinatra-2.2,rails-6.1
|
111
145
|
|
112
|
-
# only test ruby 3.0 with rails 6.0 and rails 6.1
|
146
|
+
# only test ruby >= 3.0 with rails 6.0 and rails 6.1
|
147
|
+
- RUBY_VERSION: ruby:3.1
|
148
|
+
FRAMEWORK: rails-5.2
|
149
|
+
- RUBY_VERSION: ruby:3.1
|
150
|
+
FRAMEWORK: rails-5.1
|
113
151
|
- RUBY_VERSION: ruby:3.0
|
114
152
|
FRAMEWORK: rails-5.2
|
115
153
|
- RUBY_VERSION: ruby:3.0
|
116
154
|
FRAMEWORK: rails-5.1
|
117
155
|
|
118
156
|
# Unsupported
|
157
|
+
# Ruby 2.6
|
158
|
+
- RUBY_VERSION: ruby:2.6
|
159
|
+
FRAMEWORK: grape-1.6,sinatra-2.2,rails-6.1
|
119
160
|
- RUBY_VERSION: ruby:2.6
|
120
|
-
FRAMEWORK: grape-1.
|
161
|
+
FRAMEWORK: grape-1.6,sinatra-2.2,rails-7.0
|
162
|
+
# Ruby 2.5
|
121
163
|
- RUBY_VERSION: ruby:2.5
|
122
|
-
FRAMEWORK: grape-1.
|
164
|
+
FRAMEWORK: grape-1.6,sinatra-2.2,rails-6.1
|
165
|
+
- RUBY_VERSION: ruby:2.5
|
166
|
+
FRAMEWORK: grape-1.6,sinatra-2.2,rails-7.0
|
167
|
+
# Ruby 2.4
|
168
|
+
- RUBY_VERSION: ruby:2.4
|
169
|
+
FRAMEWORK: grape-1.6,sinatra-2.2,rails-6.1
|
123
170
|
- RUBY_VERSION: ruby:2.4
|
124
|
-
FRAMEWORK: grape-1.
|
125
|
-
|
126
|
-
FRAMEWORK: grape-1.5,sinatra-2.0,rails-6.1
|
171
|
+
FRAMEWORK: grape-1.6,sinatra-2.2,rails-7.0
|
172
|
+
# JRuby 9.2
|
127
173
|
- RUBY_VERSION: jruby:9.2
|
128
|
-
FRAMEWORK: grape-1.
|
174
|
+
FRAMEWORK: grape-1.6,sinatra-2.2,rails-6.1
|
175
|
+
- RUBY_VERSION: jruby:9.2
|
176
|
+
FRAMEWORK: grape-1.6,sinatra-2.2,rails-7.0
|
177
|
+
# JRuby 9.2-13-jdk
|
178
|
+
- RUBY_VERSION: docker.elastic.co/observability-ci/jruby:9.2-13-jdk
|
179
|
+
FRAMEWORK: grape-1.6,sinatra-2.2,rails-6.1
|
129
180
|
- RUBY_VERSION: docker.elastic.co/observability-ci/jruby:9.2-13-jdk
|
130
|
-
FRAMEWORK: grape-1.
|
181
|
+
FRAMEWORK: grape-1.6,sinatra-2.2,rails-7.0
|
182
|
+
# JRuby 9.2-11-jdk
|
131
183
|
- RUBY_VERSION: docker.elastic.co/observability-ci/jruby:9.2-11-jdk
|
132
|
-
FRAMEWORK: grape-1.
|
184
|
+
FRAMEWORK: grape-1.6,sinatra-2.2,rails-6.1
|
185
|
+
- RUBY_VERSION: docker.elastic.co/observability-ci/jruby:9.2-11-jdk
|
186
|
+
FRAMEWORK: grape-1.6,sinatra-2.2,rails-7.0
|
187
|
+
# JRuby 9.2-8-jdk
|
188
|
+
- RUBY_VERSION: docker.elastic.co/observability-ci/jruby:9.2-8-jdk
|
189
|
+
FRAMEWORK: grape-1.6,sinatra-2.2,rails-6.1
|
133
190
|
- RUBY_VERSION: docker.elastic.co/observability-ci/jruby:9.2-8-jdk
|
134
|
-
FRAMEWORK: grape-1.
|
191
|
+
FRAMEWORK: grape-1.6,sinatra-2.2,rails-7.0
|
data/.ci/.jenkins_framework.yml
CHANGED
data/.ci/.jenkins_ruby.yml
CHANGED
data/.ci/Jenkinsfile
CHANGED
@@ -21,12 +21,11 @@ pipeline {
|
|
21
21
|
CODECOV_SECRET = 'secret/apm-team/ci/apm-agent-ruby-codecov'
|
22
22
|
DOCKER_REGISTRY = 'docker.elastic.co'
|
23
23
|
DOCKER_SECRET = 'secret/apm-team/ci/docker-registry/prod'
|
24
|
-
GITHUB_CHECK_ITS_NAME = 'Integration Tests'
|
25
|
-
ITS_PIPELINE = 'apm-integration-tests-selector-mbp/master'
|
26
24
|
RELEASE_SECRET = 'secret/apm-team/ci/apm-agent-ruby-rubygems-release'
|
27
25
|
OPBEANS_REPO = 'opbeans-ruby'
|
28
26
|
REFERENCE_REPO = '/var/lib/jenkins/.git-references/apm-agent-ruby.git'
|
29
27
|
SLACK_CHANNEL = '#apm-agent-ruby'
|
28
|
+
RUBY_DOCKER_TAG = 'ruby:2.6'
|
30
29
|
}
|
31
30
|
options {
|
32
31
|
timeout(time: 2, unit: 'HOURS')
|
@@ -42,7 +41,7 @@ pipeline {
|
|
42
41
|
issueCommentTrigger("(${obltGitHubComments()}|^run benchmark tests)")
|
43
42
|
}
|
44
43
|
parameters {
|
45
|
-
booleanParam(name: '
|
44
|
+
booleanParam(name: 'Run_As_Main_Branch', defaultValue: false, description: 'Allow to run any steps on a PR, some steps normally only run on main branch.')
|
46
45
|
booleanParam(name: 'bench_ci', defaultValue: true, description: 'Enable run benchmarks.')
|
47
46
|
}
|
48
47
|
stages {
|
@@ -71,7 +70,7 @@ pipeline {
|
|
71
70
|
expression { return env.ONLY_DOCS == "false" }
|
72
71
|
anyOf {
|
73
72
|
not { changeRequest() }
|
74
|
-
expression { return params.
|
73
|
+
expression { return params.Run_As_Main_Branch }
|
75
74
|
}
|
76
75
|
}
|
77
76
|
}
|
@@ -115,32 +114,44 @@ pipeline {
|
|
115
114
|
}
|
116
115
|
}
|
117
116
|
}
|
118
|
-
stage('
|
117
|
+
stage('Main Tests frameworks') {
|
119
118
|
options { skipDefaultCheckout() }
|
120
119
|
steps {
|
121
|
-
catchError(buildResult: 'SUCCESS', stageResult: 'UNSTABLE', message: "The tests for the
|
122
|
-
runTests('.ci/.
|
120
|
+
catchError(buildResult: 'SUCCESS', stageResult: 'UNSTABLE', message: "The tests for the main framework have failed. Let's warn instead.") {
|
121
|
+
runTests('.ci/.jenkins_main_framework.yml')
|
123
122
|
}
|
124
123
|
}
|
125
124
|
}
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
125
|
+
}
|
126
|
+
}
|
127
|
+
stage('Publish snapshot packages') {
|
128
|
+
options { skipDefaultCheckout() }
|
129
|
+
environment {
|
130
|
+
PATH = "${env.WORKSPACE}/.local/bin:${env.WORKSPACE}/bin:${env.PATH}"
|
131
|
+
BUCKET_NAME = 'oblt-artifacts'
|
132
|
+
DOCKER_REGISTRY = 'docker.elastic.co'
|
133
|
+
DOCKER_REGISTRY_SECRET = 'secret/observability-team/ci/docker-registry/prod'
|
134
|
+
GCS_ACCOUNT_SECRET = 'secret/observability-team/ci/snapshoty'
|
135
|
+
}
|
136
|
+
when { branch 'main' }
|
137
|
+
steps {
|
138
|
+
withGithubNotify(context: 'Publish snapshot packages') {
|
139
|
+
deleteDir()
|
140
|
+
unstash 'source'
|
141
|
+
dir(env.BASE_DIR) {
|
142
|
+
script {
|
143
|
+
docker.image(env.RUBY_DOCKER_TAG).inside() {
|
144
|
+
sh(label: 'install build system', script: 'gem install rake yard rspec')
|
145
|
+
sh(label: 'create gem', script: 'rake build')
|
146
|
+
}
|
147
|
+
snapshoty(
|
148
|
+
bucket: env.BUCKET_NAME,
|
149
|
+
gcsAccountSecret: env.GCS_ACCOUNT_SECRET,
|
150
|
+
dockerRegistry: env.DOCKER_REGISTRY,
|
151
|
+
dockerSecret: env.DOCKER_REGISTRY_SECRET
|
152
|
+
)
|
133
153
|
}
|
134
154
|
}
|
135
|
-
steps {
|
136
|
-
githubNotify(context: "${env.GITHUB_CHECK_ITS_NAME}", description: "${env.GITHUB_CHECK_ITS_NAME} ...", status: 'PENDING', targetUrl: "${env.JENKINS_URL}search/?q=${env.ITS_PIPELINE.replaceAll('/','+')}")
|
137
|
-
build(job: env.ITS_PIPELINE, propagate: false, wait: true,
|
138
|
-
parameters: [ string(name: 'INTEGRATION_TEST', value: 'Ruby'),
|
139
|
-
string(name: 'BUILD_OPTS', value: "--ruby-agent-version ${env.GIT_BASE_COMMIT} --ruby-agent-version-state ${env.GIT_BUILD_CAUSE} --ruby-agent-repo ${env.CHANGE_FORK?.trim() ?: 'elastic'}/${env.REPO} --opbeans-ruby-agent-branch ${env.GIT_BASE_COMMIT}"),
|
140
|
-
string(name: 'GITHUB_CHECK_NAME', value: env.GITHUB_CHECK_ITS_NAME),
|
141
|
-
string(name: 'GITHUB_CHECK_REPO', value: env.REPO),
|
142
|
-
string(name: 'GITHUB_CHECK_SHA1', value: env.GIT_BASE_COMMIT) ])
|
143
|
-
}
|
144
155
|
}
|
145
156
|
}
|
146
157
|
}
|
@@ -150,11 +161,11 @@ pipeline {
|
|
150
161
|
beforeAgent true
|
151
162
|
allOf {
|
152
163
|
anyOf {
|
153
|
-
branch '
|
164
|
+
branch 'main'
|
154
165
|
branch "\\d+\\.\\d+"
|
155
166
|
branch "v\\d?"
|
156
167
|
tag pattern: 'v\\d+.*', comparator: "REGEXP"
|
157
|
-
expression { return params.
|
168
|
+
expression { return params.Run_As_Main_Branch }
|
158
169
|
expression { return env.GITHUB_COMMENT?.contains('benchmark tests') }
|
159
170
|
}
|
160
171
|
expression { return params.bench_ci }
|
@@ -162,13 +173,13 @@ pipeline {
|
|
162
173
|
}
|
163
174
|
stages {
|
164
175
|
stage('Clean Workspace') {
|
165
|
-
agent { label '
|
176
|
+
agent { label 'microbenchmarks-pool' }
|
166
177
|
steps {
|
167
178
|
echo "Cleaning Workspace"
|
168
179
|
}
|
169
180
|
post {
|
170
181
|
always {
|
171
|
-
cleanWs()
|
182
|
+
cleanWs(notFailBuild: true)
|
172
183
|
}
|
173
184
|
}
|
174
185
|
}
|
@@ -183,7 +194,7 @@ pipeline {
|
|
183
194
|
unstash 'source'
|
184
195
|
dir("${BASE_DIR}"){
|
185
196
|
script {
|
186
|
-
def versions = readYaml(file: ".ci/.
|
197
|
+
def versions = readYaml(file: ".ci/.jenkins_ruby_benchmarks.yml")
|
187
198
|
def benchmarkTask = [:]
|
188
199
|
versions['RUBY_VERSION'].each{ v ->
|
189
200
|
benchmarkTask[v] = runBenchmark(v)
|
@@ -199,7 +210,6 @@ pipeline {
|
|
199
210
|
stage('Release') {
|
200
211
|
options { skipDefaultCheckout() }
|
201
212
|
environment {
|
202
|
-
RUBY_DOCKER_TAG = 'ruby:2.6'
|
203
213
|
HOME = '/var/lib/jenkins'
|
204
214
|
}
|
205
215
|
when {
|
@@ -256,11 +266,12 @@ pipeline {
|
|
256
266
|
(retry 10 curl --silent --show-error --fail -I https://rubygems.org/gems/elastic-apm/versions/${env.VERSION})
|
257
267
|
"""
|
258
268
|
dir("${OPBEANS_REPO}"){
|
259
|
-
git
|
260
|
-
url: "git@github.com:elastic/${OPBEANS_REPO}.git"
|
269
|
+
git(credentialsId: 'f6c7695a-671e-4f4f-a331-acdce44ff9ba',
|
270
|
+
url: "git@github.com:elastic/${OPBEANS_REPO}.git",
|
271
|
+
branch: 'main')
|
261
272
|
// It's required to transform the tag value to the gem version
|
262
273
|
sh script: ".ci/bump-version.sh ${env.VERSION}", label: 'Bump version'
|
263
|
-
// The opbeans pipeline will trigger a release for the
|
274
|
+
// The opbeans pipeline will trigger a release for the main branch
|
264
275
|
gitPush()
|
265
276
|
// The opbeans pipeline will trigger a release for the release tag
|
266
277
|
gitCreateTag(tag: "${env.BRANCH_NAME}")
|
@@ -282,7 +293,7 @@ pipeline {
|
|
282
293
|
*/
|
283
294
|
def runBenchmark(version){
|
284
295
|
return {
|
285
|
-
node('
|
296
|
+
node('microbenchmarks-pool'){
|
286
297
|
// Transform the versions like:
|
287
298
|
// - docker.elastic.co/observability-ci/jruby:9.2-12-jdk to jruby-9.2-12-jdk
|
288
299
|
// - jruby:9.1 to jruby-9.1
|
@@ -298,8 +309,6 @@ def runBenchmark(version){
|
|
298
309
|
}
|
299
310
|
try{
|
300
311
|
sh """./spec/scripts/benchmarks.sh "${version}" "${REFERENCE_REPO}" """
|
301
|
-
} catch(e){
|
302
|
-
throw e
|
303
312
|
} finally {
|
304
313
|
archiveArtifacts(
|
305
314
|
allowEmptyArchive: true,
|
@@ -307,6 +316,7 @@ def runBenchmark(version){
|
|
307
316
|
onlyIfSuccessful: false)
|
308
317
|
sendBenchmarks(file: "benchmark-${transformedVersion}.bulk",
|
309
318
|
index: "benchmark-ruby", archive: true)
|
319
|
+
cleanWs(notFailBuild: true)
|
310
320
|
}
|
311
321
|
}
|
312
322
|
}
|
@@ -410,7 +420,7 @@ def convergeCoverage() {
|
|
410
420
|
|
411
421
|
def prepareRelease(Closure body){
|
412
422
|
dir("${env.BASE_DIR}"){
|
413
|
-
docker.image(
|
423
|
+
docker.image(env.RUBY_DOCKER_TAG).inside('-v ${REFERENCE_REPO}:${REFERENCE_REPO} -v /etc/passwd:/etc/passwd -v ${HOME}/.ssh:${HOME}/.ssh') {
|
414
424
|
withEnv(["HOME=${env.WORKSPACE}/${env.BASE_DIR ?: ''}"]) {
|
415
425
|
rubygemsLogin.withApi(secret: "${env.RELEASE_SECRET}") {
|
416
426
|
withGitRelease(credentialsId: '2a9602aa-ab9f-4e52-baf3-b71ca88469c7-UserAndToken') {
|
@@ -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 "$
|
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
|
-
|
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 "$
|
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 "$
|
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 "$
|
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 "$
|
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
|
-
|
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" ]
|
data/.ci/docker/jruby/README.md
CHANGED
@@ -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
|
|
data/.ci/docker/jruby/run.sh
CHANGED
@@ -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
|
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
|
-
|
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
|
-
|
83
|
+
result=$?
|
84
|
+
report $result "${name}"
|
67
85
|
elif [ "${ACTION}" == "push" ] ; then
|
68
86
|
docker push "${name}" >> output.log 2>&1
|
69
|
-
|
87
|
+
result=$?
|
88
|
+
report $result "${name}"
|
70
89
|
else
|
71
90
|
./test.sh "${name}" $jdk_version
|
91
|
+
result=$?
|
72
92
|
fi
|
73
|
-
|
93
|
+
|
94
|
+
EXIT_CODE=$(max $EXIT_CODE $result)
|
95
|
+
done
|
96
|
+
|
97
|
+
exit "${EXIT_CODE}"
|