mirror of
https://github.com/elastic/kibana.git
synced 2025-04-25 02:09:32 -04:00
[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:
parent
3d154a389e
commit
4962fe9d8a
5 changed files with 30 additions and 15 deletions
|
@ -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(
|
||||||
'''
|
'''
|
||||||
|
|
|
@ -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)
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -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
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue