blob: a2af8716875146c32a4ba69482831b39816a3d94 [file] [log] [blame]
Andrew Geissler23e02792023-07-21 09:06:10 -05001image: ghcr.io/siemens/kas/kas:3.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:
Andrew Geissler23e02792023-07-21 09:06:10 -050061 - KASFILES=$(./ci/jobs-to-kas "$CI_JOB_NAME"):lockfile.yml
62 - 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"
Patrick Williams520786c2023-06-25 16:20:36 -050067 when: always
Brad Bishopbec4ebc2022-08-03 09:55:16 -040068 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:
Andrew Geissler23e02792023-07-21 09:06:10 -050080 - |
81 flock --verbose --timeout 60 $KAS_REPO_REF_DIR ./ci/update-repos
82 # Only generate if doesn't already exist, to allow feature branches to drop one in.
83 if test -f lockfile.yml; then
84 echo Using existing lockfile.yml
85 else
86 # Be sure that this is the complete list of layers being fetched
87 kas dump --lock --update ci/qemuarm64.yml:ci/meta-openembedded.yml:ci/clang.yml:ci/meta-virtualization.yml | tee lockfile.yml
88 fi
89 artifacts:
90 name: "lockfile"
91 paths:
92 - lockfile.yml
Brad Bishopbec4ebc2022-08-03 09:55:16 -040093
94#
95# Build stage, the actual build jobs
96#
97# Available options for building are
Andrew Geissler2daf84b2023-03-31 09:57:23 -050098# DISTRO: [poky, poky-tiny]
99# KERNEL: [linux-yocto, linux-yocto-dev, linux-yocto-rt]
Patrick Williams520786c2023-06-25 16:20:36 -0500100# TOOLCHAINS: [gcc, clang, external-gccarm]
Brad Bishopbec4ebc2022-08-03 09:55:16 -0400101# TCLIBC: [glibc, musl]
Andrew Geissler2daf84b2023-03-31 09:57:23 -0500102# FIRMWARE: [u-boot, edk2]
103# TS: [none, trusted-services]
Brad Bishopbec4ebc2022-08-03 09:55:16 -0400104# VIRT: [none, xen]
105# TESTING: testimage
106
Brad Bishopbec4ebc2022-08-03 09:55:16 -0400107corstone1000-fvp:
108 extends: .build
109 parallel:
110 matrix:
Andrew Geissler2daf84b2023-03-31 09:57:23 -0500111 - TESTING: [testimage, tftf]
Brad Bishopbec4ebc2022-08-03 09:55:16 -0400112 tags:
113 - x86_64
114
115corstone1000-mps3:
116 extends: .build
117
118fvp-base:
119 extends: .build
120 parallel:
121 matrix:
122 - TESTING: testimage
Andrew Geissler2daf84b2023-03-31 09:57:23 -0500123 - FIRMWARE: edk2
Brad Bishopbec4ebc2022-08-03 09:55:16 -0400124
125fvp-baser-aemv8r64:
126 extends: .build
127 parallel:
128 matrix:
129 - TESTING: testimage
130 tags:
131 - x86_64
132
133fvps:
134 extends: .build
135
Brad Bishopbec4ebc2022-08-03 09:55:16 -0400136generic-arm64:
137 extends: .build
138
139juno:
140 extends: .build
141 parallel:
142 matrix:
143 - TOOLCHAINS: [gcc, clang]
Andrew Geissler2daf84b2023-03-31 09:57:23 -0500144 FIRMWARE: [u-boot, edk2]
Brad Bishopbec4ebc2022-08-03 09:55:16 -0400145
Brad Bishopbec4ebc2022-08-03 09:55:16 -0400146musca-b1:
147 extends: .build
148
149musca-s1:
150 extends: .build
151
152n1sdp:
153 extends: .build
154 parallel:
155 matrix:
Patrick Williams520786c2023-06-25 16:20:36 -0500156 - TS: [none, n1sdp-ts]
Andrew Geissler2edf0642023-09-11 08:24:07 -0400157 - OPTEE: [none, n1sdp-optee]
Brad Bishopbec4ebc2022-08-03 09:55:16 -0400158
Brad Bishopbec4ebc2022-08-03 09:55:16 -0400159qemu-generic-arm64:
160 extends: .build
161 parallel:
162 matrix:
Andrew Geissler2daf84b2023-03-31 09:57:23 -0500163 - KERNEL: [linux-yocto, linux-yocto-dev, linux-yocto-rt]
164 TOOLCHAINS: [gcc, clang]
Brad Bishopbec4ebc2022-08-03 09:55:16 -0400165 TESTING: testimage
166
167qemuarm64-secureboot:
168 extends: .build
169 parallel:
170 matrix:
Andrew Geissler2daf84b2023-03-31 09:57:23 -0500171 - KERNEL: [linux-yocto, linux-yocto-dev, linux-yocto-rt]
172 TOOLCHAINS: [gcc, clang]
Brad Bishopbec4ebc2022-08-03 09:55:16 -0400173 TCLIBC: [glibc, musl]
Patrick Williamsb542dec2023-06-09 01:26:37 -0500174 TS: [none, qemuarm64-secureboot-ts]
Patrick Williams92b42cb2022-09-03 06:53:57 -0500175 TESTING: testimage
176
Brad Bishopbec4ebc2022-08-03 09:55:16 -0400177qemuarm64:
178 extends: .build
179 parallel:
180 matrix:
Andrew Geissler2daf84b2023-03-31 09:57:23 -0500181 - DISTRO: poky
182 KERNEL: [linux-yocto, linux-yocto-dev, linux-yocto-rt]
183 TOOLCHAINS: [gcc, clang]
184 FIRMWARE: [u-boot, edk2]
185 TESTING: testimage
186 - DISTRO: poky-tiny
Brad Bishopbec4ebc2022-08-03 09:55:16 -0400187 TESTING: testimage
188 - VIRT: xen
189
190qemuarm-secureboot:
191 extends: .build
192 parallel:
193 matrix:
Andrew Geissler2daf84b2023-03-31 09:57:23 -0500194 - KERNEL: [linux-yocto, linux-yocto-dev, linux-yocto-rt]
Patrick Williamsb542dec2023-06-09 01:26:37 -0500195 TOOLCHAINS: [gcc, clang]
196 TCLIBC: [glibc, musl]
197 TESTING: testimage
198 - TOOLCHAINS: external-gccarm
Brad Bishopbec4ebc2022-08-03 09:55:16 -0400199 TESTING: testimage
200
201qemuarm:
202 extends: .build
203 parallel:
204 matrix:
Andrew Geissler2daf84b2023-03-31 09:57:23 -0500205 - DISTRO: poky
206 KERNEL: [linux-yocto, linux-yocto-dev, linux-yocto-rt]
207 TOOLCHAINS: [gcc, clang]
208 FIRMWARE: [u-boot, edk2]
209 TESTING: testimage
210 - DISTRO: poky-tiny
Brad Bishopbec4ebc2022-08-03 09:55:16 -0400211 TESTING: testimage
212 - VIRT: xen
213
214qemuarmv5:
215 extends: .build
216 parallel:
217 matrix:
Andrew Geissler2daf84b2023-03-31 09:57:23 -0500218 - DISTRO: poky
219 KERNEL: [linux-yocto, linux-yocto-dev, linux-yocto-rt]
220 TESTING: testimage
221 - DISTRO: poky-tiny
222 TESTING: testimage
Brad Bishopbec4ebc2022-08-03 09:55:16 -0400223
224sgi575:
225 extends: .build
226
Brad Bishopbec4ebc2022-08-03 09:55:16 -0400227tc1:
228 extends: .build
Patrick Williams8e7b46e2023-05-01 14:19:06 -0500229 parallel:
230 matrix:
231 - TESTING: testimage
Brad Bishopbec4ebc2022-08-03 09:55:16 -0400232 tags:
233 - x86_64
234
235toolchains:
236 extends: .build
237
238selftest:
239 extends: .setup
240 script:
Andrew Geissler23e02792023-07-21 09:06:10 -0500241 - KASFILES=./ci/qemuarm64.yml:./ci/selftest.yml:lockfile.yml
Brad Bishopbec4ebc2022-08-03 09:55:16 -0400242 - kas shell --update --force-checkout $KASFILES -c 'oe-selftest --num-processes 1 --run-tests runfvp'
243
244# Validate layers are Yocto Project Compatible
245check-layers:
246 extends: .setup
247 script:
Andrew Geissler23e02792023-07-21 09:06:10 -0500248 - kas shell --update --force-checkout ci/base.yml:ci/meta-openembedded.yml:lockfile.yml --command \
Brad Bishopbec4ebc2022-08-03 09:55:16 -0400249 "yocto-check-layer-wrapper $CI_PROJECT_DIR/$LAYER --dependency $CI_PROJECT_DIR/meta-* $KAS_WORK_DIR/meta-openembedded/meta-oe --no-auto-dependency"
250 parallel:
251 matrix:
Andrew Geissler517393d2023-01-13 08:55:19 -0600252 - LAYER: [meta-arm, meta-arm-bsp, meta-arm-toolchain]
Brad Bishopbec4ebc2022-08-03 09:55:16 -0400253
254pending-updates:
255 extends: .setup
256 artifacts:
257 paths:
258 - update-report
259 script:
260 - rm -fr update-report
261 # This configuration has all of the layers we need enabled
Andrew Geissler23e02792023-07-21 09:06:10 -0500262 - kas shell --update --force-checkout ci/qemuarm64.yml:ci/meta-openembedded.yml:lockfile.yml --command \
Andrew Geissler517393d2023-01-13 08:55:19 -0600263 "$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 -0400264 # Do this on x86 whilst the compilers are x86-only
265 tags:
266 - x86_64
267
268# What percentage of machines in the layer do we build
269machine-coverage:
Andrew Geissler517393d2023-01-13 08:55:19 -0600270 extends: .setup
Brad Bishopbec4ebc2022-08-03 09:55:16 -0400271 script:
272 - ./ci/check-machine-coverage
273 coverage: '/Coverage: \d+/'
274
275metrics:
276 extends: .setup
277 artifacts:
278 reports:
279 metrics: metrics.txt
280 script:
281 - kas shell --update --force-checkout ci/base.yml --command \
282 "$CI_PROJECT_DIR/ci/patchreview $CI_PROJECT_DIR/meta-* --verbose --metrics $CI_PROJECT_DIR/metrics.txt"
Patrick Williams2390b1b2022-11-03 13:47:49 -0500283
284documentation:
285 extends: .setup
286 script:
287 - |
288 sudo pip3 install -r meta-arm-bsp/documentation/requirements.txt
289 for CONF in meta-*/documentation/*/conf.py ; do
Patrick Williams520786c2023-06-25 16:20:36 -0500290 echo Building $CONF...
Patrick Williams2390b1b2022-11-03 13:47:49 -0500291 SOURCE_DIR=$(dirname $CONF)
292 MACHINE=$(basename $SOURCE_DIR)
293 sphinx-build -vW $SOURCE_DIR build-docs/$MACHINE
294 done
295 test -d build-docs/
296 artifacts:
297 paths:
298 - build-docs/