blob: 09ca8c41d7c3654d03e6328b39d1cbed96849229 [file] [log] [blame]
Brad Bishopbec4ebc2022-08-03 09:55:16 -04001image: ghcr.io/siemens/kas/kas:latest-release
2
Andrew Geissler517393d2023-01-13 08:55:19 -06003variables:
4 CPU_REQUEST: ""
5 DEFAULT_TAG: ""
6 # These are needed as the k8s executor doesn't respect the container entrypoint
7 # by default
8 FF_KUBERNETES_HONOR_ENTRYPOINT: 1
9 FF_USE_LEGACY_KUBERNETES_EXECUTION_STRATEGY: 0
10
Brad Bishopbec4ebc2022-08-03 09:55:16 -040011stages:
12 - prep
13 - build
14
15# Common job fragment to get a worker ready
16.setup:
Andrew Geissler517393d2023-01-13 08:55:19 -060017 tags:
18 - $DEFAULT_TAG
Brad Bishopbec4ebc2022-08-03 09:55:16 -040019 stage: build
20 interruptible: true
21 variables:
22 KAS_WORK_DIR: $CI_PROJECT_DIR/work
23 KAS_REPO_REF_DIR: $CI_BUILDS_DIR/persist/repos
24 SSTATE_DIR: $CI_BUILDS_DIR/persist/sstate
25 DL_DIR: $CI_BUILDS_DIR/persist/downloads
26 BB_LOGCONFIG: $CI_PROJECT_DIR/ci/logging.yml
27 TOOLCHAIN_DIR: $CI_BUILDS_DIR/persist/toolchains
28 IMAGE_DIR: $CI_PROJECT_DIR/work/build/tmp/deploy/images
29 TOOLCHAIN_LINK_DIR: $CI_PROJECT_DIR/work/build/toolchains
30 before_script:
31 - echo KAS_WORK_DIR = $KAS_WORK_DIR
32 - echo SSTATE_DIR = $SSTATE_DIR
33 - echo DL_DIR = $DL_DIR
34 - rm -rf $KAS_WORK_DIR
35 - mkdir --verbose --parents $KAS_WORK_DIR $KAS_REPO_REF_DIR $SSTATE_DIR $DL_DIR $TOOLCHAIN_DIR $TOOLCHAIN_LINK_DIR
36 # Must do this here, as it's the only way to make sure the toolchain is installed on the same builder
37 - ./ci/get-binary-toolchains $DL_DIR $TOOLCHAIN_DIR $TOOLCHAIN_LINK_DIR
Andrew Geissler517393d2023-01-13 08:55:19 -060038 # This can be removed with Kas 3.2
39 - sudo apt-get update && sudo apt-get install --yes python3-subunit
Brad Bishopbec4ebc2022-08-03 09:55:16 -040040
41# Generalised fragment to do a Kas build
42.build:
43 extends: .setup
Andrew Geissler517393d2023-01-13 08:55:19 -060044 variables:
45 KUBERNETES_CPU_REQUEST: $CPU_REQUEST
Brad Bishopbec4ebc2022-08-03 09:55:16 -040046 script:
47 - KASFILES=$(./ci/jobs-to-kas "$CI_JOB_NAME")
48 - kas shell --update --force-checkout $KASFILES -c 'cat conf/*.conf'
49 - kas build $KASFILES
50 - ./ci/check-warnings $KAS_WORK_DIR/build/warnings.log
51 artifacts:
52 name: "logs"
53 when: on_failure
54 paths:
55 - $CI_PROJECT_DIR/work/build/tmp/work*/**/temp/log.do_*.*
56
57#
58# Prep stage, update repositories once
59#
60update-repos:
61 extends: .setup
62 stage: prep
63 script:
64 - flock --verbose --timeout 60 $KAS_REPO_REF_DIR ./ci/update-repos
65
66#
67# Build stage, the actual build jobs
68#
69# Available options for building are
70# TOOLCHAINS: [gcc, clang, armgcc, external-gccarm]
71# TCLIBC: [glibc, musl]
72# FIRMWARE: [uboot, edk2]
73# VIRT: [none, xen]
74# TESTING: testimage
75
76corstone500:
77 extends: .build
78 parallel:
79 matrix:
80 - TESTING: testimage
81 tags:
82 - x86_64
83
84corstone1000-fvp:
85 extends: .build
86 parallel:
87 matrix:
88 - TESTING: [testimage,tftf]
89 tags:
90 - x86_64
91
92corstone1000-mps3:
93 extends: .build
94
95fvp-base:
96 extends: .build
97 parallel:
98 matrix:
99 - TESTING: testimage
Brad Bishopbec4ebc2022-08-03 09:55:16 -0400100
101fvp-base-arm32:
102 extends: .build
103 parallel:
104 matrix:
105 - TOOLCHAINS: [gcc, external-gccarm]
106 TESTING: testimage
Brad Bishopbec4ebc2022-08-03 09:55:16 -0400107
108fvp-baser-aemv8r64:
109 extends: .build
110 parallel:
111 matrix:
112 - TESTING: testimage
113 tags:
114 - x86_64
115
116fvps:
117 extends: .build
118
Brad Bishopbec4ebc2022-08-03 09:55:16 -0400119generic-arm64:
120 extends: .build
121
122juno:
123 extends: .build
124 parallel:
125 matrix:
126 - TOOLCHAINS: [gcc, clang]
127 FIRMWARE: [uboot, edk2]
128
Brad Bishopbec4ebc2022-08-03 09:55:16 -0400129musca-b1:
130 extends: .build
131
132musca-s1:
133 extends: .build
134
135n1sdp:
136 extends: .build
137 parallel:
138 matrix:
139 - TOOLCHAINS: [gcc, armgcc]
Andrew Geissler517393d2023-01-13 08:55:19 -0600140 TS: [none, trusted-services]
Brad Bishopbec4ebc2022-08-03 09:55:16 -0400141
Brad Bishopbec4ebc2022-08-03 09:55:16 -0400142qemu-generic-arm64:
143 extends: .build
144 parallel:
145 matrix:
146 - TOOLCHAINS: [gcc, clang]
147 TESTING: testimage
148
149qemuarm64-secureboot:
150 extends: .build
151 parallel:
152 matrix:
153 - TOOLCHAINS: [gcc, clang]
154 TCLIBC: [glibc, musl]
Patrick Williams2194f502022-10-16 14:26:09 -0500155 TS: [none, trusted-services]
Patrick Williams92b42cb2022-09-03 06:53:57 -0500156 TESTING: testimage
157
Brad Bishopbec4ebc2022-08-03 09:55:16 -0400158qemuarm64:
159 extends: .build
160 parallel:
161 matrix:
162 - TOOLCHAINS: [gcc, clang]
163 EFI: [uboot, edk2]
164 TESTING: testimage
165 - VIRT: xen
166
167qemuarm-secureboot:
168 extends: .build
169 parallel:
170 matrix:
171 - TOOLCHAINS: [gcc, clang]
172 TESTING: testimage
173
174qemuarm:
175 extends: .build
176 parallel:
177 matrix:
178 - TOOLCHAINS: [gcc, clang]
179 EFI: [uboot, edk2]
180 TESTING: testimage
181 - VIRT: xen
182
183qemuarmv5:
184 extends: .build
185 parallel:
186 matrix:
187 - TESTING: testimage
188
189sgi575:
190 extends: .build
191
Brad Bishopbec4ebc2022-08-03 09:55:16 -0400192tc1:
193 extends: .build
194 tags:
195 - x86_64
196
197toolchains:
198 extends: .build
199
200selftest:
201 extends: .setup
202 script:
203 - KASFILES=./ci/qemuarm64.yml:./ci/selftest.yml
204 - kas shell --update --force-checkout $KASFILES -c 'oe-selftest --num-processes 1 --run-tests runfvp'
205
206# Validate layers are Yocto Project Compatible
207check-layers:
208 extends: .setup
209 script:
210 - kas shell --update --force-checkout ci/base.yml:ci/meta-openembedded.yml --command \
211 "yocto-check-layer-wrapper $CI_PROJECT_DIR/$LAYER --dependency $CI_PROJECT_DIR/meta-* $KAS_WORK_DIR/meta-openembedded/meta-oe --no-auto-dependency"
212 parallel:
213 matrix:
Andrew Geissler517393d2023-01-13 08:55:19 -0600214 - LAYER: [meta-arm, meta-arm-bsp, meta-arm-toolchain]
Brad Bishopbec4ebc2022-08-03 09:55:16 -0400215
216pending-updates:
217 extends: .setup
218 artifacts:
219 paths:
220 - update-report
221 script:
222 - rm -fr update-report
223 # This configuration has all of the layers we need enabled
Andrew Geissler517393d2023-01-13 08:55:19 -0600224 - kas shell ci/qemuarm64.yml:ci/meta-openembedded.yml --command \
225 "$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 -0400226 # Do this on x86 whilst the compilers are x86-only
227 tags:
228 - x86_64
229
230# What percentage of machines in the layer do we build
231machine-coverage:
Andrew Geissler517393d2023-01-13 08:55:19 -0600232 extends: .setup
Brad Bishopbec4ebc2022-08-03 09:55:16 -0400233 script:
234 - ./ci/check-machine-coverage
235 coverage: '/Coverage: \d+/'
236
237metrics:
238 extends: .setup
239 artifacts:
240 reports:
241 metrics: metrics.txt
242 script:
243 - kas shell --update --force-checkout ci/base.yml --command \
244 "$CI_PROJECT_DIR/ci/patchreview $CI_PROJECT_DIR/meta-* --verbose --metrics $CI_PROJECT_DIR/metrics.txt"
Patrick Williams2390b1b2022-11-03 13:47:49 -0500245
246documentation:
247 extends: .setup
248 script:
249 - |
250 sudo pip3 install -r meta-arm-bsp/documentation/requirements.txt
251 for CONF in meta-*/documentation/*/conf.py ; do
252 SOURCE_DIR=$(dirname $CONF)
253 MACHINE=$(basename $SOURCE_DIR)
254 sphinx-build -vW $SOURCE_DIR build-docs/$MACHINE
255 done
256 test -d build-docs/
257 artifacts:
258 paths:
259 - build-docs/