diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 8c2ef59a..8ee127a0 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -5,6 +5,7 @@ stages: - prep - bootstrap - build + - test # Common job fragment to get a worker ready .setup: @@ -15,6 +16,7 @@ stages: SSTATE_DIR: $CI_BUILDS_DIR/persist/sstate DL_DIR: $CI_BUILDS_DIR/persist/downloads BB_LOGCONFIG: $CI_PROJECT_DIR/ci/logging.yml + IMAGE_DIR: $CI_PROJECT_DIR/work/build/tmp/deploy/images before_script: - echo KAS_WORK_DIR = $KAS_WORK_DIR - echo SSTATE_DIR = $SSTATE_DIR @@ -27,10 +29,29 @@ stages: extends: .setup interruptible: true 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 + - 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 + +.build_artifacts: + artifacts: + paths: + - $IMAGE_DIR/* + expire_in: 1 day + +.test: + extends: .setup + stage: test + # Unique before_script here to avoid the rm from the one in .setup + before_script: + - mkdir --verbose --parents $KAS_WORK_DIR $KAS_REPO_REF_DIR $SSTATE_DIR $DL_DIR $TOOLCHAIN_DIR + script: + - KASFILES=$(./ci/jobs-to-kas $CI_JOB_NAME) + # These are needed to avoid warnings about file permissions from the artifacts + - sudo chown -R builder $KAS_WORK_DIR + - sudo chgrp -R builder $KAS_WORK_DIR + - kas build $KASFILES -c testimage # @@ -90,15 +111,36 @@ n1sdp/armgcc: extends: .build qemuarm: - extends: .build + extends: + - .build + - .build_artifacts qemuarmv5: - extends: .build + extends: + - .build + - .build_artifacts tc0: extends: .build +# +# Third phase, the test jobs +# + +# QEMU based machines can use testimage, others will need something else (i.e., LAVA) + +qemuarm/testimage: + extends: .test + needs: + - job: qemuarm + +qemuarmv5/testimage: + extends: .test + needs: + - job: qemuarmv5 + + # # Utility tasks, not executed automatically # diff --git a/ci/testimage.yml b/ci/testimage.yml new file mode 100644 index 00000000..df2c22e8 --- /dev/null +++ b/ci/testimage.yml @@ -0,0 +1,14 @@ +header: + version: 9 + +local_conf_header: + testimage: | + IMAGE_CLASSES += "testimage" + slirp: | + TEST_RUNQEMUPARAMS = "slirp" + TEST_SERVER_IP = "127.0.0.1" + QEMU_USE_SLIRP = "1" + +# Multiple targets are available, put it down to just one +target: + - core-image-base