stop passing delegate manually as function argument
refs DE-687 Test Plan 1. JS test count equals master test count 2. "expected to call" CPS warning doesn't appear [canvas-builds-refspec=5a9ac2821ed203759e4f0e37f579774a210c81ba] Change-Id: Id5e5c8c3b80ad5483f8b08913806b2195401e334 Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/266238 Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com> QA-Review: Aaron Ogata <aogata@instructure.com> Product-Review: Aaron Ogata <aogata@instructure.com> Reviewed-by: Kyle Rosenbaum <krosenbaum@instructure.com>
This commit is contained in:
parent
f51e5b31f4
commit
fe5d819183
|
@ -53,41 +53,38 @@ pipeline {
|
|||
script {
|
||||
def runnerStages = [:]
|
||||
def stageHooks = [
|
||||
onNodeAcquired: jsStage.&setupNode,
|
||||
onNodeAcquired: jsStage.setupNode(),
|
||||
]
|
||||
|
||||
extendedStage('Runner - Jest').hooks(stageHooks).nodeRequirements(label: 'canvas-docker', podTemplate: libraryResource('/pod_templates/docker_base.yml'), container: 'docker').obeysAllowStages(false).timeout(10).queue(runnerStages) {
|
||||
def delegate = getDelegate()
|
||||
def tests = [:]
|
||||
|
||||
jsStage.queueJestStage(tests, delegate)
|
||||
callableWithDelegate(jsStage.queueJestStage())(tests)
|
||||
|
||||
parallel(tests)
|
||||
}
|
||||
|
||||
extendedStage('Runner - Coffee').hooks(stageHooks).nodeRequirements(label: 'canvas-docker', podTemplate: libraryResource('/pod_templates/docker_base.yml'), container: 'docker').obeysAllowStages(false).timeout(10).queue(runnerStages) {
|
||||
def delegate = getDelegate()
|
||||
def tests = [:]
|
||||
|
||||
for (int i = 0; i < COFFEE_NODE_COUNT; i++) {
|
||||
jsStage.queueKarmaStage(tests, delegate, 'coffee', i, COFFEE_NODE_COUNT)
|
||||
callableWithDelegate(jsStage.queueKarmaStage())(tests, 'coffee', i, COFFEE_NODE_COUNT)
|
||||
}
|
||||
|
||||
parallel(tests)
|
||||
}
|
||||
|
||||
extendedStage('Runner - Karma').hooks(stageHooks).nodeRequirements(label: 'canvas-docker', podTemplate: libraryResource('/pod_templates/docker_base.yml'), container: 'docker').obeysAllowStages(false).timeout(10).queue(runnerStages) {
|
||||
def delegate = getDelegate()
|
||||
def tests = [:]
|
||||
|
||||
jsStage.queuePackagesStage(tests, delegate)
|
||||
callableWithDelegate(jsStage.queuePackagesStage())(tests)
|
||||
|
||||
for (int i = 0; i < JSG_NODE_COUNT; i++) {
|
||||
jsStage.queueKarmaStage(tests, delegate, 'jsg', i, JSG_NODE_COUNT)
|
||||
callableWithDelegate(jsStage.queueKarmaStage())(tests, 'jsg', i, JSG_NODE_COUNT)
|
||||
}
|
||||
|
||||
['jsa', 'jsh'].each { group ->
|
||||
jsStage.queueKarmaStage(tests, delegate, group, 0, DEFAULT_NODE_COUNT)
|
||||
callableWithDelegate(jsStage.queueKarmaStage())(tests, group, 0, DEFAULT_NODE_COUNT)
|
||||
}
|
||||
|
||||
parallel(tests)
|
||||
|
|
|
@ -17,56 +17,62 @@
|
|||
*/
|
||||
|
||||
def setupNode() {
|
||||
def refspecToCheckout = env.GERRIT_PROJECT == 'canvas-lms' ? env.JENKINSFILE_REFSPEC : env.CANVAS_LMS_REFSPEC
|
||||
{ ->
|
||||
def refspecToCheckout = env.GERRIT_PROJECT == 'canvas-lms' ? env.JENKINSFILE_REFSPEC : env.CANVAS_LMS_REFSPEC
|
||||
|
||||
checkoutRepo('canvas-lms', refspecToCheckout, 1)
|
||||
checkoutRepo('canvas-lms', refspecToCheckout, 1)
|
||||
|
||||
credentials.withStarlordDockerLogin { ->
|
||||
sh "./build/new-jenkins/docker-with-flakey-network-protection.sh pull $KARMA_RUNNER_IMAGE"
|
||||
credentials.withStarlordDockerLogin { ->
|
||||
sh "./build/new-jenkins/docker-with-flakey-network-protection.sh pull $KARMA_RUNNER_IMAGE"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
def tearDownNode() {
|
||||
sh "mkdir -vp ${env.TEST_RESULT_OUTPUT_DIR}"
|
||||
sh "docker cp \$(docker ps -qa -f name=${env.CONTAINER_NAME}):/usr/src/app/${env.TEST_RESULT_OUTPUT_DIR} ${env.TEST_RESULT_OUTPUT_DIR}"
|
||||
{ ->
|
||||
sh "mkdir -vp ${env.TEST_RESULT_OUTPUT_DIR}"
|
||||
sh "docker cp \$(docker ps -qa -f name=${env.CONTAINER_NAME}):/usr/src/app/${env.TEST_RESULT_OUTPUT_DIR} ${env.TEST_RESULT_OUTPUT_DIR}"
|
||||
|
||||
sh "find ${env.TEST_RESULT_OUTPUT_DIR}"
|
||||
sh "find ${env.TEST_RESULT_OUTPUT_DIR}"
|
||||
|
||||
archiveArtifacts artifacts: "${env.TEST_RESULT_OUTPUT_DIR}/**/*.xml"
|
||||
junit "${env.TEST_RESULT_OUTPUT_DIR}/**/*.xml"
|
||||
}
|
||||
|
||||
def queueJestStage(stages, delegate) {
|
||||
queueTestStage(stages, delegate, 'tests-jest', []) {
|
||||
sh('build/new-jenkins/js/tests-jest.sh')
|
||||
archiveArtifacts artifacts: "${env.TEST_RESULT_OUTPUT_DIR}/**/*.xml"
|
||||
junit "${env.TEST_RESULT_OUTPUT_DIR}/**/*.xml"
|
||||
}
|
||||
}
|
||||
|
||||
def queueKarmaStage(stages, delegate, group, ciNode, ciTotal) {
|
||||
queueTestStage(stages, delegate, "tests-karma-${group}-${ciNode}", [
|
||||
"CI_NODE_INDEX=${ciNode}",
|
||||
"CI_NODE_TOTAL=${ciTotal}",
|
||||
"JSPEC_GROUP=${group}",
|
||||
]) {
|
||||
sh('build/new-jenkins/js/tests-karma.sh')
|
||||
def queueJestStage() {
|
||||
{ stages ->
|
||||
callableWithDelegate(queueTestStage())(stages, 'tests-jest', [], 'build/new-jenkins/js/tests-jest.sh')
|
||||
}
|
||||
}
|
||||
|
||||
def queuePackagesStage(stages, delegate) {
|
||||
queueTestStage(stages, delegate, 'tests-packages', []) {
|
||||
sh('build/new-jenkins/js/tests-packages.sh')
|
||||
def queueKarmaStage() {
|
||||
{ stages, group, ciNode, ciTotal ->
|
||||
callableWithDelegate(queueTestStage())(stages, "tests-karma-${group}-${ciNode}", [
|
||||
"CI_NODE_INDEX=${ciNode}",
|
||||
"CI_NODE_TOTAL=${ciTotal}",
|
||||
"JSPEC_GROUP=${group}",
|
||||
], 'build/new-jenkins/js/tests-karma.sh')
|
||||
}
|
||||
}
|
||||
|
||||
def queueTestStage(stages, delegate, containerName, additionalEnvVars, block) {
|
||||
def baseEnvVars = [
|
||||
"CONTAINER_NAME=${containerName}",
|
||||
"TEST_RESULT_OUTPUT_DIR=js-results/${containerName}",
|
||||
]
|
||||
|
||||
delegate.extendedStage(containerName)
|
||||
.envVars(baseEnvVars + additionalEnvVars)
|
||||
.hooks([onNodeReleasing: this.&tearDownNode])
|
||||
.obeysAllowStages(false)
|
||||
.queue(stages) { block() }
|
||||
def queuePackagesStage() {
|
||||
{ stages ->
|
||||
callableWithDelegate(queueTestStage())(stages, 'tests-packages', [], 'build/new-jenkins/js/tests-packages.sh')
|
||||
}
|
||||
}
|
||||
|
||||
def queueTestStage() {
|
||||
{ stages, containerName, additionalEnvVars, scriptName ->
|
||||
def baseEnvVars = [
|
||||
"CONTAINER_NAME=${containerName}",
|
||||
"TEST_RESULT_OUTPUT_DIR=js-results/${containerName}",
|
||||
]
|
||||
|
||||
extendedStage(containerName)
|
||||
.envVars(baseEnvVars + additionalEnvVars)
|
||||
.hooks([onNodeReleasing: this.tearDownNode()])
|
||||
.obeysAllowStages(false)
|
||||
.queue(stages) { sh(scriptName) }
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue