blob: 6671234ed9953487491011f7802417d1d050ddf5 [file] [log] [blame]
Leonardo Sandoval2902d2f2020-11-25 12:32:31 -06001- job:
Leonardo Sandovalffaee982021-11-11 10:27:57 -06002 name: tf-a-main
Boyan Karatotev5c87c072023-02-10 11:04:58 +00003 node: docker-amd64-tf-a-jammy
Leonardo Sandoval2902d2f2020-11-25 12:32:31 -06004 project-type: multijob
5 concurrent: true
6 disabled: false
7 description: Main CI job for Trusted Firmware.
8 properties:
Chris Kay675db4f2025-06-24 14:14:34 +01009 - throttle:
10 option: project
11 enabled: true
12 max-total: 5
13 - build-discarder:
14 days-to-keep: 14
15 num-to-keep: 60
Leonardo Sandoval2902d2f2020-11-25 12:32:31 -060016 parameters:
Chris Kay675db4f2025-06-24 14:14:34 +010017 - string:
18 name: TF_GERRIT_PROJECT
19 default: TF-A/trusted-firmware-a
20 - string:
21 name: TF_GERRIT_BRANCH
22 default: refs/heads/integration
23 - string:
24 name: TF_GERRIT_REFSPEC
25 default: +refs/heads/integration:refs/remotes/origin/integration
26 - string:
27 name: TFTF_GERRIT_PROJECT
28 default: TF-A/tf-a-tests
29 - string:
30 name: TFTF_GERRIT_BRANCH
31 default: refs/heads/master
32 - string:
33 name: TFTF_GERRIT_REFSPEC
34 default: +refs/heads/master:refs/remotes/origin/master
35 - string:
36 name: SPM_REFSPEC
37 default: +refs/heads/master:refs/remotes/origin/master
38 description: |
39 SPM(Hafnium) refspec to use. The master branch is used by default.
40 - string:
41 name: RMM_REFSPEC
42 default: +refs/heads/main:refs/remotes/origin/main
43 description: |
44 tf-rmm refspec to use. The main branch is used by default.
45 - string:
46 name: CI_REFSPEC
47 default: +refs/heads/master:refs/remotes/origin/master
48 - string:
49 name: JOBS_REFSPEC
50 default: refs/heads/master
51 description: |
52 tf-a-job-configs refspec to use. The master branch is used by default.
53 - string:
54 name: MBEDTLS_URL
55 default: https://github.com/Mbed-TLS/mbedtls/archive/mbedtls-3.6.3.tar.gz
56 - string:
57 name: LAVA_RETRIES
58 default: 2
59 description: |
60 Number of tries submitting job to LAVA in case it fails (stopgap measure against nondeterministic failures)
61 - string:
62 name: USE_TUXSUITE_FVP
63 default: 1
64 description: |
65 Whether to submit FVP tests via TuxSuite (instead of LAVA)
66 - string:
67 name: SHARE_FOLDER
68 default: /srv/shared/${JOB_NAME}/${BUILD_NUMBER}
69 description: Folder containing shared repositories for downstream pipeline jobs
Leonardo Sandoval2902d2f2020-11-25 12:32:31 -060070 wrappers:
71 - credentials-binding:
72 - ssh-user-private-key:
73 credential-id: TFA_CI_BOT_USER_SSH_KEY
74 key-file-variable: CI_BOT_KEY
75 username-variable: CI_BOT_USERNAME
Chris Kay675db4f2025-06-24 14:14:34 +010076 passphrase-variable: ""
Leonardo Sandoval2902d2f2020-11-25 12:32:31 -060077 - workspace-cleanup
78 - timestamps
79 builders:
Chris Kay675db4f2025-06-24 14:14:34 +010080 - shell: !include-raw: scripts/clone.sh
81 - shell: |
82 #!/bin/bash
83 set -e
84 cat << EOF > tf-a-env.param
85 GERRIT_PROJECT=${TF_GERRIT_PROJECT}
86 GERRIT_BRANCH=${TF_GERRIT_BRANCH}
87 GERRIT_REFSPEC=${TF_GERRIT_REFSPEC}
88 QA_SERVER_PROJECT=${JOB_NAME}
89 QA_SERVER_VERSION=${BUILD_NUMBER}
90 SHARE_FOLDER=${SHARE_FOLDER}
91 EOF
92 cat << EOF > tf-a-tests-env.param
93 GERRIT_PROJECT=${TFTF_GERRIT_PROJECT}
94 GERRIT_BRANCH=${TFTF_GERRIT_BRANCH}
95 GERRIT_REFSPEC=${TFTF_GERRIT_REFSPEC}
96 QA_SERVER_PROJECT=${JOB_NAME}
97 QA_SERVER_VERSION=${BUILD_NUMBER}
98 SHARE_FOLDER=${SHARE_FOLDER}
99 EOF
100 - multijob:
101 name: Run static checks on the code
102 condition: COMPLETED
103 projects:
104 - name: tf-a-static-checks
105 current-parameters: true
106 kill-phase-on: NEVER
107 property-file: tf-a-env.param
108 - multijob:
109 name: Build Trusted Firmware
110 condition: COMPLETED
111 projects:
112 - name: tf-a-ci-gateway
113 alias: tf-l1-build-fvp tf-l2-build-fvp
114 current-parameters: true
115 kill-phase-on: NEVER
116 predefined-parameters: |
117 TEST_GROUPS=tf-l1-build-fvp tf-l2-build-fvp
118 property-file: tf-a-env.param
119 - name: tf-a-ci-gateway
120 alias: tf-l1-build-juno tf-l2-build-juno
121 current-parameters: true
122 kill-phase-on: NEVER
123 predefined-parameters: TEST_GROUPS=tf-l1-build-juno tf-l2-build-juno
124 property-file: tf-a-env.param
125 - name: tf-a-ci-gateway
126 alias: tf-l1-build-plat
127 current-parameters: true
128 kill-phase-on: NEVER
129 predefined-parameters: TEST_GROUPS=tf-l1-build-plat
130 property-file: tf-a-env.param
131 - name: tf-a-ci-gateway
132 alias: tf-l1-build-clang
133 current-parameters: true
134 kill-phase-on: NEVER
135 predefined-parameters: TEST_GROUPS=tf-l1-build-clang
136 property-file: tf-a-env.param
137 - multijob:
138 name: TFTF Tests for FVP
139 condition: COMPLETED
140 projects:
141 - name: tf-a-ci-gateway
142 alias: tftf-l2-fwu
143 current-parameters: true
144 kill-phase-on: NEVER
145 predefined-parameters: TEST_GROUPS=tftf-l2-fwu
146 property-file: tf-a-tests-env.param
147 - name: tf-a-ci-gateway
148 alias: tftf-l1-fvp tftf-l2-fvp-auxiliary
149 current-parameters: true
150 kill-phase-on: NEVER
151 predefined-parameters: TEST_GROUPS=tftf-l1-fvp tftf-l2-fvp-auxiliary
152 property-file: tf-a-tests-env.param
153 - name: tf-a-ci-gateway
154 alias: tftf-l2-fvp tftf-l2-fvp-dynamiq
155 current-parameters: true
156 kill-phase-on: NEVER
157 predefined-parameters: TEST_GROUPS=tftf-l2-fvp tftf-l2-fvp-dynamiq
158 property-file: tf-a-tests-env.param
159 - name: tf-a-ci-gateway
160 alias: tftf-l2-extensive-tests-fvp
161 current-parameters: true
162 kill-phase-on: NEVER
163 predefined-parameters: TEST_GROUPS=tftf-l2-extensive-tests-fvp
164 property-file: tf-a-tests-env.param
165 - multijob:
166 name: Boot up to the Linux shell prompt
167 condition: COMPLETED
168 projects:
169 - name: tf-a-ci-gateway
170 alias: tf-l2-boot-tests-aarch32
171 current-parameters: true
172 kill-phase-on: NEVER
173 predefined-parameters: TEST_GROUPS=tf-l2-boot-tests-aarch32
174 property-file: tf-a-env.param
175 - name: tf-a-ci-gateway
176 alias: tf-l2-boot-tests-rootfs
177 current-parameters: true
178 kill-phase-on: NEVER
179 predefined-parameters: TEST_GROUPS=tf-l2-boot-tests-rootfs
180 property-file: tf-a-env.param
181 - name: tf-a-ci-gateway
182 alias: tf-l2-boot-tests-spm-mm
183 current-parameters: true
184 kill-phase-on: NEVER
185 predefined-parameters: TEST_GROUPS=tf-l2-boot-tests-spm-mm
186 property-file: tf-a-env.param
187 - name: tf-a-ci-gateway
188 alias: spm-l2-boot-tests
189 current-parameters: true
190 kill-phase-on: NEVER
191 predefined-parameters: TEST_GROUPS=spm-l2-boot-tests
192 property-file: tf-a-env.param
193 - multijob:
194 name: Boot up to the Linux shell prompt - Part 2
195 condition: COMPLETED
196 projects:
197 - name: tf-a-ci-gateway
198 alias: tf-l2-boot-tests-misc
199 current-parameters: true
200 kill-phase-on: NEVER
201 predefined-parameters: TEST_GROUPS=tf-l2-boot-tests-misc
202 property-file: tf-a-env.param
203 - name: tf-a-ci-gateway
204 alias: tf-l2-boot-tests-latest
205 current-parameters: true
206 kill-phase-on: NEVER
207 predefined-parameters: TEST_GROUPS=tf-l2-boot-tests-latest
208 property-file: tf-a-env.param
209 - name: tf-a-ci-gateway
210 alias: tf-l2-boot-tests-cortex
211 current-parameters: true
212 kill-phase-on: NEVER
213 predefined-parameters: TEST_GROUPS=tf-l2-boot-tests-cortex
214 property-file: tf-a-env.param
215 - name: tf-a-ci-gateway
216 alias: tf-l2-boot-tests-gicv2
217 current-parameters: true
218 kill-phase-on: NEVER
219 predefined-parameters: TEST_GROUPS=tf-l2-boot-tests-gicv2
220 property-file: tf-a-env.param
221 - name: tf-a-ci-gateway
222 alias: tf-l2-boot-tests-bl2_el3
223 current-parameters: true
224 kill-phase-on: NEVER
225 predefined-parameters: TEST_GROUPS=tf-l2-boot-tests-bl2_el3
226 property-file: tf-a-env.param
227 - name: tf-a-ci-gateway
228 alias: qemu-boot-tests
229 current-parameters: true
230 kill-phase-on: NEVER
231 predefined-parameters: TEST_GROUPS=qemu-boot-tests
232 property-file: tf-a-env.param
233 - multijob:
234 name: Juno Boot Tests
235 condition: COMPLETED
236 projects:
237 - name: tf-a-ci-gateway
238 alias: tf-l2-boot-tests-juno
239 current-parameters: true
240 kill-phase-on: NEVER
241 predefined-parameters: TEST_GROUPS=tf-l2-boot-tests-juno
242 property-file: tf-a-env.param
243 - name: tf-a-ci-gateway
244 alias: tftf-l1-juno
245 current-parameters: true
246 kill-phase-on: NEVER
247 predefined-parameters: TEST_GROUPS=tftf-l1-juno
248 property-file: tf-a-env.param
249 - multijob:
250 name: Miscellaneous tests
251 condition: COMPLETED
252 projects:
253 - name: tf-a-ci-gateway
254 alias: tf-l3-boot-tests-css
255 current-parameters: true
256 kill-phase-on: NEVER
257 predefined-parameters: TEST_GROUPS=tf-l3-boot-tests-css
258 property-file: tf-a-env.param
259 - name: tf-a-ci-gateway
260 alias: tf-l3-boot-tests-spm-mm
261 current-parameters: true
262 kill-phase-on: NEVER
263 predefined-parameters: TEST_GROUPS=tf-l3-boot-tests-spm-mm
264 property-file: tf-a-env.param
265 - name: tf-a-ci-gateway
266 alias: tf-l3-boot-tests-ras
267 current-parameters: true
268 kill-phase-on: NEVER
269 predefined-parameters: TEST_GROUPS=tf-l3-boot-tests-ras
270 property-file: tf-a-env.param
271 - name: tf-a-ci-gateway
272 alias: tf-l3-boot-tests-misc
273 current-parameters: true
274 kill-phase-on: NEVER
275 predefined-parameters: TEST_GROUPS=tf-l3-boot-tests-misc
276 property-file: tf-a-env.param
277 - name: tf-a-ci-gateway
278 alias: tf-l3-boot-tests-n1sdp
279 current-parameters: true
280 kill-phase-on: NEVER
281 predefined-parameters: TEST_GROUPS=tf-l3-boot-tests-n1sdp
282 property-file: tf-a-env.param
283 - name: tf-a-ci-gateway
284 alias: spm-l3-boot-tests
285 current-parameters: true
286 kill-phase-on: NEVER
287 predefined-parameters: TEST_GROUPS=spm-l3-boot-tests
288 property-file: tf-a-env.param
289 - name: tf-a-ci-gateway
290 alias: tf-l2-boot-tests-partner-boards
291 current-parameters: true
292 kill-phase-on: NEVER
293 predefined-parameters: TEST_GROUPS=tf-l2-boot-tests-partner-boards
294 property-file: tf-a-env.param
295 # Platform-specific self-tests.
296 # These tests run from the BL31 image then halt the target.
297 - name: tf-a-ci-gateway
298 alias: tf-l2-boot-tests-arm-plats
299 current-parameters: true
300 kill-phase-on: NEVER
301 predefined-parameters: TEST_GROUPS=tf-l2-boot-tests-arm-plats
302 property-file: tf-a-env.param
303 - multijob:
304 name: Run doc build check
305 condition: COMPLETED
306 projects:
307 - name: tf-a-ci-gateway
308 alias: tf-l1-check-docs
309 current-parameters: true
310 kill-phase-on: NEVER
311 predefined-parameters: TEST_GROUPS=tf-l1-check-docs
312 property-file: tf-a-env.param
313 - multijob:
314 name: Generate visualizations
315 condition: COMPLETED
316 projects:
317 - name: tf-a-sloc-visualization
318 current-parameters: true
319 kill-phase-on: NEVER
320 property-file: tf-a-env.param
321 - name: tf-a-test-category-visualization
322 current-parameters: true
323 kill-phase-on: NEVER
324 property-file: tf-a-env.param
325 - name: tf-a-test-result-visualization
326 current-parameters: true
327 kill-phase-on: NEVER
328 predefined-parameters: TARGET_BUILD=${JOB_NAME}/${BUILD_NUMBER}
329 property-file: tf-a-env.param
330 # Run the unstable TF-A Tests at the end but do not let their results
331 # participate in the job's success/failure.
332 - trigger-builds:
333 - project: tf-a-ci-gateway
334 current-parameters: True
335 property-file: tf-a-tests-env.param
336 property-file-fail-on-missing: True
337 predefined-parameters: TEST_GROUPS=tftf-unstable
338 block: True
339 block-thresholds:
340 build-step-failure-threshold: never
341 unstable-threshold: never
342 failure-threshold: never
343 # If all tests passed, catch up the master branch with integration
344 - conditional-step:
345 condition-kind: current-status
346 condition-best: SUCCESS
347 condition-worst: SUCCESS
348 steps:
349 - shell: |-
350 #!/bin/bash
351 #
352 if echo ${JENKINS_PUBLIC_URL} | grep -q "ci.trustedfirmware.org"; then
353 # Only do it on the OpenCI production site
354 echo "It's running on the OpenCI procution site"
355 if [ $MULTIJOB_FAILED -eq 0 ]; then
356 echo "Proceed with integration->master fast-forward merge"
357 bash "${WORKSPACE}/tf-a-ci-scripts/script/scratch_scripts/fast-forward-master.sh"
358 else
359 echo "Do not proceed with integration->master merge as sub-jobs failed"
360 fi
Arthur Sheffd432e2025-02-02 12:35:55 -0800361 else
Chris Kay675db4f2025-06-24 14:14:34 +0100362 echo "It's NOT on the OpenCI production site"
Arthur Sheffd432e2025-02-02 12:35:55 -0800363 fi