Dean Birch | 62c4f08 | 2020-01-17 16:13:26 +0000 | [diff] [blame] | 1 | #!/usr/bin/env groovy |
| 2 | //------------------------------------------------------------------------------- |
Paul Sokolovsky | 2ae6c74 | 2024-03-09 15:16:19 +0700 | [diff] [blame] | 3 | // Copyright (c) 2020-2024, Arm Limited and Contributors. All rights reserved. |
Dean Birch | 62c4f08 | 2020-01-17 16:13:26 +0000 | [diff] [blame] | 4 | // |
| 5 | // SPDX-License-Identifier: BSD-3-Clause |
| 6 | // |
| 7 | //------------------------------------------------------------------------------- |
| 8 | |
Dean Birch | d0f9f8c | 2020-03-26 11:10:33 +0000 | [diff] [blame] | 9 | @Library('trustedfirmware') _ |
| 10 | import org.trustedfirmware.Gerrit |
| 11 | |
Paul Sokolovsky | 2ae6c74 | 2024-03-09 15:16:19 +0700 | [diff] [blame] | 12 | def nodeLabel = "docker-amd64-tf-m-jammy" |
Dean Birch | d0f9f8c | 2020-03-26 11:10:33 +0000 | [diff] [blame] | 13 | |
Xinyu Zhang | ab21b8d | 2021-04-30 14:15:09 +0800 | [diff] [blame] | 14 | @NonCPS |
| 15 | def getUpstreamJob() { |
| 16 | def cause = manager.build.getAction(hudson.model.CauseAction.class).getCauses() |
| 17 | return cause |
| 18 | } |
| 19 | |
Xinyu Zhang | 4cdfd1b | 2021-05-21 15:10:49 +0800 | [diff] [blame] | 20 | timestamps { |
| 21 | node(nodeLabel) { |
| 22 | stage("Init") { |
| 23 | cleanWs() |
Xinyu Zhang | 4cdfd1b | 2021-05-21 15:10:49 +0800 | [diff] [blame] | 24 | dir("tf-m-ci-scripts") { |
| 25 | checkout([$class: 'GitSCM', branches: [[name: '$CI_SCRIPTS_BRANCH']], userRemoteConfigs: [[credentialsId: 'GIT_SSH_KEY', url: '$CI_SCRIPTS_REPO']]]) |
Xinyu Zhang | 8472b85 | 2021-09-04 00:13:34 +0800 | [diff] [blame] | 26 | sh "git rev-parse --short HEAD" |
Leonardo Sandoval | 7090b2c | 2021-09-17 13:20:44 -0500 | [diff] [blame] | 27 | // Clone TF-M repositories so share folder can be reused by downstream jobs |
| 28 | sh "./clone.sh" |
Hugo L'Hostis | e55a275 | 2021-01-27 11:09:08 +0000 | [diff] [blame] | 29 | } |
Dean Birch | d0f9f8c | 2020-03-26 11:10:33 +0000 | [diff] [blame] | 30 | } |
Xinyu Zhang | 4cdfd1b | 2021-05-21 15:10:49 +0800 | [diff] [blame] | 31 | try { |
| 32 | verify = 1 |
| 33 | stage("Build") { |
Paul Sokolovsky | e0e6ffa | 2023-11-01 19:40:57 +0300 | [diff] [blame] | 34 | // Activate UBL license for ArmClang. |
| 35 | if (env.CONFIG_NAME.contains("ARMCLANG")) { |
| 36 | withCredentials([string(credentialsId: 'ARMCLANG_UBL_CODE', variable: 'ARMCLANG_UBL_CODE')]) { |
Paul Sokolovsky | 2f5ab4e | 2023-12-01 12:11:39 +0300 | [diff] [blame] | 37 | sh "tf-m-ci-scripts/jenkins/armclang-ubl.sh" |
Paul Sokolovsky | e0e6ffa | 2023-11-01 19:40:57 +0300 | [diff] [blame] | 38 | } |
| 39 | } |
| 40 | |
Xinyu Zhang | 4cdfd1b | 2021-05-21 15:10:49 +0800 | [diff] [blame] | 41 | sh "tf-m-ci-scripts/run-build.sh" |
| 42 | } |
| 43 | stage("Post") { |
Xinyu Zhang | a88a2eb | 2023-08-15 17:43:51 +0800 | [diff] [blame] | 44 | archiveArtifacts 'ci_build/spe/bin/**' |
Xinyu Zhang | a88a2eb | 2023-08-15 17:43:51 +0800 | [diff] [blame] | 45 | archiveArtifacts 'ci_build/spe/api_ns/bin/**' |
| 46 | archiveArtifacts 'ci_build/spe/api_ns/interface/**' |
Xinyu Zhang | 8ea4cfc | 2023-10-30 18:28:43 +0800 | [diff] [blame] | 47 | try { |
| 48 | archiveArtifacts 'ci_build/nspe/bin/**' |
| 49 | } catch (Exception e) { |
| 50 | print("ci_build/nspe/bin not exists") |
| 51 | } |
| 52 | try { |
| 53 | archiveArtifacts 'ci_build/nspe/*.bin' |
| 54 | } catch (Exception e) { |
| 55 | print("ci_build/nspe/*.bin not exists") |
| 56 | } |
Xinyu Zhang | 4cdfd1b | 2021-05-21 15:10:49 +0800 | [diff] [blame] | 57 | def upstreamProject = getUpstreamJob()[0].upstreamProject |
| 58 | if (upstreamProject == "tf-m-build-and-test") { |
Xinyu Zhang | a88a2eb | 2023-08-15 17:43:51 +0800 | [diff] [blame] | 59 | archiveArtifacts 'ci_build/spe/build-spe/generated/**' |
Xinyu Zhang | 4cdfd1b | 2021-05-21 15:10:49 +0800 | [diff] [blame] | 60 | } |
Jianliang Shen | 4870415 | 2023-10-17 17:06:00 +0800 | [diff] [blame] | 61 | if (upstreamProject == "tf-m-nightly-performance"){ |
Xinyu Zhang | 4cdfd1b | 2021-05-21 15:10:49 +0800 | [diff] [blame] | 62 | //Creating a folder to store memory footprint artifacts and launching the memory footprint script. |
Jianliang Shen | 4870415 | 2023-10-17 17:06:00 +0800 | [diff] [blame] | 63 | sh "mkdir -p ${SHARE_FOLDER}/Memory_footprint/" |
| 64 | output = sh(script: """python3 tf-m-ci-scripts/performance.py --generate-memory""", returnStdout: true).trim() |
| 65 | println(output) |
Xinyu Zhang | 4cdfd1b | 2021-05-21 15:10:49 +0800 | [diff] [blame] | 66 | } |
| 67 | } |
| 68 | } catch (Exception e) { |
Xinyu Zhang | a88a2eb | 2023-08-15 17:43:51 +0800 | [diff] [blame] | 69 | archiveArtifacts artifacts: 'ci_build/**', allowEmptyArchive: true |
Xinyu Zhang | 4cdfd1b | 2021-05-21 15:10:49 +0800 | [diff] [blame] | 70 | manager.buildFailure() |
| 71 | verify = -1 |
| 72 | } finally { |
| 73 | g = new Gerrit() |
| 74 | g.verifyStatusInWorkspace(verify, env.CONFIG_NAME, 'build') |
| 75 | def buildStatus = (verify == 1) ? 'Successful' : 'Failed' |
| 76 | //g.commentInWorkspace("Build configuration ${env.CONFIG_NAME} ${buildStatus}: ${env.RUN_DISPLAY_URL}") |
| 77 | cleanWs() |
| 78 | } |
Dean Birch | 62c4f08 | 2020-01-17 16:13:26 +0000 | [diff] [blame] | 79 | } |
| 80 | } |