blob: 7aeb18caec6d170632cade3339af8ed141d6fa49 [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}
Chris Kay675db4f2025-06-24 14:14:34 +010088 SHARE_FOLDER=${SHARE_FOLDER}
89 EOF
90 cat << EOF > tf-a-tests-env.param
91 GERRIT_PROJECT=${TFTF_GERRIT_PROJECT}
92 GERRIT_BRANCH=${TFTF_GERRIT_BRANCH}
93 GERRIT_REFSPEC=${TFTF_GERRIT_REFSPEC}
Chris Kay675db4f2025-06-24 14:14:34 +010094 SHARE_FOLDER=${SHARE_FOLDER}
95 EOF
96 - multijob:
97 name: Run static checks on the code
98 condition: COMPLETED
99 projects:
100 - name: tf-a-static-checks
101 current-parameters: true
102 kill-phase-on: NEVER
103 property-file: tf-a-env.param
104 - multijob:
105 name: Build Trusted Firmware
106 condition: COMPLETED
107 projects:
108 - name: tf-a-ci-gateway
109 alias: tf-l1-build-fvp tf-l2-build-fvp
110 current-parameters: true
111 kill-phase-on: NEVER
112 predefined-parameters: |
113 TEST_GROUPS=tf-l1-build-fvp tf-l2-build-fvp
114 property-file: tf-a-env.param
115 - name: tf-a-ci-gateway
116 alias: tf-l1-build-juno tf-l2-build-juno
117 current-parameters: true
118 kill-phase-on: NEVER
119 predefined-parameters: TEST_GROUPS=tf-l1-build-juno tf-l2-build-juno
120 property-file: tf-a-env.param
121 - name: tf-a-ci-gateway
122 alias: tf-l1-build-plat
123 current-parameters: true
124 kill-phase-on: NEVER
125 predefined-parameters: TEST_GROUPS=tf-l1-build-plat
126 property-file: tf-a-env.param
127 - name: tf-a-ci-gateway
128 alias: tf-l1-build-clang
129 current-parameters: true
130 kill-phase-on: NEVER
131 predefined-parameters: TEST_GROUPS=tf-l1-build-clang
132 property-file: tf-a-env.param
133 - multijob:
134 name: TFTF Tests for FVP
135 condition: COMPLETED
136 projects:
137 - name: tf-a-ci-gateway
138 alias: tftf-l2-fwu
139 current-parameters: true
140 kill-phase-on: NEVER
141 predefined-parameters: TEST_GROUPS=tftf-l2-fwu
142 property-file: tf-a-tests-env.param
143 - name: tf-a-ci-gateway
144 alias: tftf-l1-fvp tftf-l2-fvp-auxiliary
145 current-parameters: true
146 kill-phase-on: NEVER
147 predefined-parameters: TEST_GROUPS=tftf-l1-fvp tftf-l2-fvp-auxiliary
148 property-file: tf-a-tests-env.param
149 - name: tf-a-ci-gateway
150 alias: tftf-l2-fvp tftf-l2-fvp-dynamiq
151 current-parameters: true
152 kill-phase-on: NEVER
153 predefined-parameters: TEST_GROUPS=tftf-l2-fvp tftf-l2-fvp-dynamiq
154 property-file: tf-a-tests-env.param
155 - name: tf-a-ci-gateway
156 alias: tftf-l2-extensive-tests-fvp
157 current-parameters: true
158 kill-phase-on: NEVER
159 predefined-parameters: TEST_GROUPS=tftf-l2-extensive-tests-fvp
160 property-file: tf-a-tests-env.param
161 - multijob:
162 name: Boot up to the Linux shell prompt
163 condition: COMPLETED
164 projects:
165 - name: tf-a-ci-gateway
166 alias: tf-l2-boot-tests-aarch32
167 current-parameters: true
168 kill-phase-on: NEVER
169 predefined-parameters: TEST_GROUPS=tf-l2-boot-tests-aarch32
170 property-file: tf-a-env.param
171 - name: tf-a-ci-gateway
172 alias: tf-l2-boot-tests-rootfs
173 current-parameters: true
174 kill-phase-on: NEVER
175 predefined-parameters: TEST_GROUPS=tf-l2-boot-tests-rootfs
176 property-file: tf-a-env.param
177 - name: tf-a-ci-gateway
178 alias: tf-l2-boot-tests-spm-mm
179 current-parameters: true
180 kill-phase-on: NEVER
181 predefined-parameters: TEST_GROUPS=tf-l2-boot-tests-spm-mm
182 property-file: tf-a-env.param
183 - name: tf-a-ci-gateway
184 alias: spm-l2-boot-tests
185 current-parameters: true
186 kill-phase-on: NEVER
187 predefined-parameters: TEST_GROUPS=spm-l2-boot-tests
188 property-file: tf-a-env.param
189 - multijob:
190 name: Boot up to the Linux shell prompt - Part 2
191 condition: COMPLETED
192 projects:
193 - name: tf-a-ci-gateway
194 alias: tf-l2-boot-tests-misc
195 current-parameters: true
196 kill-phase-on: NEVER
197 predefined-parameters: TEST_GROUPS=tf-l2-boot-tests-misc
198 property-file: tf-a-env.param
199 - name: tf-a-ci-gateway
200 alias: tf-l2-boot-tests-latest
201 current-parameters: true
202 kill-phase-on: NEVER
203 predefined-parameters: TEST_GROUPS=tf-l2-boot-tests-latest
204 property-file: tf-a-env.param
205 - name: tf-a-ci-gateway
206 alias: tf-l2-boot-tests-cortex
207 current-parameters: true
208 kill-phase-on: NEVER
209 predefined-parameters: TEST_GROUPS=tf-l2-boot-tests-cortex
210 property-file: tf-a-env.param
211 - name: tf-a-ci-gateway
212 alias: tf-l2-boot-tests-gicv2
213 current-parameters: true
214 kill-phase-on: NEVER
215 predefined-parameters: TEST_GROUPS=tf-l2-boot-tests-gicv2
216 property-file: tf-a-env.param
217 - name: tf-a-ci-gateway
218 alias: tf-l2-boot-tests-bl2_el3
219 current-parameters: true
220 kill-phase-on: NEVER
221 predefined-parameters: TEST_GROUPS=tf-l2-boot-tests-bl2_el3
222 property-file: tf-a-env.param
223 - name: tf-a-ci-gateway
224 alias: qemu-boot-tests
225 current-parameters: true
226 kill-phase-on: NEVER
227 predefined-parameters: TEST_GROUPS=qemu-boot-tests
228 property-file: tf-a-env.param
229 - multijob:
230 name: Juno Boot Tests
231 condition: COMPLETED
232 projects:
233 - name: tf-a-ci-gateway
234 alias: tf-l2-boot-tests-juno
235 current-parameters: true
236 kill-phase-on: NEVER
237 predefined-parameters: TEST_GROUPS=tf-l2-boot-tests-juno
238 property-file: tf-a-env.param
239 - name: tf-a-ci-gateway
240 alias: tftf-l1-juno
241 current-parameters: true
242 kill-phase-on: NEVER
243 predefined-parameters: TEST_GROUPS=tftf-l1-juno
244 property-file: tf-a-env.param
245 - multijob:
246 name: Miscellaneous tests
247 condition: COMPLETED
248 projects:
249 - name: tf-a-ci-gateway
250 alias: tf-l3-boot-tests-css
251 current-parameters: true
252 kill-phase-on: NEVER
253 predefined-parameters: TEST_GROUPS=tf-l3-boot-tests-css
254 property-file: tf-a-env.param
255 - name: tf-a-ci-gateway
256 alias: tf-l3-boot-tests-spm-mm
257 current-parameters: true
258 kill-phase-on: NEVER
259 predefined-parameters: TEST_GROUPS=tf-l3-boot-tests-spm-mm
260 property-file: tf-a-env.param
261 - name: tf-a-ci-gateway
262 alias: tf-l3-boot-tests-ras
263 current-parameters: true
264 kill-phase-on: NEVER
265 predefined-parameters: TEST_GROUPS=tf-l3-boot-tests-ras
266 property-file: tf-a-env.param
267 - name: tf-a-ci-gateway
268 alias: tf-l3-boot-tests-misc
269 current-parameters: true
270 kill-phase-on: NEVER
271 predefined-parameters: TEST_GROUPS=tf-l3-boot-tests-misc
272 property-file: tf-a-env.param
273 - name: tf-a-ci-gateway
274 alias: tf-l3-boot-tests-n1sdp
275 current-parameters: true
276 kill-phase-on: NEVER
277 predefined-parameters: TEST_GROUPS=tf-l3-boot-tests-n1sdp
278 property-file: tf-a-env.param
279 - name: tf-a-ci-gateway
280 alias: spm-l3-boot-tests
281 current-parameters: true
282 kill-phase-on: NEVER
283 predefined-parameters: TEST_GROUPS=spm-l3-boot-tests
284 property-file: tf-a-env.param
285 - name: tf-a-ci-gateway
286 alias: tf-l2-boot-tests-partner-boards
287 current-parameters: true
288 kill-phase-on: NEVER
289 predefined-parameters: TEST_GROUPS=tf-l2-boot-tests-partner-boards
290 property-file: tf-a-env.param
291 # Platform-specific self-tests.
292 # These tests run from the BL31 image then halt the target.
293 - name: tf-a-ci-gateway
294 alias: tf-l2-boot-tests-arm-plats
295 current-parameters: true
296 kill-phase-on: NEVER
297 predefined-parameters: TEST_GROUPS=tf-l2-boot-tests-arm-plats
298 property-file: tf-a-env.param
299 - multijob:
300 name: Run doc build check
301 condition: COMPLETED
302 projects:
303 - name: tf-a-ci-gateway
304 alias: tf-l1-check-docs
305 current-parameters: true
306 kill-phase-on: NEVER
307 predefined-parameters: TEST_GROUPS=tf-l1-check-docs
308 property-file: tf-a-env.param
309 - multijob:
310 name: Generate visualizations
311 condition: COMPLETED
312 projects:
313 - name: tf-a-sloc-visualization
314 current-parameters: true
315 kill-phase-on: NEVER
316 property-file: tf-a-env.param
317 - name: tf-a-test-category-visualization
318 current-parameters: true
319 kill-phase-on: NEVER
320 property-file: tf-a-env.param
321 - name: tf-a-test-result-visualization
322 current-parameters: true
323 kill-phase-on: NEVER
324 predefined-parameters: TARGET_BUILD=${JOB_NAME}/${BUILD_NUMBER}
325 property-file: tf-a-env.param
326 # Run the unstable TF-A Tests at the end but do not let their results
327 # participate in the job's success/failure.
328 - trigger-builds:
329 - project: tf-a-ci-gateway
330 current-parameters: True
331 property-file: tf-a-tests-env.param
332 property-file-fail-on-missing: True
333 predefined-parameters: TEST_GROUPS=tftf-unstable
334 block: True
335 block-thresholds:
336 build-step-failure-threshold: never
337 unstable-threshold: never
338 failure-threshold: never
339 # If all tests passed, catch up the master branch with integration
340 - conditional-step:
341 condition-kind: current-status
342 condition-best: SUCCESS
343 condition-worst: SUCCESS
344 steps:
345 - shell: |-
346 #!/bin/bash
347 #
348 if echo ${JENKINS_PUBLIC_URL} | grep -q "ci.trustedfirmware.org"; then
349 # Only do it on the OpenCI production site
350 echo "It's running on the OpenCI procution site"
351 if [ $MULTIJOB_FAILED -eq 0 ]; then
352 echo "Proceed with integration->master fast-forward merge"
353 bash "${WORKSPACE}/tf-a-ci-scripts/script/scratch_scripts/fast-forward-master.sh"
354 else
355 echo "Do not proceed with integration->master merge as sub-jobs failed"
356 fi
Arthur Sheffd432e2025-02-02 12:35:55 -0800357 else
Chris Kay675db4f2025-06-24 14:14:34 +0100358 echo "It's NOT on the OpenCI production site"
Arthur Sheffd432e2025-02-02 12:35:55 -0800359 fi