blob: 7474e24718e269cdbb8fa1a599c3fb8fab73d531 [file] [log] [blame]
Brad Bishopbec4ebc2022-08-03 09:55:16 -04001image: ghcr.io/siemens/kas/kas:latest-release
2
3stages:
4 - prep
5 - build
6
7# Common job fragment to get a worker ready
8.setup:
9 stage: build
10 interruptible: true
11 variables:
12 KAS_WORK_DIR: $CI_PROJECT_DIR/work
13 KAS_REPO_REF_DIR: $CI_BUILDS_DIR/persist/repos
14 SSTATE_DIR: $CI_BUILDS_DIR/persist/sstate
15 DL_DIR: $CI_BUILDS_DIR/persist/downloads
16 BB_LOGCONFIG: $CI_PROJECT_DIR/ci/logging.yml
17 TOOLCHAIN_DIR: $CI_BUILDS_DIR/persist/toolchains
18 IMAGE_DIR: $CI_PROJECT_DIR/work/build/tmp/deploy/images
19 TOOLCHAIN_LINK_DIR: $CI_PROJECT_DIR/work/build/toolchains
20 before_script:
21 - echo KAS_WORK_DIR = $KAS_WORK_DIR
22 - echo SSTATE_DIR = $SSTATE_DIR
23 - echo DL_DIR = $DL_DIR
24 - rm -rf $KAS_WORK_DIR
25 - mkdir --verbose --parents $KAS_WORK_DIR $KAS_REPO_REF_DIR $SSTATE_DIR $DL_DIR $TOOLCHAIN_DIR $TOOLCHAIN_LINK_DIR
26 # Must do this here, as it's the only way to make sure the toolchain is installed on the same builder
27 - ./ci/get-binary-toolchains $DL_DIR $TOOLCHAIN_DIR $TOOLCHAIN_LINK_DIR
28 - sudo apt-get update && sudo apt-get install --yes telnet python3-subunit
29
30# Generalised fragment to do a Kas build
31.build:
32 extends: .setup
33 script:
34 - KASFILES=$(./ci/jobs-to-kas "$CI_JOB_NAME")
35 - kas shell --update --force-checkout $KASFILES -c 'cat conf/*.conf'
36 - kas build $KASFILES
37 - ./ci/check-warnings $KAS_WORK_DIR/build/warnings.log
38 artifacts:
39 name: "logs"
40 when: on_failure
41 paths:
42 - $CI_PROJECT_DIR/work/build/tmp/work*/**/temp/log.do_*.*
43
44#
45# Prep stage, update repositories once
46#
47update-repos:
48 extends: .setup
49 stage: prep
50 script:
51 - flock --verbose --timeout 60 $KAS_REPO_REF_DIR ./ci/update-repos
52
53#
54# Build stage, the actual build jobs
55#
56# Available options for building are
57# TOOLCHAINS: [gcc, clang, armgcc, external-gccarm]
58# TCLIBC: [glibc, musl]
59# FIRMWARE: [uboot, edk2]
60# VIRT: [none, xen]
61# TESTING: testimage
62
63corstone500:
64 extends: .build
65 parallel:
66 matrix:
67 - TESTING: testimage
68 tags:
69 - x86_64
70
71corstone1000-fvp:
72 extends: .build
73 parallel:
74 matrix:
75 - TESTING: [testimage,tftf]
76 tags:
77 - x86_64
78
79corstone1000-mps3:
80 extends: .build
81
82fvp-base:
83 extends: .build
84 parallel:
85 matrix:
86 - TESTING: testimage
87 tags:
88 - x86_64
89
90fvp-base-arm32:
91 extends: .build
92 parallel:
93 matrix:
94 - TOOLCHAINS: [gcc, external-gccarm]
95 TESTING: testimage
96 tags:
97 - x86_64
98
99fvp-baser-aemv8r64:
100 extends: .build
101 parallel:
102 matrix:
103 - TESTING: testimage
104 tags:
105 - x86_64
106
107fvps:
108 extends: .build
109
110gem5-arm64:
111 extends: .build
112 parallel:
113 matrix:
114 - VIRT: [none, xen]
115
116gem5-atp-arm64:
117 extends: .build
118
119generic-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]
140
Brad Bishopbec4ebc2022-08-03 09:55:16 -0400141qemu-generic-arm64:
142 extends: .build
143 parallel:
144 matrix:
145 - TOOLCHAINS: [gcc, clang]
146 TESTING: testimage
147
148qemuarm64-secureboot:
149 extends: .build
150 parallel:
151 matrix:
152 - TOOLCHAINS: [gcc, clang]
153 TCLIBC: [glibc, musl]
154 TESTING: testimage
155
Patrick Williams92b42cb2022-09-03 06:53:57 -0500156qemuarm64-secureboot-ts:
157 extends: .build
158 parallel:
159 matrix:
160 - TCLIBC: [glibc, musl]
161 TESTING: testimage
162
Brad Bishopbec4ebc2022-08-03 09:55:16 -0400163qemuarm64:
164 extends: .build
165 parallel:
166 matrix:
167 - TOOLCHAINS: [gcc, clang]
168 EFI: [uboot, edk2]
169 TESTING: testimage
170 - VIRT: xen
171
172qemuarm-secureboot:
173 extends: .build
174 parallel:
175 matrix:
176 - TOOLCHAINS: [gcc, clang]
177 TESTING: testimage
178
179qemuarm:
180 extends: .build
181 parallel:
182 matrix:
183 - TOOLCHAINS: [gcc, clang]
184 EFI: [uboot, edk2]
185 TESTING: testimage
186 - VIRT: xen
187
188qemuarmv5:
189 extends: .build
190 parallel:
191 matrix:
192 - TESTING: testimage
193
194sgi575:
195 extends: .build
196
197tc0:
198 extends: .build
199 tags:
200 - x86_64
201
202tc1:
203 extends: .build
204 tags:
205 - x86_64
206
207toolchains:
208 extends: .build
209
210selftest:
211 extends: .setup
212 script:
213 - KASFILES=./ci/qemuarm64.yml:./ci/selftest.yml
214 - kas shell --update --force-checkout $KASFILES -c 'oe-selftest --num-processes 1 --run-tests runfvp'
215
216# Validate layers are Yocto Project Compatible
217check-layers:
218 extends: .setup
219 script:
220 - kas shell --update --force-checkout ci/base.yml:ci/meta-openembedded.yml --command \
221 "yocto-check-layer-wrapper $CI_PROJECT_DIR/$LAYER --dependency $CI_PROJECT_DIR/meta-* $KAS_WORK_DIR/meta-openembedded/meta-oe --no-auto-dependency"
222 parallel:
223 matrix:
224 - LAYER: [meta-arm, meta-arm-bsp, meta-arm-toolchain, meta-gem5]
225
226pending-updates:
227 extends: .setup
228 artifacts:
229 paths:
230 - update-report
231 script:
232 - rm -fr update-report
233 # This configuration has all of the layers we need enabled
234 - kas shell ci/gem5-arm64.yml --command \
235 "$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 meta-gem5)"
236 # Do this on x86 whilst the compilers are x86-only
237 tags:
238 - x86_64
239
240# What percentage of machines in the layer do we build
241machine-coverage:
242 stage: build
243 interruptible: true
244 script:
245 - ./ci/check-machine-coverage
246 coverage: '/Coverage: \d+/'
247
248metrics:
249 extends: .setup
250 artifacts:
251 reports:
252 metrics: metrics.txt
253 script:
254 - kas shell --update --force-checkout ci/base.yml --command \
255 "$CI_PROJECT_DIR/ci/patchreview $CI_PROJECT_DIR/meta-* --verbose --metrics $CI_PROJECT_DIR/metrics.txt"