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.
Files changed (38) hide show
  1. checksums.yaml +4 -4
  2. data/.ci/.jenkins_codecov.yml +5 -0
  3. data/.ci/.jenkins_exclude.yml +9 -19
  4. data/.ci/.jenkins_framework.yml +1 -4
  5. data/.ci/.jenkins_master_framework.yml +3 -0
  6. data/.ci/Jenkinsfile +43 -118
  7. data/.ci/downstreamTests.groovy +59 -30
  8. data/.ci/jobs/apm-agent-ruby-downstream.yml +31 -0
  9. data/.ci/jobs/apm-agent-ruby-mbp.yml +34 -0
  10. data/.ci/jobs/defaults.yml +1 -36
  11. data/.pre-commit-config.yaml +22 -0
  12. data/.rspec +0 -1
  13. data/.rubocop.yml +3 -3
  14. data/CHANGELOG.md +12 -0
  15. data/docs/api.asciidoc +2 -2
  16. data/docs/configuration.asciidoc +37 -1
  17. data/docs/metrics.asciidoc +77 -6
  18. data/lib/elastic_apm.rb +2 -2
  19. data/lib/elastic_apm/agent.rb +11 -2
  20. data/lib/elastic_apm/central_config.rb +141 -0
  21. data/lib/elastic_apm/central_config/cache_control.rb +34 -0
  22. data/lib/elastic_apm/config.rb +152 -338
  23. data/lib/elastic_apm/config/bytes.rb +25 -0
  24. data/lib/elastic_apm/config/duration.rb +6 -8
  25. data/lib/elastic_apm/config/options.rb +134 -0
  26. data/lib/elastic_apm/config/regexp_list.rb +13 -0
  27. data/lib/elastic_apm/metadata.rb +2 -1
  28. data/lib/elastic_apm/metrics.rb +2 -1
  29. data/lib/elastic_apm/metrics/vm.rb +57 -0
  30. data/lib/elastic_apm/normalizers/action_view.rb +1 -1
  31. data/lib/elastic_apm/railtie.rb +10 -5
  32. data/lib/elastic_apm/spies/mongo.rb +13 -2
  33. data/lib/elastic_apm/stacktrace_builder.rb +2 -2
  34. data/lib/elastic_apm/transport/connection.rb +2 -0
  35. data/lib/elastic_apm/transport/serializers/metadata_serializer.rb +6 -1
  36. data/lib/elastic_apm/version.rb +1 -1
  37. metadata +11 -3
  38. data/lib/elastic_apm/config/size.rb +0 -28
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 47f1adcea0273ee666706ddea65216aa0d8ba4d15acb14be64a425b77e1c188c
4
- data.tar.gz: 7aa7372590f8c43585681cb84464af8bf984557699c43c09a4614f71e0cfc8b2
3
+ metadata.gz: eb99c67f61f3f3bc30f7fb7bc64accea3725295db3d7bf90c18f2ce33d183e1f
4
+ data.tar.gz: 1a45da759179fa4b284a14b580f9f318fe27d4d4ba60fc87d5360acbf1e5ab94
5
5
  SHA512:
6
- metadata.gz: d4afe772c0f242885882347f6c5ed3b6e319c533ab24f88e52ab3e5c68be16c33243529a642ff3644936218808b7163e7c60536c3632aa11c28d8072efc3ca21
7
- data.tar.gz: 49a6baa392426cb6f51b1327b23fc0f0d7257685c26737e222613595fb68be80b44f00b39d309535b918315e7138ba48ae9100837a92160c62265bafa2140764
6
+ metadata.gz: 731f900b1466cf7f017fbdf747c969e7748cb9fdedf4f9a2dd748d5dbf7da31a3ce96a249ecab002bf62c9961e9c9336b983f570f51775f352b8dba43f5a04cb
7
+ data.tar.gz: 52518d1fe04e4def36990303cee09643580dee8313ae2809f4e7f68fbc6783ba6028459987c291f153e29a5181ec3a289409d5bcc5fb138fbfae242b4f07747d
@@ -0,0 +1,5 @@
1
+ ---
2
+ # Tuple of ruby version and frameworks which are in charge to send data to codecov.
3
+ # # is the separator between the ruby version and the framework.
4
+ ENABLED:
5
+ - ruby:2.6#rails-6.0
@@ -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
@@ -1,5 +1,5 @@
1
1
  FRAMEWORK:
2
- - rails-6.0-rc1
2
+ - rails-6.0
3
3
  - rails-5.2
4
4
  - rails-5.1
5
5
  - rails-5.0
@@ -7,6 +7,3 @@ FRAMEWORK:
7
7
 
8
8
  - sinatra-2.0
9
9
  - sinatra-1.4
10
-
11
- - rails-master
12
- - sinatra-master
@@ -0,0 +1,3 @@
1
+ FRAMEWORK:
2
+ - rails-master
3
+ - sinatra-master
@@ -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 any
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='INFO'
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 'master || immutable' }
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
- rubyTasksGen = new RubyParallelTaskGenerator(
71
- xKey: 'RUBY_VERSION',
72
- yKey: 'FRAMEWORK',
73
- xFile: ".ci/.jenkins_ruby.yml",
74
- yFile: ".ci/.jenkins_framework.yml",
75
- exclusionFile: ".ci/.jenkins_exclude.yml",
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
- script{
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
+ }
@@ -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 any
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: '20', artifactNumToKeepStr: '20', daysToKeepStr: '30'))
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 'master || immutable' }
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
- deleteDir()
67
- unstash "source"
68
- dir("${BASE_DIR}"){
69
- script {
70
- rubyTasksGen = new RubyParallelTaskGenerator(
71
- xVersions: [ "${params.RUBY_VERSION}" ],
72
- yKey: 'FRAMEWORK',
73
- yFile: ".ci/.jenkins_framework.yml",
74
- exclusionFile: ".ci/.jenkins_exclude.yml",
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: false,
121
+ steps.junit(allowEmptyResults: true,
130
122
  keepLongStdio: true,
131
123
  testResults: "**/spec/ruby-agent-junit.xml")
132
- steps.codecov(repo: "${steps.env.REPO}", basedir: "${steps.env.BASE_DIR}",
133
- secret: "${steps.env.CODECOV_SECRET}")
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'