1.build-tmpl: &build 2 stage: build 3 image: ${XEN_REGISTRY}/${CONTAINER} 4 script: 5 - ./automation/scripts/build 2>&1 | tee build.log 6 artifacts: 7 paths: 8 - binaries/ 9 - xen-config 10 - xen-cppcheck.txt 11 - '*.log' 12 - '*/*.log' 13 when: always 14 needs: [] 15 rules: 16 - if: $SELECTED_JOBS_ONLY && $CI_JOB_NAME =~ $SELECTED_JOBS_ONLY 17 when: always 18 - if: $SELECTED_JOBS_ONLY 19 when: never 20 - when: on_success 21 22.gcc-tmpl: 23 variables: &gcc 24 CC: gcc 25 CXX: g++ 26 27.clang-tmpl: 28 variables: &clang 29 CC: clang 30 CXX: clang++ 31 clang: y 32 33.x86-64-build-tmpl: 34 <<: *build 35 variables: 36 XEN_TARGET_ARCH: x86_64 37 tags: 38 - x86_64 39 40.x86-64-build: 41 extends: .x86-64-build-tmpl 42 variables: 43 debug: n 44 45.x86-64-build-debug: 46 extends: .x86-64-build-tmpl 47 variables: 48 debug: y 49 50.x86-32-build-tmpl: 51 <<: *build 52 variables: 53 XEN_TARGET_ARCH: x86_32 54 tags: 55 - x86_32 56 57.x86-32-build: 58 extends: .x86-32-build-tmpl 59 variables: 60 debug: n 61 62.x86-32-build-debug: 63 extends: .x86-32-build-tmpl 64 variables: 65 debug: y 66 67.gcc-x86-64-build: 68 extends: .x86-64-build 69 variables: 70 <<: *gcc 71 72.gcc-x86-64-build-debug: 73 extends: .x86-64-build-debug 74 variables: 75 <<: *gcc 76 77.gcc-x86-32-build: 78 extends: .x86-32-build 79 variables: 80 <<: *gcc 81 82.gcc-x86-32-build-debug: 83 extends: .x86-32-build-debug 84 variables: 85 <<: *gcc 86 87.clang-x86-64-build: 88 extends: .x86-64-build 89 variables: 90 <<: *clang 91 92.clang-x86-64-build-debug: 93 extends: .x86-64-build-debug 94 variables: 95 <<: *clang 96 97.clang-x86-32-build: 98 extends: .x86-32-build 99 variables: 100 <<: *clang 101 102.clang-x86-32-build-debug: 103 extends: .x86-32-build-debug 104 variables: 105 <<: *clang 106 107.arm32-cross-build-tmpl: 108 <<: *build 109 variables: 110 XEN_TARGET_ARCH: arm32 111 tags: 112 - arm64 113 114.arm32-cross-build: 115 extends: .arm32-cross-build-tmpl 116 variables: 117 debug: n 118 119.arm32-cross-build-debug: 120 extends: .arm32-cross-build-tmpl 121 variables: 122 debug: y 123 124.gcc-arm32-cross-build: 125 extends: .arm32-cross-build 126 variables: 127 <<: *gcc 128 129.gcc-arm32-cross-build-debug: 130 extends: .arm32-cross-build-debug 131 variables: 132 <<: *gcc 133 134.arm64-build-tmpl: 135 <<: *build 136 variables: 137 XEN_TARGET_ARCH: arm64 138 tags: 139 - arm64 140 141.arm64-build: 142 extends: .arm64-build-tmpl 143 variables: 144 debug: n 145 146.arm64-build-debug: 147 extends: .arm64-build-tmpl 148 variables: 149 debug: y 150 151.gcc-arm64-build: 152 extends: .arm64-build 153 variables: 154 <<: *gcc 155 156.gcc-arm64-build-debug: 157 extends: .arm64-build-debug 158 variables: 159 <<: *gcc 160 161.riscv64-cross-build-tmpl: 162 <<: *build 163 variables: 164 XEN_TARGET_ARCH: riscv64 165 tags: 166 - x86_64 167 168.riscv64-cross-build: 169 extends: .riscv64-cross-build-tmpl 170 variables: 171 debug: n 172 173.riscv64-cross-build-debug: 174 extends: .riscv64-cross-build-tmpl 175 variables: 176 debug: y 177 178.gcc-riscv64-cross-build: 179 extends: .riscv64-cross-build 180 variables: 181 <<: *gcc 182 183.gcc-riscv64-cross-build-debug: 184 extends: .riscv64-cross-build-debug 185 variables: 186 <<: *gcc 187 188.ppc64le-cross-build-tmpl: 189 <<: *build 190 variables: 191 XEN_TARGET_ARCH: ppc64 192 tags: 193 - x86_64 194 195.ppc64le-cross-build: 196 extends: .ppc64le-cross-build-tmpl 197 variables: 198 debug: n 199 200.ppc64le-cross-build-debug: 201 extends: .ppc64le-cross-build-tmpl 202 variables: 203 debug: y 204 205.gcc-ppc64le-cross-build: 206 extends: .ppc64le-cross-build 207 variables: 208 <<: *gcc 209 210.gcc-ppc64le-cross-build-debug: 211 extends: .ppc64le-cross-build-debug 212 variables: 213 <<: *gcc 214 215.yocto-test: 216 stage: build 217 image: ${XEN_REGISTRY}/${CONTAINER} 218 script: 219 - ./automation/build/yocto/build-yocto.sh -v --log-dir=./logs --xen-dir=`pwd` ${YOCTO_BOARD} ${YOCTO_OUTPUT} 220 variables: 221 YOCTO_VERSION: scarthgap 222 CONTAINER: yocto:${YOCTO_VERSION}-${YOCTO_BOARD}${YOCTO_HOST} 223 artifacts: 224 paths: 225 - 'logs/*' 226 - binaries/ 227 when: always 228 needs: [] 229 230.yocto-test-arm64: 231 extends: .yocto-test 232 variables: 233 YOCTO_HOST: -arm64v8 234 tags: 235 - arm64 236 237.yocto-test-x86-64: 238 extends: .yocto-test 239 tags: 240 - x86_64 241 242.x86-64-cross-build-tmpl: 243 <<: *build 244 variables: 245 XEN_TARGET_ARCH: x86_64 246 tags: 247 - arm64 248 249.x86-64-cross-build: 250 extends: .x86-64-cross-build-tmpl 251 variables: 252 debug: n 253 254.gcc-x86-64-cross-build: 255 extends: .x86-64-cross-build 256 variables: 257 <<: *gcc 258 259## Test artifacts common 260 261.test-jobs-artifact-common: 262 stage: build 263 needs: [] 264 265# Arm test artifacts 266 267qemu-system-aarch64-6.0.0-arm64-export: 268 extends: .test-jobs-artifact-common 269 image: registry.gitlab.com/xen-project/xen/tests-artifacts/qemu-system-aarch64:6.0.0-arm64v8 270 script: 271 - mkdir binaries && cp /qemu-system-aarch64 binaries/qemu-system-aarch64 272 artifacts: 273 paths: 274 - binaries/qemu-system-aarch64 275 tags: 276 - arm64 277 278qemu-system-aarch64-6.0.0-arm32-export: 279 extends: .test-jobs-artifact-common 280 image: registry.gitlab.com/xen-project/xen/tests-artifacts/qemu-system-aarch64:6.0.0-arm64v8 281 script: 282 - mkdir binaries && cp /qemu-system-arm binaries/qemu-system-arm 283 artifacts: 284 paths: 285 - binaries/qemu-system-arm 286 tags: 287 - arm64 288 289# Jobs below this line 290 291# Build jobs needed for tests 292 293alpine-3.18-gcc: 294 extends: .gcc-x86-64-build 295 variables: 296 CONTAINER: alpine:3.18 297 298alpine-3.18-gcc-debug: 299 extends: .gcc-x86-64-build-debug 300 variables: 301 CONTAINER: alpine:3.18 302 BUILD_QEMU_XEN: y 303 EXTRA_XEN_CONFIG: | 304 CONFIG_EXPERT=y 305 CONFIG_UNSUPPORTED=y 306 CONFIG_ARGO=y 307 CONFIG_UBSAN=y 308 CONFIG_UBSAN_FATAL=y 309 CONFIG_UCODE_SCAN_DEFAULT=y 310 CONFIG_XHCI=y 311 312debian-12-x86_64-gcc-debug: 313 extends: .gcc-x86-64-build-debug 314 variables: 315 CONTAINER: debian:12-x86_64 316 317debian-12-x86_64-clang-debug: 318 extends: .clang-x86-64-build-debug 319 variables: 320 CONTAINER: debian:12-x86_64 321 322debian-12-ppc64le-gcc-debug: 323 extends: .gcc-ppc64le-cross-build-debug 324 variables: 325 CONTAINER: debian:12-ppc64le 326 KBUILD_DEFCONFIG: ppc64_defconfig 327 HYPERVISOR_ONLY: y 328 EXTRA_XEN_CONFIG: | 329 CONFIG_UBSAN=y 330 CONFIG_UBSAN_FATAL=y 331 332debian-12-riscv64-gcc-debug: 333 extends: .gcc-riscv64-cross-build-debug 334 variables: 335 CONTAINER: debian:12-riscv64 336 KBUILD_DEFCONFIG: tiny64_defconfig 337 HYPERVISOR_ONLY: y 338 EXTRA_XEN_CONFIG: | 339 CONFIG_UBSAN=y 340 CONFIG_UBSAN_FATAL=y 341 342# Arm32 cross-build 343 344debian-bookworm-gcc-arm32: 345 extends: .gcc-arm32-cross-build 346 variables: 347 CONTAINER: debian:bookworm-arm64v8-arm32-gcc 348 HYPERVISOR_ONLY: y 349 350debian-bookworm-gcc-arm32-debug: 351 extends: .gcc-arm32-cross-build-debug 352 variables: 353 CONTAINER: debian:bookworm-arm64v8-arm32-gcc 354 HYPERVISOR_ONLY: y 355 356debian-bookworm-gcc-arm32-randconfig: 357 extends: .gcc-arm32-cross-build 358 variables: 359 CONTAINER: debian:bookworm-arm64v8-arm32-gcc 360 HYPERVISOR_ONLY: y 361 RANDCONFIG: y 362 363debian-bookworm-gcc-arm32-debug-staticmem: 364 extends: .gcc-arm32-cross-build-debug 365 variables: 366 CONTAINER: debian:bookworm-arm64v8-arm32-gcc 367 HYPERVISOR_ONLY: y 368 EXTRA_XEN_CONFIG: | 369 CONFIG_EXPERT=y 370 CONFIG_UNSUPPORTED=y 371 CONFIG_STATIC_MEMORY=y 372 373debian-bookworm-gcc-arm32-debug-earlyprintk: 374 extends: .gcc-arm32-cross-build-debug 375 variables: 376 CONTAINER: debian:bookworm-arm64v8-arm32-gcc 377 HYPERVISOR_ONLY: y 378 EXTRA_XEN_CONFIG: | 379 CONFIG_EARLY_UART_CHOICE_PL011=y 380 CONFIG_EARLY_UART_BASE_ADDRESS=0x9000000 381 382debian-bookworm-gcc-arm32-debug-mpu: 383 extends: .gcc-arm32-cross-build-debug 384 variables: 385 CONTAINER: debian:bookworm-arm64v8-arm32-gcc 386 HYPERVISOR_ONLY: y 387 EXTRA_XEN_CONFIG: | 388 CONFIG_XEN_START_ADDRESS=0x0 389 CONFIG_MPU=y 390 CONFIG_UNSUPPORTED=y 391 392# Arm builds 393 394debian-bookworm-gcc-arm64: 395 extends: .gcc-arm64-build 396 variables: 397 CONTAINER: debian:bookworm-arm64v8 398 399debian-bookworm-gcc-debug-arm64: 400 extends: .gcc-arm64-build-debug 401 variables: 402 CONTAINER: debian:bookworm-arm64v8 403 404alpine-3.18-gcc-arm64: 405 extends: .gcc-arm64-build 406 variables: 407 CONTAINER: alpine:3.18-arm64v8 408 409alpine-3.18-gcc-debug-arm64: 410 extends: .gcc-arm64-build-debug 411 variables: 412 CONTAINER: alpine:3.18-arm64v8 413 EXTRA_XEN_CONFIG: | 414 CONFIG_UBSAN=y 415 CONFIG_UBSAN_FATAL=y 416 417alpine-3.18-gcc-arm64-randconfig: 418 extends: .gcc-arm64-build 419 variables: 420 CONTAINER: alpine:3.18-arm64v8 421 RANDCONFIG: y 422 423alpine-3.18-gcc-debug-arm64-staticmem: 424 extends: .gcc-arm64-build-debug 425 variables: 426 CONTAINER: alpine:3.18-arm64v8 427 EXTRA_XEN_CONFIG: | 428 CONFIG_EXPERT=y 429 CONFIG_UNSUPPORTED=y 430 CONFIG_STATIC_MEMORY=y 431 432alpine-3.18-gcc-debug-arm64-static-shared-mem: 433 extends: .gcc-arm64-build-debug 434 variables: 435 CONTAINER: alpine:3.18-arm64v8 436 EXTRA_XEN_CONFIG: | 437 CONFIG_UNSUPPORTED=y 438 CONFIG_STATIC_MEMORY=y 439 CONFIG_STATIC_SHM=y 440 441alpine-3.18-gcc-debug-arm64-boot-cpupools: 442 extends: .gcc-arm64-build-debug 443 variables: 444 CONTAINER: alpine:3.18-arm64v8 445 EXTRA_XEN_CONFIG: | 446 CONFIG_BOOT_TIME_CPUPOOLS=y 447 448alpine-3.18-gcc-debug-arm64-earlyprintk: 449 extends: .gcc-arm64-build-debug 450 variables: 451 CONTAINER: alpine:3.18-arm64v8 452 EXTRA_XEN_CONFIG: | 453 CONFIG_EARLY_UART_CHOICE_PL011=y 454 CONFIG_EARLY_UART_BASE_ADDRESS=0x9000000 455 456alpine-3.18-gcc-debug-arm64-mpu: 457 extends: .gcc-arm64-build-debug 458 variables: 459 CONTAINER: alpine:3.18-arm64v8 460 HYPERVISOR_ONLY: y 461 EXTRA_XEN_CONFIG: | 462 CONFIG_XEN_START_ADDRESS=0x0 463 CONFIG_MPU=y 464 CONFIG_UNSUPPORTED=y 465 466# Yocto test jobs 467yocto-qemuarm64: 468 extends: .yocto-test-arm64 469 variables: 470 YOCTO_BOARD: qemuarm64 471 when: manual 472 473yocto-qemuarm: 474 extends: .yocto-test-arm64 475 variables: 476 YOCTO_BOARD: qemuarm 477 YOCTO_OUTPUT: --copy-output 478 when: manual 479 480yocto-qemux86-64: 481 extends: .yocto-test-x86-64 482 variables: 483 YOCTO_BOARD: qemux86-64 484 when: manual 485 486# Cppcheck analysis jobs 487 488debian-bookworm-gcc-cppcheck: 489 extends: .gcc-x86-64-cross-build 490 variables: 491 CONTAINER: debian:bookworm-cppcheck 492 CROSS_COMPILE: /usr/bin/x86_64-linux-gnu- 493 CPPCHECK: y 494 HYPERVISOR_ONLY: y 495 496debian-bookworm-gcc-arm32-cppcheck: 497 extends: .gcc-arm32-cross-build 498 variables: 499 CONTAINER: debian:bookworm-cppcheck 500 CROSS_COMPILE: /usr/bin/arm-linux-gnueabihf- 501 CPPCHECK: y 502 HYPERVISOR_ONLY: y 503 504debian-bookworm-gcc-arm64-cppcheck: 505 extends: .gcc-arm64-build 506 variables: 507 CONTAINER: debian:bookworm-cppcheck 508 CPPCHECK: y 509 HYPERVISOR_ONLY: y 510 511# Build jobs not needed for tests 512 513alpine-3.18-clang: 514 extends: .clang-x86-64-build 515 variables: 516 CONTAINER: alpine:3.18 517 518alpine-3.18-clang-debug: 519 extends: .clang-x86-64-build-debug 520 variables: 521 CONTAINER: alpine:3.18 522 523archlinux-gcc: 524 extends: .gcc-x86-64-build 525 variables: 526 CONTAINER: archlinux:current 527 allow_failure: true 528 529archlinux-gcc-debug: 530 extends: .gcc-x86-64-build-debug 531 variables: 532 CONTAINER: archlinux:current 533 allow_failure: true 534 535debian-12-x86_64-gcc-ibt: 536 extends: .gcc-x86-64-build 537 variables: 538 CONTAINER: debian:12-x86_64-gcc-ibt 539 RANDCONFIG: y 540 EXTRA_FIXED_RANDCONFIG: | 541 CONFIG_XEN_IBT=y 542 543debian-12-x86_64-clang: 544 extends: .clang-x86-64-build 545 variables: 546 CONTAINER: debian:12-x86_64 547 548debian-12-x86_64-clang-randconfig: 549 extends: .clang-x86-64-build 550 variables: 551 CONTAINER: debian:12-x86_64 552 RANDCONFIG: y 553 EXTRA_FIXED_RANDCONFIG: | 554 CONFIG_COVERAGE=n # Disable coverage otherwise build times out. 555 556debian-12-x86_64-gcc: 557 extends: .gcc-x86-64-build 558 variables: 559 CONTAINER: debian:12-x86_64 560 561debian-12-x86_64-gcc-randconfig: 562 extends: .gcc-x86-64-build 563 variables: 564 CONTAINER: debian:12-x86_64 565 RANDCONFIG: y 566 567debian-12-x86_32-clang-debug: 568 extends: .clang-x86-32-build-debug 569 variables: 570 CONTAINER: debian:12-x86_32 571 572debian-12-x86_32-gcc-debug: 573 extends: .gcc-x86-32-build-debug 574 variables: 575 CONTAINER: debian:12-x86_32 576 577fedora-41-x86_64-gcc: 578 extends: .gcc-x86-64-build 579 variables: 580 CONTAINER: fedora:41-x86_64 581 582fedora-41-x86_64-gcc-debug: 583 extends: .gcc-x86-64-build-debug 584 variables: 585 CONTAINER: fedora:41-x86_64 586 587ubuntu-16.04-x86_64-gcc: 588 extends: .gcc-x86-64-build 589 variables: 590 CONTAINER: ubuntu:16.04-x86_64 591 592ubuntu-16.04-x86_64-gcc-debug: 593 extends: .gcc-x86-64-build-debug 594 variables: 595 CONTAINER: ubuntu:16.04-x86_64 596 597ubuntu-18.04-x86_64-gcc: 598 extends: .gcc-x86-64-build 599 variables: 600 CONTAINER: ubuntu:18.04-x86_64 601 602ubuntu-20.04-x86_64-gcc: 603 extends: .gcc-x86-64-build 604 variables: 605 CONTAINER: ubuntu:20.04-x86_64 606 607ubuntu-22.04-x86_64-clang: 608 extends: .clang-x86-64-build 609 variables: 610 CONTAINER: ubuntu:22.04-x86_64 611 612ubuntu-22.04-x86_64-clang-debug: 613 extends: .clang-x86-64-build-debug 614 variables: 615 CONTAINER: ubuntu:22.04-x86_64 616 617ubuntu-22.04-x86_64-gcc: 618 extends: .gcc-x86-64-build 619 variables: 620 CONTAINER: ubuntu:22.04-x86_64 621 622ubuntu-24.04-x86_64-clang: 623 extends: .clang-x86-64-build 624 variables: 625 CONTAINER: ubuntu:24.04-x86_64 626 627ubuntu-24.04-x86_64-clang-debug: 628 extends: .clang-x86-64-build-debug 629 variables: 630 CONTAINER: ubuntu:24.04-x86_64 631 632ubuntu-24.04-x86_64-gcc: 633 extends: .gcc-x86-64-build 634 variables: 635 CONTAINER: ubuntu:24.04-x86_64 636 637ubuntu-24.04-x86_64-gcc-debug: 638 extends: .gcc-x86-64-build-debug 639 variables: 640 CONTAINER: ubuntu:24.04-x86_64 641 642opensuse-leap-15.6-clang: 643 extends: .clang-x86-64-build 644 variables: 645 CONTAINER: opensuse:leap-15.6-x86_64 646 647opensuse-leap-15.6-clang-debug: 648 extends: .clang-x86-64-build-debug 649 variables: 650 CONTAINER: opensuse:leap-15.6-x86_64 651 652opensuse-leap-15.6-gcc: 653 extends: .gcc-x86-64-build 654 variables: 655 CONTAINER: opensuse:leap-15.6-x86_64 656 657opensuse-leap-15.6-gcc-debug: 658 extends: .gcc-x86-64-build-debug 659 variables: 660 CONTAINER: opensuse:leap-15.6-x86_64 661 662opensuse-tumbleweed-clang: 663 extends: .clang-x86-64-build 664 variables: 665 CONTAINER: opensuse:tumbleweed-x86_64 666 allow_failure: true 667 668opensuse-tumbleweed-clang-debug: 669 extends: .clang-x86-64-build-debug 670 variables: 671 CONTAINER: opensuse:tumbleweed-x86_64 672 allow_failure: true 673 674opensuse-tumbleweed-gcc: 675 extends: .gcc-x86-64-build 676 variables: 677 CONTAINER: opensuse:tumbleweed-x86_64 678 allow_failure: true 679 680opensuse-tumbleweed-gcc-debug: 681 extends: .gcc-x86-64-build-debug 682 variables: 683 CONTAINER: opensuse:tumbleweed-x86_64 684 allow_failure: true 685 686# PowerPC builds (x86 cross) 687debian-11-ppc64le-gcc: 688 extends: .gcc-ppc64le-cross-build 689 variables: 690 CONTAINER: debian:11-ppc64le 691 KBUILD_DEFCONFIG: ppc64_defconfig 692 HYPERVISOR_ONLY: y 693 694debian-11-ppc64le-gcc-debug: 695 extends: .gcc-ppc64le-cross-build-debug 696 variables: 697 CONTAINER: debian:11-ppc64le 698 KBUILD_DEFCONFIG: ppc64_defconfig 699 HYPERVISOR_ONLY: y 700 701debian-12-ppc64le-gcc: 702 extends: .gcc-ppc64le-cross-build 703 variables: 704 CONTAINER: debian:12-ppc64le 705 KBUILD_DEFCONFIG: ppc64_defconfig 706 HYPERVISOR_ONLY: y 707 708# RISC-V 64 cross-build 709debian-12-riscv64-gcc: 710 extends: .gcc-riscv64-cross-build 711 variables: 712 CONTAINER: debian:12-riscv64 713 KBUILD_DEFCONFIG: tiny64_defconfig 714 HYPERVISOR_ONLY: y 715 716.riscv-fixed-randconfig: 717 variables: &riscv-fixed-randconfig 718 EXTRA_FIXED_RANDCONFIG: | 719 CONFIG_BOOT_TIME_CPUPOOLS=n 720 CONFIG_COVERAGE=n 721 CONFIG_EXPERT=y 722 CONFIG_GRANT_TABLE=n 723 CONFIG_LIVEPATCH=n 724 CONFIG_QEMU_PLATFORM=y 725 CONFIG_VM_EVENT=n 726 CONFIG_XSM=n 727 728debian-12-riscv64-gcc-randconfig: 729 extends: .gcc-riscv64-cross-build 730 variables: 731 CONTAINER: debian:12-riscv64 732 KBUILD_DEFCONFIG: tiny64_defconfig 733 RANDCONFIG: y 734 <<: *riscv-fixed-randconfig 735