elastic-apm 2.9.1 → 2.10.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.
- checksums.yaml +4 -4
- data/.ci/.jenkins_codecov.yml +5 -0
- data/.ci/.jenkins_exclude.yml +9 -19
- data/.ci/.jenkins_framework.yml +1 -4
- data/.ci/.jenkins_master_framework.yml +3 -0
- data/.ci/Jenkinsfile +43 -118
- data/.ci/downstreamTests.groovy +59 -30
- data/.ci/jobs/apm-agent-ruby-downstream.yml +31 -0
- data/.ci/jobs/apm-agent-ruby-mbp.yml +34 -0
- data/.ci/jobs/defaults.yml +1 -36
- data/.pre-commit-config.yaml +22 -0
- data/.rspec +0 -1
- data/.rubocop.yml +3 -3
- data/CHANGELOG.md +12 -0
- data/docs/api.asciidoc +2 -2
- data/docs/configuration.asciidoc +37 -1
- data/docs/metrics.asciidoc +77 -6
- data/lib/elastic_apm.rb +2 -2
- data/lib/elastic_apm/agent.rb +11 -2
- data/lib/elastic_apm/central_config.rb +141 -0
- data/lib/elastic_apm/central_config/cache_control.rb +34 -0
- data/lib/elastic_apm/config.rb +152 -338
- data/lib/elastic_apm/config/bytes.rb +25 -0
- data/lib/elastic_apm/config/duration.rb +6 -8
- data/lib/elastic_apm/config/options.rb +134 -0
- data/lib/elastic_apm/config/regexp_list.rb +13 -0
- data/lib/elastic_apm/metadata.rb +2 -1
- data/lib/elastic_apm/metrics.rb +2 -1
- data/lib/elastic_apm/metrics/vm.rb +57 -0
- data/lib/elastic_apm/normalizers/action_view.rb +1 -1
- data/lib/elastic_apm/railtie.rb +10 -5
- data/lib/elastic_apm/spies/mongo.rb +13 -2
- data/lib/elastic_apm/stacktrace_builder.rb +2 -2
- data/lib/elastic_apm/transport/connection.rb +2 -0
- data/lib/elastic_apm/transport/serializers/metadata_serializer.rb +6 -1
- data/lib/elastic_apm/version.rb +1 -1
- metadata +11 -3
- data/lib/elastic_apm/config/size.rb +0 -28
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: eb99c67f61f3f3bc30f7fb7bc64accea3725295db3d7bf90c18f2ce33d183e1f
|
4
|
+
data.tar.gz: 1a45da759179fa4b284a14b580f9f318fe27d4d4ba60fc87d5360acbf1e5ab94
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 731f900b1466cf7f017fbdf747c969e7748cb9fdedf4f9a2dd748d5dbf7da31a3ce96a249ecab002bf62c9961e9c9336b983f570f51775f352b8dba43f5a04cb
|
7
|
+
data.tar.gz: 52518d1fe04e4def36990303cee09643580dee8313ae2809f4e7f68fbc6783ba6028459987c291f153e29a5181ec3a289409d5bcc5fb138fbfae242b4f07747d
|
data/.ci/.jenkins_exclude.yml
CHANGED
@@ -13,6 +13,15 @@ exclude:
|
|
13
13
|
- RUBY_VERSION: docker.elastic.co/observability-ci/jruby:9.1-7-jdk
|
14
14
|
FRAMEWORK: rails-4.2
|
15
15
|
|
16
|
+
- RUBY_VERSION: ruby:2.4
|
17
|
+
FRAMEWORK: rails-6.0
|
18
|
+
- RUBY_VERSION: ruby:2.3
|
19
|
+
FRAMEWORK: rails-6.0
|
20
|
+
- RUBY_VERSION: jruby:9.1
|
21
|
+
FRAMEWORK: rails-6.0
|
22
|
+
- RUBY_VERSION: docker.elastic.co/observability-ci/jruby:9.1-7-jdk
|
23
|
+
FRAMEWORK: rails-6.0
|
24
|
+
|
16
25
|
# Only test master on newest ruby
|
17
26
|
- RUBY_VERSION: ruby:2.5
|
18
27
|
FRAMEWORK: rails-master
|
@@ -52,22 +61,3 @@ exclude:
|
|
52
61
|
- RUBY_VERSION: docker.elastic.co/observability-ci/jruby:9.1-7-jdk
|
53
62
|
FRAMEWORK: sinatra-master
|
54
63
|
|
55
|
-
# Rails 6 beta
|
56
|
-
- RUBY_VERSION: ruby:2.5
|
57
|
-
FRAMEWORK: rails-6.0-rc1
|
58
|
-
- RUBY_VERSION: ruby:2.4
|
59
|
-
FRAMEWORK: rails-6.0-rc1
|
60
|
-
- RUBY_VERSION: ruby:2.3
|
61
|
-
FRAMEWORK: rails-6.0-rc1
|
62
|
-
- RUBY_VERSION: jruby:9.2
|
63
|
-
FRAMEWORK: rails-6.0-rc1
|
64
|
-
- RUBY_VERSION: jruby:9.1
|
65
|
-
FRAMEWORK: rails-6.0-rc1
|
66
|
-
- RUBY_VERSION: docker.elastic.co/observability-ci/jruby:9.2-12-jdk
|
67
|
-
FRAMEWORK: rails-6.0-rc1
|
68
|
-
- RUBY_VERSION: docker.elastic.co/observability-ci/jruby:9.2-11-jdk
|
69
|
-
FRAMEWORK: rails-6.0-rc1
|
70
|
-
- RUBY_VERSION: docker.elastic.co/observability-ci/jruby:9.2-8-jdk
|
71
|
-
FRAMEWORK: rails-6.0-rc1
|
72
|
-
- RUBY_VERSION: docker.elastic.co/observability-ci/jruby:9.1-7-jdk
|
73
|
-
FRAMEWORK: rails-6.0-rc1
|
data/.ci/.jenkins_framework.yml
CHANGED
data/.ci/Jenkinsfile
CHANGED
@@ -11,11 +11,11 @@ it is need as field to store the results of the tests.
|
|
11
11
|
@Field def rubyTasksGen
|
12
12
|
|
13
13
|
pipeline {
|
14
|
-
agent
|
14
|
+
agent { label 'linux && immutable' }
|
15
15
|
environment {
|
16
16
|
REPO = 'apm-agent-ruby'
|
17
17
|
BASE_DIR = "src/github.com/elastic/${env.REPO}"
|
18
|
-
PIPELINE_LOG_LEVEL='
|
18
|
+
PIPELINE_LOG_LEVEL='DEBUG'
|
19
19
|
NOTIFY_TO = credentials('notify-to')
|
20
20
|
JOB_GCS_BUCKET = credentials('gcs-bucket')
|
21
21
|
CODECOV_SECRET = 'secret/apm-team/ci/apm-agent-ruby-codecov'
|
@@ -39,7 +39,6 @@ pipeline {
|
|
39
39
|
}
|
40
40
|
parameters {
|
41
41
|
booleanParam(name: 'Run_As_Master_Branch', defaultValue: false, description: 'Allow to run any steps on a PR, some steps normally only run on master branch.')
|
42
|
-
booleanParam(name: 'doc_ci', defaultValue: true, description: 'Enable build docs.')
|
43
42
|
booleanParam(name: 'bench_ci', defaultValue: true, description: 'Enable run benchmarks.')
|
44
43
|
}
|
45
44
|
stages {
|
@@ -47,14 +46,33 @@ pipeline {
|
|
47
46
|
Checkout the code and stash it, to use it on other stages.
|
48
47
|
*/
|
49
48
|
stage('Checkout') {
|
50
|
-
agent { label '
|
49
|
+
agent { label 'immutable' }
|
51
50
|
options { skipDefaultCheckout() }
|
52
51
|
steps {
|
53
52
|
deleteDir()
|
54
|
-
gitCheckout(basedir: "${BASE_DIR}")
|
53
|
+
gitCheckout(basedir: "${BASE_DIR}", githubNotifyFirstTimeContributor: true)
|
55
54
|
stash allowEmpty: true, name: 'source', useDefaultExcludes: false
|
56
55
|
}
|
57
56
|
}
|
57
|
+
stage('Sanity checks') {
|
58
|
+
agent { label 'linux && immutable && docker' }
|
59
|
+
options { skipDefaultCheckout() }
|
60
|
+
environment {
|
61
|
+
HOME = "${env.WORKSPACE}"
|
62
|
+
PATH = "${env.WORKSPACE}/bin:${env.PATH}"
|
63
|
+
}
|
64
|
+
steps {
|
65
|
+
withGithubNotify(context: 'Sanity checks') {
|
66
|
+
deleteDir()
|
67
|
+
unstash 'source'
|
68
|
+
dir(BASE_DIR) {
|
69
|
+
catchError(buildResult: 'SUCCESS', stageResult: 'UNSTABLE', message: 'Sanity checks failed but keep running the build') {
|
70
|
+
preCommit(commit: "${GIT_BASE_COMMIT}", junit: true)
|
71
|
+
}
|
72
|
+
}
|
73
|
+
}
|
74
|
+
}
|
75
|
+
}
|
58
76
|
/**
|
59
77
|
Execute unit tests.
|
60
78
|
*/
|
@@ -67,18 +85,12 @@ pipeline {
|
|
67
85
|
unstash "source"
|
68
86
|
dir("${BASE_DIR}"){
|
69
87
|
script {
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
tag: "Ruby",
|
77
|
-
name: "Ruby",
|
78
|
-
steps: this
|
79
|
-
)
|
80
|
-
def mapPatallelTasks = rubyTasksGen.generateParallelTests()
|
81
|
-
parallel(mapPatallelTasks)
|
88
|
+
def ruby = readYaml(file: '.ci/.jenkins_ruby.yml')
|
89
|
+
def testTasks = [:]
|
90
|
+
ruby['RUBY_VERSION'].each{ rubyVersion ->
|
91
|
+
testTasks[rubyVersion] = { runJob(rubyVersion) }
|
92
|
+
}
|
93
|
+
parallel(testTasks)
|
82
94
|
}
|
83
95
|
}
|
84
96
|
}
|
@@ -136,31 +148,6 @@ pipeline {
|
|
136
148
|
}
|
137
149
|
}
|
138
150
|
}
|
139
|
-
/**
|
140
|
-
Build the documentation.
|
141
|
-
*/
|
142
|
-
stage('Documentation') {
|
143
|
-
agent { label 'linux && immutable' }
|
144
|
-
options { skipDefaultCheckout() }
|
145
|
-
when {
|
146
|
-
beforeAgent true
|
147
|
-
allOf {
|
148
|
-
anyOf {
|
149
|
-
branch 'master'
|
150
|
-
branch "\\d+\\.\\d+"
|
151
|
-
branch "v\\d?"
|
152
|
-
tag "v\\d+\\.\\d+\\.\\d+*"
|
153
|
-
expression { return params.Run_As_Master_Branch }
|
154
|
-
}
|
155
|
-
expression { return params.doc_ci }
|
156
|
-
}
|
157
|
-
}
|
158
|
-
steps {
|
159
|
-
deleteDir()
|
160
|
-
unstash 'source'
|
161
|
-
buildDocs(docsDir: "${BASE_DIR}/docs", archive: true)
|
162
|
-
}
|
163
|
-
}
|
164
151
|
stage('Integration Tests') {
|
165
152
|
agent none
|
166
153
|
when {
|
@@ -176,93 +163,21 @@ pipeline {
|
|
176
163
|
log(level: 'INFO', text: 'Launching Async ITs')
|
177
164
|
build(job: env.ITS_PIPELINE, propagate: false, wait: false,
|
178
165
|
parameters: [string(name: 'AGENT_INTEGRATION_TEST', value: 'Ruby'),
|
179
|
-
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}/${env.REPO}"),
|
166
|
+
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}"),
|
180
167
|
string(name: 'GITHUB_CHECK_NAME', value: env.GITHUB_CHECK_ITS_NAME),
|
181
168
|
string(name: 'GITHUB_CHECK_REPO', value: env.REPO),
|
182
|
-
string(name: 'GITHUB_CHECK_SHA1', value: env.GIT_BASE_COMMIT)]
|
169
|
+
string(name: 'GITHUB_CHECK_SHA1', value: env.GIT_BASE_COMMIT)]
|
170
|
+
)
|
183
171
|
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('/','+')}")
|
184
172
|
}
|
185
173
|
}
|
186
174
|
}
|
187
175
|
post {
|
188
176
|
cleanup {
|
189
|
-
|
190
|
-
if(rubyTasksGen?.results){
|
191
|
-
writeJSON(file: 'results.json', json: toJSON(rubyTasksGen.results), pretty: 2)
|
192
|
-
def mapResults = ["Ruby": rubyTasksGen.results]
|
193
|
-
def processor = new ResultsProcessor()
|
194
|
-
processor.processResults(mapResults)
|
195
|
-
archiveArtifacts allowEmptyArchive: true, artifacts: 'results.json,results.html', defaultExcludes: false
|
196
|
-
catchError(buildResult: 'SUCCESS') {
|
197
|
-
def datafile = readFile(file: "results.json")
|
198
|
-
def json = getVaultSecret(secret: 'secret/apm-team/ci/apm-server-benchmark-cloud')
|
199
|
-
sendDataToElasticsearch(es: json.data.url, data: datafile, restCall: '/jenkins-builds-test-results/_doc/')
|
200
|
-
}
|
201
|
-
}
|
202
|
-
}
|
203
|
-
notifyBuildResult()
|
204
|
-
}
|
205
|
-
}
|
206
|
-
}
|
207
|
-
|
208
|
-
/**
|
209
|
-
Parallel task generator for the integration tests.
|
210
|
-
*/
|
211
|
-
class RubyParallelTaskGenerator extends DefaultParallelTaskGenerator {
|
212
|
-
|
213
|
-
public RubyParallelTaskGenerator(Map params){
|
214
|
-
super(params)
|
215
|
-
}
|
216
|
-
|
217
|
-
/**
|
218
|
-
build a clousure that launch and agent and execute the corresponding test script,
|
219
|
-
then store the results.
|
220
|
-
*/
|
221
|
-
public Closure generateStep(x, y){
|
222
|
-
return {
|
223
|
-
steps.sleep steps.randomNumber(min:10, max: 30)
|
224
|
-
steps.node('linux && immutable'){
|
225
|
-
// Label is transformed to avoid using the internal docker registry in the x coordinate
|
226
|
-
// TODO: def label = "${tag}:${x?.drop(x?.lastIndexOf('/')+1)}#${y}"
|
227
|
-
def label = "${tag}:${x}#${y}"
|
228
|
-
try {
|
229
|
-
steps.runScript(label: label, ruby: x, framework: y)
|
230
|
-
saveResult(x, y, 1)
|
231
|
-
} catch(e){
|
232
|
-
saveResult(x, y, 0)
|
233
|
-
steps.error("${label} tests failed : ${e.toString()}\n")
|
234
|
-
} finally {
|
235
|
-
steps.junit(allowEmptyResults: false,
|
236
|
-
keepLongStdio: true,
|
237
|
-
testResults: "**/spec/ruby-agent-junit.xml")
|
238
|
-
steps.codecov(repo: "${steps.env.REPO}", basedir: "${steps.env.BASE_DIR}",
|
239
|
-
secret: "${steps.env.CODECOV_SECRET}")
|
240
|
-
}
|
177
|
+
notifyBuildResult()
|
241
178
|
}
|
242
179
|
}
|
243
180
|
}
|
244
|
-
}
|
245
|
-
|
246
|
-
/**
|
247
|
-
Run tests for a Ruby version and framework version.
|
248
|
-
*/
|
249
|
-
def runScript(Map params = [:]){
|
250
|
-
def label = params.label
|
251
|
-
def ruby = params.ruby
|
252
|
-
def framework = params.framework
|
253
|
-
log(level: 'INFO', text: "${label}")
|
254
|
-
env.HOME = "${env.WORKSPACE}"
|
255
|
-
env.PATH = "${env.PATH}:${env.WORKSPACE}/bin"
|
256
|
-
deleteDir()
|
257
|
-
unstash 'source'
|
258
|
-
dir("${BASE_DIR}"){
|
259
|
-
retry(2){
|
260
|
-
sleep randomNumber(min:10, max: 30)
|
261
|
-
dockerLogin(secret: "${DOCKER_SECRET}", registry: "${DOCKER_REGISTRY}")
|
262
|
-
sh("./spec/scripts/spec.sh ${ruby} ${framework}")
|
263
|
-
}
|
264
|
-
}
|
265
|
-
}
|
266
181
|
|
267
182
|
/**
|
268
183
|
Run benchmarks for a Ruby version, then report the results to the Elasticsearch server.
|
@@ -300,3 +215,13 @@ def runBenchmark(version){
|
|
300
215
|
}
|
301
216
|
}
|
302
217
|
}
|
218
|
+
|
219
|
+
def runJob(rubyVersion){
|
220
|
+
build( job: "apm-agent-ruby/apm-agent-ruby-downstream/${env.BRANCH_NAME}",
|
221
|
+
parameters: [
|
222
|
+
string(name: 'RUBY_VERSION', value: "${rubyVersion}"),
|
223
|
+
string(name: 'BRANCH_SPECIFIER', value: "${env.GIT_BASE_COMMIT}")
|
224
|
+
],
|
225
|
+
quietPeriod: 15
|
226
|
+
)
|
227
|
+
}
|
data/.ci/downstreamTests.groovy
CHANGED
@@ -11,7 +11,7 @@ it is need as field to store the results of the tests.
|
|
11
11
|
@Field def rubyTasksGen
|
12
12
|
|
13
13
|
pipeline {
|
14
|
-
agent
|
14
|
+
agent { label 'linux && immutable' }
|
15
15
|
environment {
|
16
16
|
REPO="git@github.com:elastic/apm-agent-ruby.git"
|
17
17
|
BASE_DIR="src/github.com/elastic/apm-agent-ruby"
|
@@ -25,7 +25,7 @@ pipeline {
|
|
25
25
|
}
|
26
26
|
options {
|
27
27
|
timeout(time: 2, unit: 'HOURS')
|
28
|
-
buildDiscarder(logRotator(numToKeepStr: '
|
28
|
+
buildDiscarder(logRotator(numToKeepStr: '300', artifactNumToKeepStr: '20', daysToKeepStr: '30'))
|
29
29
|
timestamps()
|
30
30
|
ansiColor('xterm')
|
31
31
|
disableResume()
|
@@ -36,49 +36,36 @@ pipeline {
|
|
36
36
|
parameters {
|
37
37
|
string(name: 'RUBY_VERSION', defaultValue: "ruby:2.6", description: "Ruby version to test")
|
38
38
|
string(name: 'BRANCH_SPECIFIER', defaultValue: "master", description: "Git branch/tag to use")
|
39
|
-
string(name: 'CHANGE_TARGET', defaultValue: "master", description: "Git branch/tag to merge before building")
|
40
39
|
}
|
41
40
|
stages {
|
42
41
|
/**
|
43
42
|
Checkout the code and stash it, to use it on other stages.
|
44
43
|
*/
|
45
44
|
stage('Checkout') {
|
46
|
-
agent { label '
|
45
|
+
agent { label 'immutable' }
|
47
46
|
options { skipDefaultCheckout() }
|
48
47
|
steps {
|
49
48
|
deleteDir()
|
50
|
-
gitCheckout(basedir: "${BASE_DIR}",
|
49
|
+
gitCheckout(basedir: "${BASE_DIR}",
|
51
50
|
branch: "${params.BRANCH_SPECIFIER}",
|
52
51
|
repo: "${REPO}",
|
53
|
-
credentialsId: "${JOB_GIT_CREDENTIALS}"
|
54
|
-
mergeTarget: "${params.CHANGE_TARGET}",
|
55
|
-
reference: '/var/lib/jenkins/apm-agent-ruby.git')
|
52
|
+
credentialsId: "${JOB_GIT_CREDENTIALS}")
|
56
53
|
stash allowEmpty: true, name: 'source', useDefaultExcludes: false
|
57
54
|
}
|
58
55
|
}
|
59
|
-
/**
|
60
|
-
Execute unit tests.
|
61
|
-
*/
|
62
56
|
stage('Test') {
|
63
57
|
agent { label 'linux && immutable' }
|
64
58
|
options { skipDefaultCheckout() }
|
65
59
|
steps {
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
tag: "Ruby",
|
76
|
-
name: "Ruby",
|
77
|
-
steps: this
|
78
|
-
)
|
79
|
-
def mapPatallelTasks = rubyTasksGen.generateParallelTests()
|
80
|
-
parallel(mapPatallelTasks)
|
81
|
-
}
|
60
|
+
runTests('.ci/.jenkins_framework.yml')
|
61
|
+
}
|
62
|
+
}
|
63
|
+
stage('Master Test') {
|
64
|
+
agent { label 'linux && immutable' }
|
65
|
+
options { skipDefaultCheckout() }
|
66
|
+
steps {
|
67
|
+
catchError(buildResult: 'SUCCESS', stageResult: 'UNSTABLE', message: "The tests for the master framework have failed. Let's warn instead.") {
|
68
|
+
runTests('.ci/.jenkins_master_framework.yml')
|
82
69
|
}
|
83
70
|
}
|
84
71
|
}
|
@@ -92,6 +79,11 @@ pipeline {
|
|
92
79
|
def processor = new ResultsProcessor()
|
93
80
|
processor.processResults(mapResults)
|
94
81
|
archiveArtifacts allowEmptyArchive: true, artifacts: 'results.json,results.html', defaultExcludes: false
|
82
|
+
catchError(buildResult: 'SUCCESS') {
|
83
|
+
def datafile = readFile(file: "results.json")
|
84
|
+
def json = getVaultSecret(secret: 'secret/apm-team/ci/jenkins-stats-cloud')
|
85
|
+
sendDataToElasticsearch(es: json.data.url, data: datafile, restCall: '/jenkins-builds-ruby-test-results/_doc/')
|
86
|
+
}
|
95
87
|
}
|
96
88
|
}
|
97
89
|
notifyBuildResult()
|
@@ -126,11 +118,13 @@ class RubyParallelTaskGenerator extends DefaultParallelTaskGenerator {
|
|
126
118
|
saveResult(x, y, 0)
|
127
119
|
steps.error("${label} tests failed : ${e.toString()}\n")
|
128
120
|
} finally {
|
129
|
-
steps.junit(allowEmptyResults:
|
121
|
+
steps.junit(allowEmptyResults: true,
|
130
122
|
keepLongStdio: true,
|
131
123
|
testResults: "**/spec/ruby-agent-junit.xml")
|
132
|
-
steps.
|
133
|
-
|
124
|
+
if (steps.isCodecovEnabled(x, y)) {
|
125
|
+
steps.codecov(repo: "${steps.env.REPO}", basedir: "${steps.env.BASE_DIR}",
|
126
|
+
secret: "${steps.env.CODECOV_SECRET}")
|
127
|
+
}
|
134
128
|
}
|
135
129
|
}
|
136
130
|
}
|
@@ -157,3 +151,38 @@ def runScript(Map params = [:]){
|
|
157
151
|
}
|
158
152
|
}
|
159
153
|
}
|
154
|
+
|
155
|
+
/**
|
156
|
+
* Whether the given ruby version and framework are in charge of sending the
|
157
|
+
* codecov results. It does require the workspace.
|
158
|
+
*/
|
159
|
+
def isCodecovEnabled(ruby, framework){
|
160
|
+
dir(BASE_DIR){
|
161
|
+
def codecovVersions = readYaml(file: '.ci/.jenkins_codecov.yml')
|
162
|
+
return codecovVersions['ENABLED'].any { it.trim() == "${ruby?.trim()}#${framework?.trim()}" }
|
163
|
+
}
|
164
|
+
}
|
165
|
+
|
166
|
+
/**
|
167
|
+
Run all the tests for the given ruby version and file with the frameworks to test
|
168
|
+
*/
|
169
|
+
def runTests(frameworkFile) {
|
170
|
+
deleteDir()
|
171
|
+
unstash "source"
|
172
|
+
dir("${BASE_DIR}"){
|
173
|
+
script {
|
174
|
+
rubyTasksGen = new RubyParallelTaskGenerator(
|
175
|
+
xVersions: [ "${params.RUBY_VERSION}" ],
|
176
|
+
xKey: 'RUBY_VERSION',
|
177
|
+
yKey: 'FRAMEWORK',
|
178
|
+
yFile: frameworkFile,
|
179
|
+
exclusionFile: '.ci/.jenkins_exclude.yml',
|
180
|
+
tag: 'Ruby',
|
181
|
+
name: 'Ruby',
|
182
|
+
steps: this
|
183
|
+
)
|
184
|
+
def mapPatallelTasks = rubyTasksGen.generateParallelTests()
|
185
|
+
parallel(mapPatallelTasks)
|
186
|
+
}
|
187
|
+
}
|
188
|
+
}
|
@@ -4,3 +4,34 @@
|
|
4
4
|
display-name: APM Agent Ruby Downstream
|
5
5
|
description: APM Agent Ruby Downstream .
|
6
6
|
script-path: .ci/downstreamTests.groovy
|
7
|
+
scm:
|
8
|
+
- github:
|
9
|
+
branch-discovery: no-pr
|
10
|
+
discover-pr-forks-strategy: merge-current
|
11
|
+
discover-pr-forks-trust: permission
|
12
|
+
discover-pr-origin: merge-current
|
13
|
+
discover-tags: true
|
14
|
+
notification-context: 'apm-ci/downstream'
|
15
|
+
property-strategies:
|
16
|
+
all-branches:
|
17
|
+
- suppress-scm-triggering: true
|
18
|
+
repo: apm-agent-ruby
|
19
|
+
repo-owner: elastic
|
20
|
+
credentials-id: 2a9602aa-ab9f-4e52-baf3-b71ca88469c7-UserAndToken
|
21
|
+
ssh-checkout:
|
22
|
+
credentials: f6c7695a-671e-4f4f-a331-acdce44ff9ba
|
23
|
+
clean:
|
24
|
+
after: true
|
25
|
+
before: true
|
26
|
+
prune: true
|
27
|
+
shallow-clone: true
|
28
|
+
depth: 3
|
29
|
+
do-not-fetch-tags: true
|
30
|
+
submodule:
|
31
|
+
disable: false
|
32
|
+
recursive: true
|
33
|
+
parent-credentials: true
|
34
|
+
timeout: 100
|
35
|
+
timeout: '15'
|
36
|
+
use-author: true
|
37
|
+
wipe-workspace: 'True'
|