blob: 4501e3bc9c9c74a3419e6f7b52d8ffe92b3322eb [file] [log] [blame]
Dean Birch62c4f082020-01-17 16:13:26 +00001#!/usr/bin/env groovy
2//-------------------------------------------------------------------------------
Hugo L'Hostise55a2752021-01-27 11:09:08 +00003// Copyright (c) 2020-2021, Arm Limited and Contributors. All rights reserved.
Dean Birch62c4f082020-01-17 16:13:26 +00004//
5// SPDX-License-Identifier: BSD-3-Clause
6//
7//-------------------------------------------------------------------------------
8
Dean Birchd0f9f8c2020-03-26 11:10:33 +00009@Library('trustedfirmware') _
10import org.trustedfirmware.Gerrit
11
Benjamin Copelandbe53b032020-10-30 19:57:59 +000012def nodeLabel = "docker-amd64-tf-m-bionic"
Dean Birchd0f9f8c2020-03-26 11:10:33 +000013if (env.COMPILER == "ARMCLANG") {
Benjamin Copelandbe53b032020-10-30 19:57:59 +000014 nodeLabel = "docker-amd64-tf-m-bionic"
Dean Birchd0f9f8c2020-03-26 11:10:33 +000015}
16
Xinyu Zhangab21b8d2021-04-30 14:15:09 +080017@NonCPS
18def getUpstreamJob() {
19 def cause = manager.build.getAction(hudson.model.CauseAction.class).getCauses()
20 return cause
21}
22
Xinyu Zhang4cdfd1b2021-05-21 15:10:49 +080023timestamps {
24 node(nodeLabel) {
25 stage("Init") {
26 cleanWs()
27 dir("trusted-firmware-m") {
28 checkout(
29 poll: false,
30 scm: [
31 $class: 'GitSCM',
32 branches: [[name: '$GERRIT_BRANCH']],
33 extensions: [[$class: 'BuildChooserSetting', buildChooser: [$class: 'GerritTriggerBuildChooser']]],
34 userRemoteConfigs: [[
35 credentialsId: 'GIT_SSH_KEY',
36 refspec: '$GERRIT_REFSPEC', url: '$CODE_REPO'
37 ]]
38 ])
Xinyu Zhang8472b852021-09-04 00:13:34 +080039 sh "git rev-parse --short HEAD"
Xinyu Zhang4cdfd1b2021-05-21 15:10:49 +080040 }
41 dir("tf-m-ci-scripts") {
42 checkout([$class: 'GitSCM', branches: [[name: '$CI_SCRIPTS_BRANCH']], userRemoteConfigs: [[credentialsId: 'GIT_SSH_KEY', url: '$CI_SCRIPTS_REPO']]])
Xinyu Zhang8472b852021-09-04 00:13:34 +080043 sh "git rev-parse --short HEAD"
Xinyu Zhang4cdfd1b2021-05-21 15:10:49 +080044 }
45 dir("mbedtls") {
Dean Birchd0f9f8c2020-03-26 11:10:33 +000046 checkout(
47 changelog: false,
48 poll: false,
49 scm: [
50 $class: 'GitSCM',
51 branches: [[name: 'FETCH_HEAD']],
52 userRemoteConfigs: [[
Xinyu Zhang4cdfd1b2021-05-21 15:10:49 +080053 refspec: 'refs/tags/$MBEDTLS_VERSION',
54 url: params.MBEDTLS_URL
Dean Birchd0f9f8c2020-03-26 11:10:33 +000055 ]]
56 ]
57 )
Xinyu Zhang8472b852021-09-04 00:13:34 +080058 sh "git rev-parse --short HEAD"
Dean Birchd0f9f8c2020-03-26 11:10:33 +000059 }
Xinyu Zhang4cdfd1b2021-05-21 15:10:49 +080060 dir("mcuboot") {
61 checkout(
62 changelog: false,
63 poll: false,
64 scm: [
65 $class: 'GitSCM',
66 branches: [[name: 'FETCH_HEAD']],
67 userRemoteConfigs: [[
68 refspec: '$MCUBOOT_REFSPEC',
69 url: params.MCUBOOT_URL
70 ]]
71 ]
72 )
Xinyu Zhang8472b852021-09-04 00:13:34 +080073 sh "git rev-parse --short HEAD"
Xinyu Zhangab21b8d2021-04-30 14:15:09 +080074 }
Xinyu Zhang4cdfd1b2021-05-21 15:10:49 +080075 dir("tf-m-tests") {
76 checkout(
77 changelog: false,
78 poll: false,
79 scm: [
80 $class: 'GitSCM',
81 branches: [[name: 'FETCH_HEAD']],
82 userRemoteConfigs: [[
83 refspec: '$TFM_TESTS_REFSPEC',
84 url: params.TFM_TESTS_URL
85 ]]
86 ]
87 )
Xinyu Zhang8472b852021-09-04 00:13:34 +080088 sh "git rev-parse --short HEAD"
Xinyu Zhang4cdfd1b2021-05-21 15:10:49 +080089 }
90 if (env.PSA_API_SUITE != "") {
91 dir("psa-arch-tests") {
92 checkout(
93 changelog: false,
94 poll: false,
95 scm: [
96 $class: 'GitSCM',
97 branches: [[name: 'FETCH_HEAD']],
98 userRemoteConfigs: [[
99 refspec: '$PSA_ARCH_TESTS_VERSION',
100 url: params.PSA_ARCH_TESTS_URL
101 ]]
102 ]
103 )
Xinyu Zhang8472b852021-09-04 00:13:34 +0800104 sh "git rev-parse --short HEAD"
Hugo L'Hostise55a2752021-01-27 11:09:08 +0000105 }
106 }
Dean Birchd0f9f8c2020-03-26 11:10:33 +0000107 }
Xinyu Zhang4cdfd1b2021-05-21 15:10:49 +0800108 try {
109 verify = 1
110 stage("Build") {
111 sh "tf-m-ci-scripts/run-build.sh"
112 }
113 stage("Post") {
114 archiveArtifacts 'trusted-firmware-m/build/bin/**'
115 archiveArtifacts 'trusted-firmware-m/build/install/interface/**'
116 def upstreamProject = getUpstreamJob()[0].upstreamProject
117 if (upstreamProject == "tf-m-build-and-test") {
118 archiveArtifacts 'trusted-firmware-m/build/generated/**'
119 }
120 if (env.SQUAD_CONFIGURATIONS != ""){
121 //Creating a folder to store memory footprint artifacts and launching the memory footprint script.
122 sh "mkdir tf-m-ci-scripts/Memory_footprint/"
123 withCredentials([string(credentialsId: 'QA_REPORTS_TOKEN', variable: 'TOKEN')]) {
124 sh(script: "python3 tf-m-ci-scripts/memory_footprint.py ${env.WORKSPACE}/trusted-firmware-m/ ${env.CONFIG_NAME} \'${env.SQUAD_CONFIGURATIONS}\' ${TOKEN}", returnStdout: true)
125 }
126 if (fileExists('tf-m-ci-scripts/Memory_footprint/filesize.json')) {
127 archiveArtifacts 'tf-m-ci-scripts/Memory_footprint/filesize.json'
128 }
129 }
130 }
131 } catch (Exception e) {
132 manager.buildFailure()
133 verify = -1
134 } finally {
135 g = new Gerrit()
136 g.verifyStatusInWorkspace(verify, env.CONFIG_NAME, 'build')
137 def buildStatus = (verify == 1) ? 'Successful' : 'Failed'
138 //g.commentInWorkspace("Build configuration ${env.CONFIG_NAME} ${buildStatus}: ${env.RUN_DISPLAY_URL}")
139 cleanWs()
140 }
Dean Birch62c4f082020-01-17 16:13:26 +0000141 }
142}