[jenkins] refer to sizes in most pipeline code (#62082)

* [jenkins] refer to sizes in most pipeline code

* switch back to `linux && immutable` for small instances

Co-authored-by: spalger <spalger@users.noreply.github.com>
Co-authored-by: Elastic Machine <elasticmachine@users.noreply.github.com>
This commit is contained in:
Spencer 2020-04-04 07:11:31 -07:00 committed by GitHub
parent 3d154a389e
commit 4962fe9d8a
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 30 additions and 15 deletions

View file

@ -44,7 +44,7 @@ kibanaPipeline(timeoutMinutes: 180) {
'xpack-ciGroup10': kibanaPipeline.xpackCiGroupProcess(10), 'xpack-ciGroup10': kibanaPipeline.xpackCiGroupProcess(10),
]), ]),
]) ])
workers.base(name: 'coverage-worker', label: 'tests-l', ramDisk: false, bootstrapped: false) { workers.base(name: 'coverage-worker', size: 'l', ramDisk: false, bootstrapped: false) {
kibanaPipeline.downloadCoverageArtifacts() kibanaPipeline.downloadCoverageArtifacts()
kibanaPipeline.bash( kibanaPipeline.bash(
''' '''

View file

@ -7,12 +7,12 @@ kibanaPipeline(timeoutMinutes: 120) {
catchError { catchError {
parallel([ parallel([
'oss-visualRegression': { 'oss-visualRegression': {
workers.ci(name: 'oss-visualRegression', label: 'linux && immutable', ramDisk: false) { workers.ci(name: 'oss-visualRegression', size: 's', ramDisk: false) {
kibanaPipeline.functionalTestProcess('oss-visualRegression', './test/scripts/jenkins_visual_regression.sh')(1) kibanaPipeline.functionalTestProcess('oss-visualRegression', './test/scripts/jenkins_visual_regression.sh')(1)
} }
}, },
'xpack-visualRegression': { 'xpack-visualRegression': {
workers.ci(name: 'xpack-visualRegression', label: 'linux && immutable', ramDisk: false) { workers.ci(name: 'xpack-visualRegression', size: 's', ramDisk: false) {
kibanaPipeline.functionalTestProcess('xpack-visualRegression', './test/scripts/jenkins_xpack_visual_regression.sh')(1) kibanaPipeline.functionalTestProcess('xpack-visualRegression', './test/scripts/jenkins_xpack_visual_regression.sh')(1)
} }
}, },

View file

@ -25,7 +25,7 @@ def PROMOTE_WITHOUT_VERIFY = !!params.PROMOTE_WITHOUT_VERIFICATION
timeout(time: 120, unit: 'MINUTES') { timeout(time: 120, unit: 'MINUTES') {
timestamps { timestamps {
ansiColor('xterm') { ansiColor('xterm') {
node('linux && immutable') { node(workers.label('s')) {
catchErrors { catchErrors {
def VERSION def VERSION
def SNAPSHOT_ID def SNAPSHOT_ID

View file

@ -61,7 +61,7 @@ kibanaPipeline(timeoutMinutes: 120) {
} }
def promoteSnapshot(snapshotVersion, snapshotId) { def promoteSnapshot(snapshotVersion, snapshotId) {
node('linux && immutable') { node(workers.label('s')) {
esSnapshots.promote(snapshotVersion, snapshotId) esSnapshots.promote(snapshotVersion, snapshotId)
} }
} }

View file

@ -1,23 +1,38 @@
// "Workers" in this file will spin up an instance, do some setup etc depending on the configuration, and then execute some work that you define // "Workers" in this file will spin up an instance, do some setup etc depending on the configuration, and then execute some work that you define
// e.g. workers.base(name: 'my-worker') { sh "echo 'ready to execute some kibana scripts'" } // e.g. workers.base(name: 'my-worker') { sh "echo 'ready to execute some kibana scripts'" }
def label(size) {
switch(size) {
case 's':
return 'linux && immutable'
case 'l':
return 'tests-l'
case 'xl':
return 'tests-xl'
case 'xxl':
return 'tests-xxl'
}
error "unknown size '${size}'"
}
/* /*
The base worker that all of the others use. Will clone the scm (assumed to be kibana), and run kibana bootstrap processes by default. The base worker that all of the others use. Will clone the scm (assumed to be kibana), and run kibana bootstrap processes by default.
Parameters: Parameters:
label - gobld/agent label to use, e.g. 'linux && immutable' size - size of worker label to use, e.g. 's' or 'xl'
ramDisk - Should the workspace be mounted in memory? Default: true ramDisk - Should the workspace be mounted in memory? Default: true
bootstrapped - If true, download kibana dependencies, run kbn bootstrap, etc. Default: true bootstrapped - If true, download kibana dependencies, run kbn bootstrap, etc. Default: true
name - Name of the worker for display purposes, filenames, etc. name - Name of the worker for display purposes, filenames, etc.
scm - Jenkins scm configuration for checking out code. Use `null` to disable checkout. Default: inherited from job scm - Jenkins scm configuration for checking out code. Use `null` to disable checkout. Default: inherited from job
*/ */
def base(Map params, Closure closure) { def base(Map params, Closure closure) {
def config = [label: '', ramDisk: true, bootstrapped: true, name: 'unnamed-worker', scm: scm] + params def config = [size: '', ramDisk: true, bootstrapped: true, name: 'unnamed-worker', scm: scm] + params
if (!config.label) { if (!config.size) {
error "You must specify an agent label, such as 'tests-xl' or 'linux && immutable', when using workers.base()" error "You must specify an agent size, such as 'xl' or 's', when using workers.base()"
} }
node(config.label) { node(label(config.size)) {
agentInfo.print() agentInfo.print()
if (config.ramDisk) { if (config.ramDisk) {
@ -88,7 +103,7 @@ def ci(Map params, Closure closure) {
// Worker for running the current intake jobs. Just runs a single script after bootstrap. // Worker for running the current intake jobs. Just runs a single script after bootstrap.
def intake(jobName, String script) { def intake(jobName, String script) {
return { return {
ci(name: jobName, label: 'linux && immutable', ramDisk: false) { ci(name: jobName, size: 's', ramDisk: false) {
withEnv(["JOB=${jobName}"]) { withEnv(["JOB=${jobName}"]) {
runbld(script, "Execute ${jobName}") runbld(script, "Execute ${jobName}")
} }
@ -99,7 +114,7 @@ def intake(jobName, String script) {
// Worker for running functional tests. Runs a setup process (e.g. the kibana build) then executes a map of closures in parallel (e.g. one for each ciGroup) // Worker for running functional tests. Runs a setup process (e.g. the kibana build) then executes a map of closures in parallel (e.g. one for each ciGroup)
def functional(name, Closure setup, Map processes) { def functional(name, Closure setup, Map processes) {
return { return {
parallelProcesses(name: name, setup: setup, processes: processes, delayBetweenProcesses: 20, label: 'tests-xl') parallelProcesses(name: name, setup: setup, processes: processes, delayBetweenProcesses: 20, size: 'xl')
} }
} }
@ -111,12 +126,12 @@ def functional(name, Closure setup, Map processes) {
setup: Closure to execute after the agent is bootstrapped, before starting the parallel work setup: Closure to execute after the agent is bootstrapped, before starting the parallel work
processes: Map of closures that will execute in parallel after setup. Each closure is passed a unique number. processes: Map of closures that will execute in parallel after setup. Each closure is passed a unique number.
delayBetweenProcesses: Number of seconds to wait between starting the parallel processes. Useful to spread the load of heavy init processes, e.g. Elasticsearch starting up. Default: 0 delayBetweenProcesses: Number of seconds to wait between starting the parallel processes. Useful to spread the load of heavy init processes, e.g. Elasticsearch starting up. Default: 0
label: gobld/agent label to use, e.g. 'linux && immutable'. Default: 'tests-xl', a 32 CPU machine used for running many functional test suites in parallel size: size of worker label to use, e.g. 's' or 'xl'
*/ */
def parallelProcesses(Map params) { def parallelProcesses(Map params) {
def config = [name: 'parallel-worker', setup: {}, processes: [:], delayBetweenProcesses: 0, label: 'tests-xl'] + params def config = [name: 'parallel-worker', setup: {}, processes: [:], delayBetweenProcesses: 0, size: 'xl'] + params
ci(label: config.label, name: config.name) { ci(size: config.size, name: config.name) {
config.setup() config.setup()
def nextProcessNumber = 1 def nextProcessNumber = 1