Skip to content
Snippets Groups Projects
  • Tim Jaacks's avatar
    Allow check job to fail · ad9d367e
    Tim Jaacks authored
    This makes merging a project MR possible even if the manifest has
    received new commits since the MR pipeline build has run. The developer
    is responsible for deciding whether it is safe to merge it without
    having a build based on the latest manifest.
    
    BCS 746-000794
    ad9d367e
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
common.yml 3.71 KiB
# --------------------------------------------------------------------------------------
# Common definitions that may be used in all subprojects
# --------------------------------------------------------------------------------------
---
variables:
  # CI_IMAGES_BASEPATH: Environment variable configure in gitlab
  CI_IMAGES_PATH: ${CI_IMAGES_BASEPATH}/ci-images
  CI_IMAGES_REV: 44965ccdd847f1e077670f49d546047f8ad0110c
  CI_IMAGE_PYTHON: "${CI_IMAGES_PATH}/python/3.9:${CI_IMAGES_REV}"
  CI_IMAGE_YOCTO: "${CI_IMAGES_PATH}/yocto-build/ubuntu-20.04:${CI_IMAGES_REV}"
  # Include git submodules
  GIT_SUBMODULE_STRATEGY: recursive
  # Reduced depth as checkout of larger projects (like the kernel)
  # may take too long
  GIT_DEPTH: 1
  # FIXME: due to a missing feature in GitLab we cannot use this variable
  # in the build stage further down this file. If it ever changes, it has
  # to be changed there too.
  # (https://gitlab.com/gitlab-org/gitlab/-/issues/249583)
  MANIFEST_PROJECT: ${CI_PROJECT_ROOT_NAMESPACE}/yocto/manifest

  MASTER_BRANCH_MANIFEST: dunfell
  MASTER_BRANCH_PROJECT: dunfell

  DEPLOYPATH_TEST: "/artifacts/${CI_JOB_ID}/"
  GITLAB_SERVER: "${CI_SERVER_HOST}:${CI_SERVER_SSH_PORT}"
  GIT_BASE_URL: "ssh://git@${GITLAB_SERVER}/${CI_PROJECT_ROOT_NAMESPACE}"
  TESTS_GIT_URL: "${GIT_BASE_URL}/yocto/tests.git"


# --------------------------------------------------------------------------------------
# Common infrastructure settings
# --------------------------------------------------------------------------------------
.infrastructure:
  stage: infrastructure
  tags:
    - infrastructure
  timeout: 10m
  image: "${CI_IMAGE_PYTHON}"
  needs: []
  variables:
    # Include git submodules
    GIT_SUBMODULE_STRATEGY: recursive

yamllint:
  extends: .infrastructure
  rules:
    - if: $CI_COMMIT_REF_NAME != $MASTER_BRANCH_MANIFEST || $CI_PIPELINE_SOURCE == "api"
  script:
    - yamllint -c .gitlab-ci/.yamllint.yml .*.yml

# --------------------------------------------------------------------------------------
# Common check job, used in yocto and foobar manifest-integration projects
# --------------------------------------------------------------------------------------
.check:
  extends: .infrastructure
  stage: check
  rules:
    # Do not integration pipeline for merge requests for integrate/gitlab-ci/ branches
    # The integration is done from the pipeline in gitlab-ci already
    - if: $CI_COMMIT_REF_NAME =~ /^integrate\/gitlab-ci\/.*/
      when: never
    - if: $CI_MERGE_REQUEST_IID
    # Explicitly allow externally triggered pipelines in every case
    - if: $CI_PIPELINE_SOURCE == "pipeline" || $CI_PIPELINE_SOURCE == "api"
  needs: ["integrate"]
  allow_failure: true
  script:
    - cd ${CI_PROJECT_DIR}
    # When running in a trigger pipeline the CII_MERGE_REQUEST_IID is not set
    # but CI_OPEN_MERGE_REQUESTS. We use  the first of this comma separated list
    # in this case
    - if [ -n "${CI_MERGE_REQUEST_IID}" ];then
        MERGE_REQUEST="${CI_MERGE_REQUEST_IID}";
      else
        MERGE_REQUEST="${CI_OPEN_MERGE_REQUESTS%%,*}";
      fi
    # The 'parent_merge_request' is passed from the trigger
    # in case this check job is part of a gitlab-ci integration
    # pipeline. It is only used to display the correct MR to run again
    # in a failed check
    - if [ -n "${parent_merge_request}" ];then
        PARENT_MR="--parent-merge-request=${parent_merge_request}";
      fi
    - .gitlab-ci/check_if_integration_branch_is_up_to_date.py
        --gitlab-url=${CI_SERVER_URL}
        --token=${GITBOT_TOKEN}
        --manifest-project=${MANIFEST_PROJECT}
        --integration-base=${MASTER_BRANCH_MANIFEST}
        --project=${CI_PROJECT_PATH}
        --merge-request=${MERGE_REQUEST}
        --verbose
        ${PARENT_MR}