From ed68fdaa61c79c08eddd5423af5d3bd2b929843d Mon Sep 17 00:00:00 2001 From: Jakub Jelen Date: Thu, 17 Dec 2020 15:29:10 +0100 Subject: [PATCH] Run CI in merge requests and in branches This should avoid duplicate pipelines as suggested in (gitlab-org/gitlab!230928) Signed-off-by: Jakub Jelen Reviewed-by: Andreas Schneider --- .gitlab-ci.yml | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 7cbec438..76d26347 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -15,6 +15,17 @@ stages: - test - analysis +# This is some black magic to select between branch pipelines and +# merge request pipelines to avoid running same pipelines in twice +workflow: + rules: + - if: '$CI_COMMIT_BRANCH && $CI_OPEN_MERGE_REQUESTS && $CI_PIPELINE_SOURCE == "push"' + when: never + - if: '$CI_PIPELINE_SOURCE == "merge_request_event"' + - if: '$CI_COMMIT_BRANCH && $CI_OPEN_MERGE_REQUESTS' + when: never + - if: '$CI_COMMIT_BRANCH' + .build: stage: build variables: @@ -37,6 +48,10 @@ stages: # Do not use after_script as it does not make the targets fail tags: - shared + only: + - merge_requests + - branches + except: - tags artifacts: @@ -316,6 +331,11 @@ fedora/mingw32: image: $CI_REGISTRY/$BUILD_IMAGES_PROJECT:$FEDORA_BUILD before_script: - | + # for merge requests + if [[ -n "$CI_MERGE_REQUEST_DIFF_BASE_SHA" ]]; then + export CI_COMMIT_BEFORE_SHA="$CI_MERGE_REQUEST_DIFF_BASE_SHA" + fi + # for branches run if [[ -z "$CI_COMMIT_BEFORE_SHA" ]]; then export CI_COMMIT_BEFORE_SHA=$(git rev-parse "${CI_COMMIT_SHA}~20") fi @@ -329,6 +349,8 @@ fedora/mingw32: - shared except: - tags + only: + - merge_requests artifacts: expire_in: 1 week when: on_failure