blob: df1f0f5adebf4aeb99b7d04545716b5d2104927d [file] [log] [blame]
Patrick Williams8e7b46e2023-05-01 14:19:06 -05001image: ghcr.io/siemens/kas/kas:3.2.3
Brad Bishopbec4ebc2022-08-03 09:55:16 -04002
Andrew Geissler517393d2023-01-13 08:55:19 -06003variables:
4 CPU_REQUEST: ""
5 DEFAULT_TAG: ""
Andrew Geissler9347dd42023-03-03 12:38:41 -06006 CACHE_DIR: $CI_BUILDS_DIR/persist
Andrew Geissler517393d2023-01-13 08:55:19 -06007 # These are needed as the k8s executor doesn't respect the container entrypoint
8 # by default
9 FF_KUBERNETES_HONOR_ENTRYPOINT: 1
10 FF_USE_LEGACY_KUBERNETES_EXECUTION_STRATEGY: 0
11
Brad Bishopbec4ebc2022-08-03 09:55:16 -040012stages:
13 - prep
14 - build
15
16# Common job fragment to get a worker ready
17.setup:
Andrew Geissler517393d2023-01-13 08:55:19 -060018 tags:
19 - $DEFAULT_TAG
Brad Bishopbec4ebc2022-08-03 09:55:16 -040020 stage: build
21 interruptible: true
22 variables:
23 KAS_WORK_DIR: $CI_PROJECT_DIR/work
Andrew Geissler9347dd42023-03-03 12:38:41 -060024 KAS_REPO_REF_DIR: $CACHE_DIR/repos
25 SSTATE_DIR: $CACHE_DIR/sstate
26 DL_DIR: $CACHE_DIR/downloads
Brad Bishopbec4ebc2022-08-03 09:55:16 -040027 BB_LOGCONFIG: $CI_PROJECT_DIR/ci/logging.yml
Andrew Geissler9347dd42023-03-03 12:38:41 -060028 TOOLCHAIN_DIR: $CACHE_DIR/toolchains
Brad Bishopbec4ebc2022-08-03 09:55:16 -040029 IMAGE_DIR: $CI_PROJECT_DIR/work/build/tmp/deploy/images
30 TOOLCHAIN_LINK_DIR: $CI_PROJECT_DIR/work/build/toolchains
31 before_script:
32 - echo KAS_WORK_DIR = $KAS_WORK_DIR
33 - echo SSTATE_DIR = $SSTATE_DIR
34 - echo DL_DIR = $DL_DIR
35 - rm -rf $KAS_WORK_DIR
36 - mkdir --verbose --parents $KAS_WORK_DIR $KAS_REPO_REF_DIR $SSTATE_DIR $DL_DIR $TOOLCHAIN_DIR $TOOLCHAIN_LINK_DIR
37 # Must do this here, as it's the only way to make sure the toolchain is installed on the same builder
38 - ./ci/get-binary-toolchains $DL_DIR $TOOLCHAIN_DIR $TOOLCHAIN_LINK_DIR
Brad Bishopbec4ebc2022-08-03 09:55:16 -040039
40# Generalised fragment to do a Kas build
41.build:
42 extends: .setup
Andrew Geissler517393d2023-01-13 08:55:19 -060043 variables:
44 KUBERNETES_CPU_REQUEST: $CPU_REQUEST
Patrick Williams8e7b46e2023-05-01 14:19:06 -050045 rules:
46 # Don't run MR pipelines
47 - if: $CI_PIPELINE_SOURCE == "merge_request_event"
48 when: never
49 # Don't run pipelines for tags
50 - if: $CI_COMMIT_TAG
51 when: never
52 # Don't run if BUILD_ENABLE_REGEX is set, but the job doesn't match the regex
53 - if: '$BUILD_ENABLE_REGEX != null && $CI_JOB_NAME !~ $BUILD_ENABLE_REGEX'
54 when: never
55 # Allow the dev kernels to fail and not fail the overall build
56 - if: '$KERNEL == "linux-yocto-dev"'
57 allow_failure: true
58 # Catch all for everything else
59 - if: '$KERNEL != "linux-yocto-dev"'
Brad Bishopbec4ebc2022-08-03 09:55:16 -040060 script:
61 - KASFILES=$(./ci/jobs-to-kas "$CI_JOB_NAME")
Andrew Geisslerea144b032023-01-27 16:03:57 -060062 - kas dump --update --force-checkout --resolve-refs --resolve-env $KASFILES
Brad Bishopbec4ebc2022-08-03 09:55:16 -040063 - kas build $KASFILES
64 - ./ci/check-warnings $KAS_WORK_DIR/build/warnings.log
65 artifacts:
66 name: "logs"
67 when: on_failure
68 paths:
69 - $CI_PROJECT_DIR/work/build/tmp/work*/**/temp/log.do_*.*
Andrew Geissler9347dd42023-03-03 12:38:41 -060070 - $CI_PROJECT_DIR/work/build/tmp/work*/**/testimage/*
Brad Bishopbec4ebc2022-08-03 09:55:16 -040071
72#
Andrew Geissler2daf84b2023-03-31 09:57:23 -050073# Prep stage, update repositories once.
74# Set the CI variable CI_CLEAN_REPOS=1 to refetch the respositories from scratch
Brad Bishopbec4ebc2022-08-03 09:55:16 -040075#
76update-repos:
77 extends: .setup
78 stage: prep
79 script:
80 - flock --verbose --timeout 60 $KAS_REPO_REF_DIR ./ci/update-repos
81
82#
83# Build stage, the actual build jobs
84#
85# Available options for building are
Andrew Geissler2daf84b2023-03-31 09:57:23 -050086# DISTRO: [poky, poky-tiny]
87# KERNEL: [linux-yocto, linux-yocto-dev, linux-yocto-rt]
Brad Bishopbec4ebc2022-08-03 09:55:16 -040088# TOOLCHAINS: [gcc, clang, armgcc, external-gccarm]
89# TCLIBC: [glibc, musl]
Andrew Geissler2daf84b2023-03-31 09:57:23 -050090# FIRMWARE: [u-boot, edk2]
91# TS: [none, trusted-services]
Brad Bishopbec4ebc2022-08-03 09:55:16 -040092# VIRT: [none, xen]
93# TESTING: testimage
94
95corstone500:
96 extends: .build
97 parallel:
98 matrix:
99 - TESTING: testimage
100 tags:
101 - x86_64
102
103corstone1000-fvp:
104 extends: .build
105 parallel:
106 matrix:
Andrew Geissler2daf84b2023-03-31 09:57:23 -0500107 - TESTING: [testimage, tftf]
Brad Bishopbec4ebc2022-08-03 09:55:16 -0400108 tags:
109 - x86_64
110
111corstone1000-mps3:
112 extends: .build
113
114fvp-base:
115 extends: .build
116 parallel:
117 matrix:
118 - TESTING: testimage
Andrew Geissler2daf84b2023-03-31 09:57:23 -0500119 - FIRMWARE: edk2
Brad Bishopbec4ebc2022-08-03 09:55:16 -0400120
121fvp-baser-aemv8r64:
122 extends: .build
123 parallel:
124 matrix:
125 - TESTING: testimage
126 tags:
127 - x86_64
128
129fvps:
130 extends: .build
131
Brad Bishopbec4ebc2022-08-03 09:55:16 -0400132generic-arm64:
133 extends: .build
134
135juno:
136 extends: .build
137 parallel:
138 matrix:
139 - TOOLCHAINS: [gcc, clang]
Andrew Geissler2daf84b2023-03-31 09:57:23 -0500140 FIRMWARE: [u-boot, edk2]
Brad Bishopbec4ebc2022-08-03 09:55:16 -0400141
Brad Bishopbec4ebc2022-08-03 09:55:16 -0400142musca-b1:
143 extends: .build
144
145musca-s1:
146 extends: .build
147
148n1sdp:
149 extends: .build
150 parallel:
151 matrix:
152 - TOOLCHAINS: [gcc, armgcc]
Andrew Geissler517393d2023-01-13 08:55:19 -0600153 TS: [none, trusted-services]
Brad Bishopbec4ebc2022-08-03 09:55:16 -0400154
Brad Bishopbec4ebc2022-08-03 09:55:16 -0400155qemu-generic-arm64:
156 extends: .build
157 parallel:
158 matrix:
Andrew Geissler2daf84b2023-03-31 09:57:23 -0500159 - KERNEL: [linux-yocto, linux-yocto-dev, linux-yocto-rt]
160 TOOLCHAINS: [gcc, clang]
Brad Bishopbec4ebc2022-08-03 09:55:16 -0400161 TESTING: testimage
162
163qemuarm64-secureboot:
164 extends: .build
165 parallel:
166 matrix:
Andrew Geissler2daf84b2023-03-31 09:57:23 -0500167 - KERNEL: [linux-yocto, linux-yocto-dev, linux-yocto-rt]
168 TOOLCHAINS: [gcc, clang]
Brad Bishopbec4ebc2022-08-03 09:55:16 -0400169 TCLIBC: [glibc, musl]
Patrick Williams2194f502022-10-16 14:26:09 -0500170 TS: [none, trusted-services]
Patrick Williams92b42cb2022-09-03 06:53:57 -0500171 TESTING: testimage
172
Brad Bishopbec4ebc2022-08-03 09:55:16 -0400173qemuarm64:
174 extends: .build
175 parallel:
176 matrix:
Andrew Geissler2daf84b2023-03-31 09:57:23 -0500177 - DISTRO: poky
178 KERNEL: [linux-yocto, linux-yocto-dev, linux-yocto-rt]
179 TOOLCHAINS: [gcc, clang]
180 FIRMWARE: [u-boot, edk2]
181 TESTING: testimage
182 - DISTRO: poky-tiny
Brad Bishopbec4ebc2022-08-03 09:55:16 -0400183 TESTING: testimage
184 - VIRT: xen
185
186qemuarm-secureboot:
187 extends: .build
188 parallel:
189 matrix:
Andrew Geissler2daf84b2023-03-31 09:57:23 -0500190 - KERNEL: [linux-yocto, linux-yocto-dev, linux-yocto-rt]
191 TOOLCHAINS: [gcc, clang, external-gccarm]
Brad Bishopbec4ebc2022-08-03 09:55:16 -0400192 TESTING: testimage
193
194qemuarm:
195 extends: .build
196 parallel:
197 matrix:
Andrew Geissler2daf84b2023-03-31 09:57:23 -0500198 - DISTRO: poky
199 KERNEL: [linux-yocto, linux-yocto-dev, linux-yocto-rt]
200 TOOLCHAINS: [gcc, clang]
201 FIRMWARE: [u-boot, edk2]
202 TESTING: testimage
203 - DISTRO: poky-tiny
Brad Bishopbec4ebc2022-08-03 09:55:16 -0400204 TESTING: testimage
205 - VIRT: xen
206
207qemuarmv5:
208 extends: .build
209 parallel:
210 matrix:
Andrew Geissler2daf84b2023-03-31 09:57:23 -0500211 - DISTRO: poky
212 KERNEL: [linux-yocto, linux-yocto-dev, linux-yocto-rt]
213 TESTING: testimage
214 - DISTRO: poky-tiny
215 TESTING: testimage
Brad Bishopbec4ebc2022-08-03 09:55:16 -0400216
217sgi575:
218 extends: .build
219
Brad Bishopbec4ebc2022-08-03 09:55:16 -0400220tc1:
221 extends: .build
Patrick Williams8e7b46e2023-05-01 14:19:06 -0500222 parallel:
223 matrix:
224 - TESTING: testimage
Brad Bishopbec4ebc2022-08-03 09:55:16 -0400225 tags:
226 - x86_64
227
228toolchains:
229 extends: .build
230
231selftest:
232 extends: .setup
233 script:
234 - KASFILES=./ci/qemuarm64.yml:./ci/selftest.yml
235 - kas shell --update --force-checkout $KASFILES -c 'oe-selftest --num-processes 1 --run-tests runfvp'
236
237# Validate layers are Yocto Project Compatible
238check-layers:
239 extends: .setup
240 script:
241 - kas shell --update --force-checkout ci/base.yml:ci/meta-openembedded.yml --command \
242 "yocto-check-layer-wrapper $CI_PROJECT_DIR/$LAYER --dependency $CI_PROJECT_DIR/meta-* $KAS_WORK_DIR/meta-openembedded/meta-oe --no-auto-dependency"
243 parallel:
244 matrix:
Andrew Geissler517393d2023-01-13 08:55:19 -0600245 - LAYER: [meta-arm, meta-arm-bsp, meta-arm-toolchain]
Brad Bishopbec4ebc2022-08-03 09:55:16 -0400246
247pending-updates:
248 extends: .setup
249 artifacts:
250 paths:
251 - update-report
252 script:
253 - rm -fr update-report
254 # This configuration has all of the layers we need enabled
Andrew Geisslerea144b032023-01-27 16:03:57 -0600255 - kas shell --update --force-checkout ci/qemuarm64.yml:ci/meta-openembedded.yml --command \
Andrew Geissler517393d2023-01-13 08:55:19 -0600256 "$CI_PROJECT_DIR/scripts/machine-summary.py -t report -o $CI_PROJECT_DIR/update-report $($CI_PROJECT_DIR/ci/listmachines.py meta-arm meta-arm-bsp)"
Brad Bishopbec4ebc2022-08-03 09:55:16 -0400257 # Do this on x86 whilst the compilers are x86-only
258 tags:
259 - x86_64
260
261# What percentage of machines in the layer do we build
262machine-coverage:
Andrew Geissler517393d2023-01-13 08:55:19 -0600263 extends: .setup
Brad Bishopbec4ebc2022-08-03 09:55:16 -0400264 script:
265 - ./ci/check-machine-coverage
266 coverage: '/Coverage: \d+/'
267
268metrics:
269 extends: .setup
270 artifacts:
271 reports:
272 metrics: metrics.txt
273 script:
274 - kas shell --update --force-checkout ci/base.yml --command \
275 "$CI_PROJECT_DIR/ci/patchreview $CI_PROJECT_DIR/meta-* --verbose --metrics $CI_PROJECT_DIR/metrics.txt"
Patrick Williams2390b1b2022-11-03 13:47:49 -0500276
277documentation:
278 extends: .setup
279 script:
280 - |
281 sudo pip3 install -r meta-arm-bsp/documentation/requirements.txt
282 for CONF in meta-*/documentation/*/conf.py ; do
283 SOURCE_DIR=$(dirname $CONF)
284 MACHINE=$(basename $SOURCE_DIR)
285 sphinx-build -vW $SOURCE_DIR build-docs/$MACHINE
286 done
287 test -d build-docs/
288 artifacts:
289 paths:
290 - build-docs/