blob: 65ac67113688582c0bb0d929d22ff22df6f0df9c [file] [log] [blame]
#!/usr/bin/env groovy
//-------------------------------------------------------------------------------
// Copyright (c) 2020-2021, Arm Limited and Contributors. All rights reserved.
//
// SPDX-License-Identifier: BSD-3-Clause
//
//-------------------------------------------------------------------------------
@NonCPS
def getUpstreamJob() {
def cause = manager.build.getAction(hudson.model.CauseAction.class).getCauses()
return cause
}
def submitJobs(fvp_only_cmd, bl2_string, psa_string) {
dir("tf-m-ci-scripts") {
def res = sh(script: """./lava_helper/lava_create_jobs.py \
--build-number ${env.BUILD_NUMBER} --output-dir lava_jobs ${fvp_only_cmd}\
--compiler ${env.COMPILER} --platform ${env.TARGET_PLATFORM} \
${bl2_string} ${psa_string} --build-type ${env.CMAKE_BUILD_TYPE} \
--jenkins-build-url ${env.BUILD_URL} --proj-config ${env.PROJ_CONFIG} \
--docker-prefix ${env.DOCKER_PREFIX} --license-variable "${env.LICENSE_VARIABLE}" \
--enable-code-coverage "${env.CODE_COVERAGE_EN}"
""", returnStdout: true).trim()
print(res)
job_ids = sh(script: """./lava_helper/lava_submit_jobs.py \
--lava-url ${env.LAVA_URL} --job-dir lava_jobs \
--lava-user ${LAVA_USER} --lava-token ${LAVA_TOKEN} | egrep "^JOBS"
""", returnStdout: true).trim()
currentBuild.setDescription(job_ids)
}
}
timestamps {
node("docker-amd64-tf-m-bionic") {
stage("Init") {
cleanWs()
dir("tf-m-ci-scripts") {
checkout([$class: 'GitSCM', branches: [[name: '$CI_SCRIPTS_BRANCH']], userRemoteConfigs: [[credentialsId: 'GIT_SSH_KEY', url: '$CI_SCRIPTS_REPO']]])
}
}
stage("LAVA") {
def fvp_only_cmd = ""
def upstreamProject = getUpstreamJob()[0].upstreamProject
if (upstreamProject == "tf-m-build-and-test") {
fvp_only_cmd = "--fvp-only "
print("Run test cases only on FVP in per-patch.")
}
withCredentials([usernamePassword(credentialsId: env.LAVA_CREDENTIALS, passwordVariable: 'LAVA_TOKEN', usernameVariable: 'LAVA_USER')]) {
print("Generating LAVA jobs...")
def bl2_string = ""
def psa_string = ""
if (env.BL2.equals("True")) {
bl2_string = "--bl2"
}
// work around this string containing quotes?
if (env.PSA_API_SUITE != "") {
psa_string = "--psa-api-suite ${env.PSA_API_SUITE}"
}
try {
submitJobs(fvp_only_cmd, bl2_string, psa_string)
} catch (Exception ex) {
print("LAVA-Submit failed! Exception: ${ex}")
print("Try to submit again...")
submitJobs(fvp_only_cmd, bl2_string, psa_string)
currentBuild.setDescription(currentBuild.getDescription() + " Submitted twice!")
}
}
}
stage("Post") {
archiveArtifacts artifacts: 'tf-m-ci-scripts/lava_jobs/**', allowEmptyArchive: true
cleanWs()
}
}
}