elastic-apm 4.5.0 → 4.6.2
Sign up to get free protection for your applications and to get access to all the features.
- 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}"
|