blob: 7d050a551b25e38139e202e72482b930d1e8d9b6 [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]
Patrick Williams2194f502022-10-16 14:26:09 -0500154 TS: [none, trusted-services]
Patrick Williams92b42cb2022-09-03 06:53:57 -0500155 TESTING: testimage
156
Brad Bishopbec4ebc2022-08-03 09:55:16 -0400157qemuarm64:
158 extends: .build
159 parallel:
160 matrix:
161 - TOOLCHAINS: [gcc, clang]
162 EFI: [uboot, edk2]
163 TESTING: testimage
164 - VIRT: xen
165
166qemuarm-secureboot:
167 extends: .build
168 parallel:
169 matrix:
170 - TOOLCHAINS: [gcc, clang]
171 TESTING: testimage
172
173qemuarm:
174 extends: .build
175 parallel:
176 matrix:
177 - TOOLCHAINS: [gcc, clang]
178 EFI: [uboot, edk2]
179 TESTING: testimage
180 - VIRT: xen
181
182qemuarmv5:
183 extends: .build
184 parallel:
185 matrix:
186 - TESTING: testimage
187
188sgi575:
189 extends: .build
190
Brad Bishopbec4ebc2022-08-03 09:55:16 -0400191tc1:
192 extends: .build
193 tags:
194 - x86_64
195
196toolchains:
197 extends: .build
198
199selftest:
200 extends: .setup
201 script:
202 - KASFILES=./ci/qemuarm64.yml:./ci/selftest.yml
203 - kas shell --update --force-checkout $KASFILES -c 'oe-selftest --num-processes 1 --run-tests runfvp'
204
205# Validate layers are Yocto Project Compatible
206check-layers:
207 extends: .setup
208 script:
209 - kas shell --update --force-checkout ci/base.yml:ci/meta-openembedded.yml --command \
210 "yocto-check-layer-wrapper $CI_PROJECT_DIR/$LAYER --dependency $CI_PROJECT_DIR/meta-* $KAS_WORK_DIR/meta-openembedded/meta-oe --no-auto-dependency"
211 parallel:
212 matrix:
213 - LAYER: [meta-arm, meta-arm-bsp, meta-arm-toolchain, meta-gem5]
214
215pending-updates:
216 extends: .setup
217 artifacts:
218 paths:
219 - update-report
220 script:
221 - rm -fr update-report
222 # This configuration has all of the layers we need enabled
223 - kas shell ci/gem5-arm64.yml --command \
224 "$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)"
225 # Do this on x86 whilst the compilers are x86-only
226 tags:
227 - x86_64
228
229# What percentage of machines in the layer do we build
230machine-coverage:
231 stage: build
232 interruptible: true
233 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/