Skip to content
Snippets Groups Projects
  • Administrator's avatar
    3e1e5372
    Rerun failed tests a second time · 3e1e5372
    Administrator authored
    For the continuous tests rerun failed tests a second time. This should reduce
    the number of failing test pipelines.
    In most cases of failing tests the Geant3 simulations crash due to the well
    known memory error. If these tests are restarted they normally work without
    problem.
    Since the feature to restart tests is only available with cmake 3.17 change
    the scripts of the CI pipeline to use at least this version.
    3e1e5372
    History
    Rerun failed tests a second time
    Administrator authored
    For the continuous tests rerun failed tests a second time. This should reduce
    the number of failing test pipelines.
    In most cases of failing tests the Geant3 simulations crash due to the well
    known memory error. If these tests are restarted they normally work without
    problem.
    Since the feature to restart tests is only available with cmake 3.17 change
    the scripts of the CI pipeline to use at least this version.
.gitlab-ci.yml 9.61 KiB
stages:
  - checkRepository
  - checkFormat
  - build
  - finalise
  - documentation

RebaseCheck:
  stage: checkRepository
  variables:
    GIT_DEPTH: 100
  image: alpine
  tags:
    - docker
  only:
    refs:
      - merge_requests
    variables:
      - $CI_MERGE_REQUEST_PROJECT_PATH == "computing/cbmroot" && $CI_MERGE_REQUEST_TARGET_BRANCH_NAME == "master"
  script:
    # Get the upstream repository manually. I did not find any other way to have it for
    # comparison
    # Check if a rebase is needed
    # If a rebase is needed stop immediately
    - apk update && apk add git bash
    - scripts/connect_upstream_repo.sh $CI_MERGE_REQUEST_PROJECT_URL
    - git fetch upstream
    - hash1=$(git show-ref upstream/master | cut -f1 -d' ')
    - hash2=$(git merge-base upstream/master HEAD)
    - echo "${hash1}"
    - echo "${hash2}"
    - if [ "${hash1}" = "${hash2}" ]; then
    -   echo "No rebase required"
    -   exit 0
    - else
    -   echo "The Merge Request is not up-to-date"
    -   echo "Rebase is required"
    -   exit 1
    - fi

LinearHistCheck:
  stage: checkRepository
  variables:
    GIT_DEPTH: 100
  image: alpine
  tags:
    - docker
  only:
    refs:
      - merge_requests
    variables:
      - $CI_MERGE_REQUEST_PROJECT_PATH == "computing/cbmroot" && $CI_MERGE_REQUEST_TARGET_BRANCH_NAME == "master"
  script:
    # Get the upstream repository manually. I did not find any other way to have it for
    # comparison
    # Check if the history introduced by the MR is linear (no branch loop in fork)
    # If not linear stop immediately
    - apk update && apk add git bash
    - scripts/connect_upstream_repo.sh $CI_MERGE_REQUEST_PROJECT_URL
    - git fetch upstream
    - count=$(git rev-list --min-parents=2 --count upstream/master..HEAD)
    - echo "${count}"
    - if [ 0 = "${count}" ]; then
    -   echo "History introduced in fork is linear"
    -   exit 0
    - else
    -   echo "History introduced in fork is not linear"
    -   echo "${count} merge commits must be removed or the other new commits have to be replayed in a new branch"
    -   exit 1
    - fi