image: ghcr.io/siemens/kas/kas # First do a common bootstrap, and then build all the targets stages: - prep - bootstrap - 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 update && sudo apt install telnet -y # 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 # Workaround for Zephyr not currectly handling TESTIMAGE_AUTO .build_and_test: extends: .setup script: - KASFILES=$(./ci/jobs-to-kas $CI_JOB_NAME) - kas shell --update --force-checkout $KASFILES -c 'cat conf/*.conf' - kas build $KASFILES - kas build $KASFILES -c testimage - ./ci/check-warnings $KAS_WORK_DIR/build/warnings.log # # Prep stage, update repositories once # update-repos: extends: .setup stage: prep script: - flock --verbose --timeout 60 $KAS_REPO_REF_DIR ./ci/update-repos # # Bootstrap stage, bootstrap and machine coverage # # Build a number of native tools first to ensure the other builders don't race # over them n1sdp/bootstrap: extends: .build stage: bootstrap n1sdp/clang/clang-bootstrap: extends: .build stage: bootstrap # What percentage of machines in the layer do we build machine-coverage: stage: bootstrap interruptible: true script: - ./ci/check-machine-coverage coverage: '/Coverage: \d+/' # # Build stage, the actual build jobs # # Validate layers are Yocto Project Compatible check-layers: extends: .setup coverage: '/Coverage: \d+/' script: - kas shell --update --force-checkout ci/base.yml:ci/meta-arm-autonomy.yml:ci/meta-openembedded.yml --command \ "$CI_PROJECT_DIR/ci/check-layers.py $CI_PROJECT_DIR/ci/check-layers.yml $CI_PROJECT_DIR $KAS_WORK_DIR" pending-updates: extends: .setup artifacts: paths: - update-report.html script: - kas shell ci/qemuarm64.yml:ci/meta-openembedded.yml -c "$CI_PROJECT_DIR/scripts/machine-summary.py -t updates.html -o $CI_PROJECT_DIR/update-report.html $($CI_PROJECT_DIR/ci/listmachines.py meta-arm meta-arm-bsp)" corstone500: extends: .build corstone700-fvp: extends: .build corstone700-mps3: extends: .build fvp-base/testimage: extends: .build tags: - x86_64 fvp-base-arm32: extends: .build fvp-base-arm32/external-gccarm: extends: .build fvp-baser-aemv8r64: extends: .build fvps: extends: .build gem5-arm64: extends: .build gem5-arm64/xen: extends: .build gem5-atp-arm64: extends: .build generic-arm64: extends: .build juno: extends: .build juno/clang: extends: .build microbit-v1/testimage-zephyr: extends: .build_and_test musca-b1: extends: .build musca-s1: extends: .build n1sdp: extends: .build n1sdp/armgcc: extends: .build qemu-cortex-a53: extends: .build qemu-cortex-m3/testimage-zephyr: extends: .build_and_test qemu-cortex-r5: extends: .build qemuarm64-sbsa: extends: .build qemuarm64-secureboot/testimage: extends: .build qemuarm64-secureboot/clang/testimage: extends: .build qemuarm64-secureboot/clang/musl/testimage: extends: .build qemuarm64-secureboot/musl/testimage: extends: .build qemuarm64/xen: extends: .build qemuarm/clang/testimage: extends: .build qemuarm/testimage: extends: .build qemuarm/xen: extends: .build qemuarmv5/testimage: extends: .build sgi575: extends: .build tc0: extends: .build tags: - x86_64 tc1: extends: .build tags: - x86_64 toolchains: extends: .build # # Utility tasks, not executed automatically # delete-dl-dir: extends: .setup stage: prep when: manual script: - rm -rf $DL_DIR/* delete-repo-dir: extends: .setup stage: prep when: manual script: - rm -rf $KAS_REPO_REF_DIR/* # Delete all sstate delete-sstate: extends: .setup stage: prep when: manual script: - rm -rf $SSTATE_DIR/* delete-toolchains: extends: .setup stage: prep when: manual script: - rm -rf $TOOLCHAIN_DIR/* # Wipe out old sstate prune-sstate: extends: .setup stage: prep when: manual script: - du -h -s $SSTATE_DIR - find $SSTATE_DIR -type f -atime +30 -delete - du -h -s $SSTATE_DIR # Report on disk usage usage: extends: .setup stage: prep when: manual script: - du -h -s $DL_DIR $SSTATE_DIR $KAS_REPO_REF_DIR $TOOLCHAIN_DIR