| image: ghcr.io/siemens/kas/kas:latest-release |
| |
| stages: |
| - prep |
| - build |
| |
| # Common job fragment to get a worker ready |
| .setup: |
| stage: build |
| interruptible: true |
| variables: |
| KAS_WORK_DIR: $CI_PROJECT_DIR/work |
| KAS_REPO_REF_DIR: $CI_BUILDS_DIR/persist/repos |
| SSTATE_DIR: $CI_BUILDS_DIR/persist/sstate |
| DL_DIR: $CI_BUILDS_DIR/persist/downloads |
| BB_LOGCONFIG: $CI_PROJECT_DIR/ci/logging.yml |
| TOOLCHAIN_DIR: $CI_BUILDS_DIR/persist/toolchains |
| IMAGE_DIR: $CI_PROJECT_DIR/work/build/tmp/deploy/images |
| TOOLCHAIN_LINK_DIR: $CI_PROJECT_DIR/work/build/toolchains |
| before_script: |
| - echo KAS_WORK_DIR = $KAS_WORK_DIR |
| - echo SSTATE_DIR = $SSTATE_DIR |
| - echo DL_DIR = $DL_DIR |
| - rm -rf $KAS_WORK_DIR |
| - mkdir --verbose --parents $KAS_WORK_DIR $KAS_REPO_REF_DIR $SSTATE_DIR $DL_DIR $TOOLCHAIN_DIR $TOOLCHAIN_LINK_DIR |
| # Must do this here, as it's the only way to make sure the toolchain is installed on the same builder |
| - ./ci/get-binary-toolchains $DL_DIR $TOOLCHAIN_DIR $TOOLCHAIN_LINK_DIR |
| - sudo apt-get update && sudo apt-get install --yes telnet python3-subunit |
| |
| # Generalised fragment to do a Kas build |
| .build: |
| extends: .setup |
| script: |
| - KASFILES=$(./ci/jobs-to-kas "$CI_JOB_NAME") |
| - kas shell --update --force-checkout $KASFILES -c 'cat conf/*.conf' |
| - kas build $KASFILES |
| - ./ci/check-warnings $KAS_WORK_DIR/build/warnings.log |
| artifacts: |
| name: "logs" |
| when: on_failure |
| paths: |
| - $CI_PROJECT_DIR/work/build/tmp/work*/**/temp/log.do_*.* |
| |
| # |
| # Prep stage, update repositories once |
| # |
| update-repos: |
| extends: .setup |
| stage: prep |
| script: |
| - flock --verbose --timeout 60 $KAS_REPO_REF_DIR ./ci/update-repos |
| |
| # |
| # Build stage, the actual build jobs |
| # |
| # Available options for building are |
| # TOOLCHAINS: [gcc, clang, armgcc, external-gccarm] |
| # TCLIBC: [glibc, musl] |
| # FIRMWARE: [uboot, edk2] |
| # VIRT: [none, xen] |
| # TESTING: testimage |
| |
| corstone500: |
| extends: .build |
| parallel: |
| matrix: |
| - TESTING: testimage |
| tags: |
| - x86_64 |
| |
| corstone1000-fvp: |
| extends: .build |
| parallel: |
| matrix: |
| - TESTING: [testimage,tftf] |
| tags: |
| - x86_64 |
| |
| corstone1000-mps3: |
| extends: .build |
| |
| fvp-base: |
| extends: .build |
| parallel: |
| matrix: |
| - TESTING: testimage |
| tags: |
| - x86_64 |
| |
| fvp-base-arm32: |
| extends: .build |
| parallel: |
| matrix: |
| - TOOLCHAINS: [gcc, external-gccarm] |
| TESTING: testimage |
| tags: |
| - x86_64 |
| |
| fvp-baser-aemv8r64: |
| extends: .build |
| parallel: |
| matrix: |
| - TESTING: testimage |
| tags: |
| - x86_64 |
| |
| fvps: |
| extends: .build |
| |
| gem5-arm64: |
| extends: .build |
| parallel: |
| matrix: |
| - VIRT: [none, xen] |
| |
| gem5-atp-arm64: |
| extends: .build |
| |
| generic-arm64: |
| extends: .build |
| |
| juno: |
| extends: .build |
| parallel: |
| matrix: |
| - TOOLCHAINS: [gcc, clang] |
| FIRMWARE: [uboot, edk2] |
| |
| musca-b1: |
| extends: .build |
| |
| musca-s1: |
| extends: .build |
| |
| n1sdp: |
| extends: .build |
| parallel: |
| matrix: |
| - TOOLCHAINS: [gcc, armgcc] |
| |
| qemu-generic-arm64: |
| extends: .build |
| parallel: |
| matrix: |
| - TOOLCHAINS: [gcc, clang] |
| TESTING: testimage |
| |
| qemuarm64-secureboot: |
| extends: .build |
| parallel: |
| matrix: |
| - TOOLCHAINS: [gcc, clang] |
| TCLIBC: [glibc, musl] |
| TS: [none, trusted-services] |
| TESTING: testimage |
| |
| qemuarm64: |
| extends: .build |
| parallel: |
| matrix: |
| - TOOLCHAINS: [gcc, clang] |
| EFI: [uboot, edk2] |
| TESTING: testimage |
| - VIRT: xen |
| |
| qemuarm-secureboot: |
| extends: .build |
| parallel: |
| matrix: |
| - TOOLCHAINS: [gcc, clang] |
| TESTING: testimage |
| |
| qemuarm: |
| extends: .build |
| parallel: |
| matrix: |
| - TOOLCHAINS: [gcc, clang] |
| EFI: [uboot, edk2] |
| TESTING: testimage |
| - VIRT: xen |
| |
| qemuarmv5: |
| extends: .build |
| parallel: |
| matrix: |
| - TESTING: testimage |
| |
| sgi575: |
| extends: .build |
| |
| tc1: |
| extends: .build |
| tags: |
| - x86_64 |
| |
| toolchains: |
| extends: .build |
| |
| selftest: |
| extends: .setup |
| script: |
| - KASFILES=./ci/qemuarm64.yml:./ci/selftest.yml |
| - kas shell --update --force-checkout $KASFILES -c 'oe-selftest --num-processes 1 --run-tests runfvp' |
| |
| # Validate layers are Yocto Project Compatible |
| check-layers: |
| extends: .setup |
| script: |
| - kas shell --update --force-checkout ci/base.yml:ci/meta-openembedded.yml --command \ |
| "yocto-check-layer-wrapper $CI_PROJECT_DIR/$LAYER --dependency $CI_PROJECT_DIR/meta-* $KAS_WORK_DIR/meta-openembedded/meta-oe --no-auto-dependency" |
| parallel: |
| matrix: |
| - LAYER: [meta-arm, meta-arm-bsp, meta-arm-toolchain, meta-gem5] |
| |
| pending-updates: |
| extends: .setup |
| artifacts: |
| paths: |
| - update-report |
| script: |
| - rm -fr update-report |
| # This configuration has all of the layers we need enabled |
| - kas shell ci/gem5-arm64.yml --command \ |
| "$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)" |
| # Do this on x86 whilst the compilers are x86-only |
| tags: |
| - x86_64 |
| |
| # What percentage of machines in the layer do we build |
| machine-coverage: |
| stage: build |
| interruptible: true |
| script: |
| - ./ci/check-machine-coverage |
| coverage: '/Coverage: \d+/' |
| |
| metrics: |
| extends: .setup |
| artifacts: |
| reports: |
| metrics: metrics.txt |
| script: |
| - kas shell --update --force-checkout ci/base.yml --command \ |
| "$CI_PROJECT_DIR/ci/patchreview $CI_PROJECT_DIR/meta-* --verbose --metrics $CI_PROJECT_DIR/metrics.txt" |