'GitLab pass variable from one pipeline to another

We have a master pipeline, which is responsible for triggering pipelines from multiple projects and performing some steps. I want to pass a file from first pipelines output to the second one but i am unable to do so.

image:
  name: some-image
  entrypoint: [""]

variables:

stages:
  - create_file
  - print_file
  - consume_file

create_file:
  stage: create_file
  variables:
  trigger:
    project: user-name/project-name
    strategy: depend


print_file:
  stage: print_file
  script:
    - sleep 5
    - cat output_file.txt
  dependencies:
    - create_file

consume_file:
  stage: consume_file
  variables:
  trigger:
    project: user-name/project-name-alternate
    strategy: depend

I don't want to resort to scripts instead of trigger. Have tried artifacts etc but i couldn't find a way to pass them on to the next pipelines.

P.s. this is just a sample set out of the pipelines, there are multiple pipelines that are dependent on the output from first pipeline.



Solution 1:[1]

Since artifacts can be passed between stages, you can try writing the variables into a file such as JSON, and parse it in another job.

Solution 2:[2]

Passing artifacts from downstream pipelines to upstream ones may be implemented later according to this issue: https://gitlab.com/gitlab-org/gitlab/-/issues/285100

Solution 3:[3]

See if GitLab 14.10 (April 2022) can help:

Improved pipeline variables inheritance

Previously, it was possible to pass some CI/CD variables to a downstream pipeline through a trigger job, but variables added in manual pipeline runs or by using the API could not be forwarded.

In this release we’ve added a new trigger:forward keyword to control what things you forward to downstream parent-child pipelines or multi-project pipelines, which provides a flexible way to handle variable inheritance in downstream pipelines.

See Documentation and Issue.

Note that, on self-managed GitLab, by default this feature is not available.
To make it available, ask an administrator to enable the feature flag named ci_trigger_forward_variables. The feature is not (yet) ready for production use (in Apr. 2022).

Example of trigger:forward:

Run this pipeline manually, with the CI/CD variable MYVAR = my value:

variables: # default variables for each job
  VAR: value

# Default behavior:
# - VAR is passed to the child
# - MYVAR is not passed to the child
child1:
  trigger:
    include: .child-pipeline.yml

# Forward pipeline variables:
# - VAR is passed to the child
# - MYVAR is passed to the child
child2:
  trigger:
    include: .child-pipeline.yml
    forward:
      pipeline_variables: true

# Do not forward YAML variables:
# - VAR is not passed to the child
# - MYVAR is not passed to the child
child3:
  trigger:
    include: .child-pipeline.yml
    forward:
      yaml_variables: false

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 Edmund Wang
Solution 2
Solution 3 VonC