From 5463396b1d47a122f5aef9a619244fd1777c0b56 Mon Sep 17 00:00:00 2001 From: Laurent Bonnans Date: Fri, 5 Jul 2019 17:45:39 +0200 Subject: Reusable meta-updater pipeline suite Squashed: * Oe-selftest GitLab pipeline stage * Use credentials for CI's oe-selftest * Setup kvm trick for docker on CI The gid of the kvm group needs to match the one from the host * Run ci scripts from Docker images * Template out jobs and split .gitlab-ci.yml To be easily reused in other branches and projects Rely on this gitlab feature: https://docs.gitlab.com/ee/ci/yaml/#extends * More flexible checkout script for CI - can work without $CURRENT_PROJECT (checks out everything) - can take a list of pinned versions * Add optional CI jobs ptest and other oe-selftests * Publish bitbaked images as artifacts Signed-off-by: Laurent Bonnans --- .gitlab-ci.yml | 115 +++++++++++++++++++++++++++++++++++++-------------------- 1 file changed, 75 insertions(+), 40 deletions(-) (limited to '.gitlab-ci.yml') diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 94a614c..3682753 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -3,61 +3,96 @@ stages: - checkout - test -# notes: -# - could be useful https://docs.gitlab.com/ee/ci/yaml/#include - variables: - # Needs $PR_BASE_BRANCH to be defined as a pipeline variable to work correctly - - CHECKOUT_MASTER_IMAGE: ${CI_REGISTRY_IMAGE}:ci-${PR_BASE_BRANCH}-checkout - CHECKOUT_PR_IMAGE: ${CI_REGISTRY_IMAGE}:ci-${CI_COMMIT_REF_SLUG}-checkout + BITBAKE_IMAGE: ${CI_REGISTRY_IMAGE}:ci-${CI_COMMIT_REF_SLUG}-bitbake + BITBAKE_CHECKOUT_IMAGE: ${CI_REGISTRY_IMAGE}:ci-${CI_COMMIT_REF_SLUG}-checkout - BITBAKE_MASTER_IMAGE: ${CI_REGISTRY_IMAGE}:ci-${PR_BASE_BRANCH}-bitbake - BITBAKE_PR_IMAGE: ${CI_REGISTRY_IMAGE}:ci-${CI_COMMIT_REF_SLUG}-bitbake +include: + - local: "scripts/ci/gitlab/docker.yml" + - local: "scripts/ci/gitlab/checkout.yml" + - local: "scripts/ci/gitlab/tests.yml" +Docker setup: + extends: .bb_docker_local -Docker Setup: - image: docker:stable stage: docker - services: - - docker:dind + variables: + BITBKAE_IMAGE_MASTER: ${CI_REGISTRY_IMAGE}:ci-master-bitbake + BITBAKE_CHECKOUT_IMAGE_MASTER: ${CI_REGISTRY_IMAGE}:ci-master-checkout except: - pushes - before_script: - - docker login -u gitlab-ci-token -p "$CI_JOB_TOKEN" "$CI_REGISTRY" - script: - - docker pull "$BITBAKE_PR_IMAGE" || docker pull "$BITBAKE_MASTER_IMAGE" || true - - docker build --pull --cache-from "$BITBAKE_MASTER_IMAGE" --cache-from "$BITBAKE_PR_IMAGE" -f ./scripts/ci/Dockerfile.bitbake -t "$BITBAKE_PR_IMAGE" ./scripts/ci - - docker push "$BITBAKE_PR_IMAGE" - - - docker pull "$CHECKOUT_PR_IMAGE" || docker pull "$CHECKOUT_MASTER_IMAGE" || true - - docker build --pull --cache-from "$CHECKOUT_MASTER_IMAGE" --cache-from "$CHECKOUT_PR_IMAGE" -f ./scripts/ci/Dockerfile.checkout -t "$CHECKOUT_PR_IMAGE" ./scripts/ci - - docker push "$CHECKOUT_PR_IMAGE" Checkout: - image: "$CHECKOUT_PR_IMAGE" + extends: .bb_checkout + stage: checkout + variables: + MANIFEST: master + CURRENT_PROJECT: meta-updater except: - pushes - cache: - paths: - - updater-repo + +Build core-image-minimal: + extends: .bitbake + + stage: test + variables: + TEST_BUILD_DIR: 'build-core-image-minimal' + BITBAKE_TARGETS: 'core-image-minimal' artifacts: - expire_in: "1 day" + name: "core-image-minimal_$CI_COMMIT_REF_SLUG" paths: - - updater-repo - script: - - MANIFEST=$PR_BASE_BRANCH ./scripts/ci/checkout-oe.sh + - $TEST_BUILD_DIR/tmp/deploy/images/*/core-image-minimal* + except: + - pushes + +Oe-selftest qemux86_64: + extends: .oe-selftest + + stage: test + variables: + TEST_BUILD_DIR: 'build-oe-qemux86_64' + OE_SELFTESTS: 'updater_native updater_qemux86_64' + except: + - pushes + +# Not run by default, triggered on nightlies + +Oe-selftest minnowboard: + extends: .oe-selftest + + stage: test + variables: + TEST_BUILD_DIR: 'build-oe-minnowboard' + OE_SELFTESTS: 'updater_minnowboard' + except: + - pushes + only: + variables: + - $OE_MINNOWBOARD + +Oe-selftest rpi: + extends: .oe-selftest + + stage: test + variables: + TEST_BUILD_DIR: 'build-oe-rpi' + OE_SELFTESTS: 'updater_rpi' + except: + - pushes + only: + variables: + - $OE_RPI + +Ptest qemux86_64: + extends: .oe-selftest -Build core-image-minimal: - image: "$BITBAKE_PR_IMAGE" stage: test + variables: + TEST_BUILD_DIR: 'build-oe-qemux86_64-ptest' + OE_SELFTESTS: 'updater_qemux86_64_ptest' except: - pushes - dependencies: - - Checkout - tags: - - bitbake - script: - - ./scripts/ci/configure.sh - - ./scripts/ci/build.sh core-image-minimal + only: + variables: + - $OE_PTEST -- cgit v1.2.3-54-g00ecf