Dean Birch | a6ede7e | 2020-03-13 14:00:33 +0000 | [diff] [blame] | 1 | #!/usr/bin/env groovy |
| 2 | //------------------------------------------------------------------------------- |
Xinyu Zhang | efe0353 | 2022-09-07 18:14:44 +0800 | [diff] [blame] | 3 | // Copyright (c) 2020-2022, Arm Limited and Contributors. All rights reserved. |
Dean Birch | a6ede7e | 2020-03-13 14:00:33 +0000 | [diff] [blame] | 4 | // |
| 5 | // SPDX-License-Identifier: BSD-3-Clause |
| 6 | // |
| 7 | //------------------------------------------------------------------------------- |
| 8 | |
Xinyu Zhang | be224f6 | 2021-02-03 17:57:38 +0800 | [diff] [blame] | 9 | @NonCPS |
Xinyu Zhang | efe0353 | 2022-09-07 18:14:44 +0800 | [diff] [blame] | 10 | def isPerPatchJob() { |
| 11 | def upstream_job = manager.build.getAction(hudson.model.CauseAction.class).getCauses()[0] |
| 12 | if (upstream_job instanceof hudson.model.Cause.UpstreamCause) { |
| 13 | def gp_causes = upstream_job.getUpstreamCauses() |
| 14 | if (gp_causes.size() > 0 && gp_causes[0] instanceof hudson.model.Cause.UpstreamCause) { |
| 15 | print("Grand-parent project cause: ") |
| 16 | println(gp_causes[0].upstreamProject) |
| 17 | if (gp_causes[0].upstreamProject.endsWith("tf-m-static")) { |
| 18 | return true |
| 19 | } |
| 20 | } |
| 21 | } |
| 22 | return false |
| 23 | } |
| 24 | |
| 25 | def filterTestDevice() { |
| 26 | def device_type = env.DEVICE_FILTER |
| 27 | |
| 28 | if (env.DEVICE_FILTER != "") { |
| 29 | return device_type |
| 30 | } |
| 31 | // For AN521 builds running per-patch (started by the tf-m-static job), |
| 32 | // run tests only on FVP to improve turnaround/performance. |
Xinyu Zhang | 1b3cbea | 2022-12-22 12:33:40 +0800 | [diff] [blame] | 33 | // Skip tests on MUSCA B1 in per-patch for better performance. |
Xinyu Zhang | efe0353 | 2022-09-07 18:14:44 +0800 | [diff] [blame] | 34 | if (isPerPatchJob()) { |
Xinyu Zhang | 1b3cbea | 2022-12-22 12:33:40 +0800 | [diff] [blame] | 35 | if (env.TFM_PLATFORM == "arm/mps2/an521" || env.TFM_PLATFORM == "arm/musca_b1") { |
Xinyu Zhang | efe0353 | 2022-09-07 18:14:44 +0800 | [diff] [blame] | 36 | device_type = "--fvp-only " |
| 37 | print("Run test cases only on FVP in tf-m-static.") |
| 38 | } |
| 39 | } |
| 40 | |
| 41 | return device_type |
Xinyu Zhang | be224f6 | 2021-02-03 17:57:38 +0800 | [diff] [blame] | 42 | } |
| 43 | |
Xinyu Zhang | 22a1275 | 2022-10-10 17:21:21 +0800 | [diff] [blame] | 44 | def submitJobs(device_type) { |
Xinyu Zhang | 4c0e140 | 2021-04-26 11:46:47 +0800 | [diff] [blame] | 45 | dir("tf-m-ci-scripts") { |
| 46 | def res = sh(script: """./lava_helper/lava_create_jobs.py \ |
Xinyu Zhang | 22a1275 | 2022-10-10 17:21:21 +0800 | [diff] [blame] | 47 | --output-dir lava_jobs ${device_type} \ |
| 48 | --jenkins-build-url ${env.BUILD_URL} \ |
Leonardo Sandoval | 12fbb2f | 2021-04-15 14:36:09 -0500 | [diff] [blame] | 49 | --docker-prefix ${env.DOCKER_PREFIX} --license-variable "${env.LICENSE_VARIABLE}" \ |
| 50 | --enable-code-coverage "${env.CODE_COVERAGE_EN}" |
Xinyu Zhang | 4c0e140 | 2021-04-26 11:46:47 +0800 | [diff] [blame] | 51 | """, returnStdout: true).trim() |
| 52 | print(res) |
| 53 | job_ids = sh(script: """./lava_helper/lava_submit_jobs.py \ |
| 54 | --lava-url ${env.LAVA_URL} --job-dir lava_jobs \ |
| 55 | --lava-user ${LAVA_USER} --lava-token ${LAVA_TOKEN} | egrep "^JOBS" |
| 56 | """, returnStdout: true).trim() |
Paul Sokolovsky | 79b9d37 | 2022-01-05 14:03:14 +0300 | [diff] [blame] | 57 | print("${job_ids}") |
Xinyu Zhang | 4c0e140 | 2021-04-26 11:46:47 +0800 | [diff] [blame] | 58 | currentBuild.setDescription(job_ids) |
| 59 | } |
| 60 | } |
| 61 | |
Xinyu Zhang | 4cdfd1b | 2021-05-21 15:10:49 +0800 | [diff] [blame] | 62 | timestamps { |
| 63 | node("docker-amd64-tf-m-bionic") { |
| 64 | stage("Init") { |
| 65 | cleanWs() |
| 66 | dir("tf-m-ci-scripts") { |
| 67 | checkout([$class: 'GitSCM', branches: [[name: '$CI_SCRIPTS_BRANCH']], userRemoteConfigs: [[credentialsId: 'GIT_SSH_KEY', url: '$CI_SCRIPTS_REPO']]]) |
| 68 | } |
Dean Birch | a6ede7e | 2020-03-13 14:00:33 +0000 | [diff] [blame] | 69 | } |
Xinyu Zhang | 4cdfd1b | 2021-05-21 15:10:49 +0800 | [diff] [blame] | 70 | stage("LAVA") { |
Paul Sokolovsky | 64b7cc9 | 2022-03-28 20:55:43 +0300 | [diff] [blame] | 71 | // Workaround for Groovy CPS idiosyncrasies. See e.g. |
| 72 | // https://blog.thesparktree.com/you-dont-know-jenkins-part-3#solutions |
| 73 | upstream_job = null |
| 74 | gp_causes = null |
Xinyu Zhang | efe0353 | 2022-09-07 18:14:44 +0800 | [diff] [blame] | 75 | def device_type = filterTestDevice() |
Xinyu Zhang | be224f6 | 2021-02-03 17:57:38 +0800 | [diff] [blame] | 76 | |
Xinyu Zhang | 4cdfd1b | 2021-05-21 15:10:49 +0800 | [diff] [blame] | 77 | withCredentials([usernamePassword(credentialsId: env.LAVA_CREDENTIALS, passwordVariable: 'LAVA_TOKEN', usernameVariable: 'LAVA_USER')]) { |
| 78 | print("Generating LAVA jobs...") |
Xinyu Zhang | 4cdfd1b | 2021-05-21 15:10:49 +0800 | [diff] [blame] | 79 | try { |
Xinyu Zhang | 22a1275 | 2022-10-10 17:21:21 +0800 | [diff] [blame] | 80 | submitJobs(device_type) |
Xinyu Zhang | 4cdfd1b | 2021-05-21 15:10:49 +0800 | [diff] [blame] | 81 | } catch (Exception ex) { |
| 82 | print("LAVA-Submit failed! Exception: ${ex}") |
| 83 | print("Try to submit again...") |
Xinyu Zhang | 22a1275 | 2022-10-10 17:21:21 +0800 | [diff] [blame] | 84 | submitJobs(device_type) |
Xinyu Zhang | 4cdfd1b | 2021-05-21 15:10:49 +0800 | [diff] [blame] | 85 | currentBuild.setDescription(currentBuild.getDescription() + " Submitted twice!") |
| 86 | } |
Dean Birch | a6ede7e | 2020-03-13 14:00:33 +0000 | [diff] [blame] | 87 | } |
| 88 | } |
Xinyu Zhang | 4cdfd1b | 2021-05-21 15:10:49 +0800 | [diff] [blame] | 89 | stage("Post") { |
| 90 | archiveArtifacts artifacts: 'tf-m-ci-scripts/lava_jobs/**', allowEmptyArchive: true |
| 91 | cleanWs() |
| 92 | } |
Dean Birch | a6ede7e | 2020-03-13 14:00:33 +0000 | [diff] [blame] | 93 | } |
| 94 | } |