Search code examples
continuous-integrationdevopsgitlab-cicontinuous-deploymentgitlab-ci-runner

Trigger gitlab downstream pipeline from a upstream pipeline in a multi-project using trigger, rules and custom configuration variables


I have this scenario where I want to run the trigger in build stage only when $FLAG variable has been set by the .pre stage. However, the build stage never runs.

How should I conditionally trigger a downstream pipeline?

checkArtifactPresent:
  stage: .pre
  script:
    - >
      set +e;
      if curl -s -S -f $NEXUS_RAW_PICKER_REPOSITORY/${PRODUCT_FLAVOR}/${PRODUCT_FLAVOR}-${BUILD_TYPE}v${PICKER_TEMPLATE_TAG}.apk --output ${PRODUCT_FLAVOR}-${BUILD_TYPE}v${PICKER_TEMPLATE_TAG}.apk;
      then
        export FLAG= true;
      fi

buildArtifact:
  stage: build
  only:
   variables:
     - $FLAG
  trigger:
   project: dev/project_name
   strategy: depend

Solution

  • You can make use of Gitlab web api for Triggering pipelines through API

    You can make use of trigger variables. You can apply conditions and then trigger the downstream job.

    Here you can find a simple example:

    https://docs.gitlab.com/ee/ci/triggers/#making-use-of-trigger-variables