无法跨阶段访问 gitlab CI 管道中的变量

问题描述 投票:0回答:1

我在 gitlab 中有一个分阶段的 CI 管道设置。基础级别 CI 文件如下所示:

# =============================================================================
# Define the list of stages of this pipeline
# =============================================================================
stages:
  - stageA
  - stageB

workflow:
  rules:
    - if: $CI_PIPELINE_SOURCE == "push"

stageA:
  stage: stageA
  script:
    - |
      if [ -z "$CI_COMMIT_TAG" ]; then
        # no tag
        case $CI_COMMIT_BRANCH in
          main)
            RELEASE_TYPE=dev
            ;;
          *)
            RELEASE_TYPE=local
            ;;
      
      export RELEASE_TYPE
    - echo "Releasing to $RELEASE_TYPE"

# =============================================================================
# Sub-pipelines
# =============================================================================
stageB:
  stage: stageB
  trigger:
    include: "inference/.gitlab-ci.yml"
  rules:
    - changes:
        - inference/*
  variables:
    RELEASE_TYPE: $RELEASE_TYPE

并且

inference/.gitlab-ci.yml
管道看起来像这样:

default:
  image: python:3.8-buster
stages:
  - stageC
  - stageD
 
test-inference-package:
  stage: StageC
  script:
    # Install dependencies
    
deploy-inference-package:
  stage: stageD
  script:
    - echo "Building with RELEASE_TYPE=$RELEASE_TYPE" # This variable is in accessible. 

但是,在管道第一阶段内设置的变量

$RELEASE_TYPE
在推理子管道的
deploy
阶段内无法访问。我还尝试将构建工件导出到不同的文件并在稍后阶段访问该文件。

gitlab continuous-integration gitlab-ci gitlab-ci-runner
1个回答
0
投票

我在使用多项目子管道时遇到了类似的问题。在您的情况下,当在声明的左侧和右侧使用相同的变量名称时,似乎会出现此问题:

RELEASE_TYPE: $RELEASE_TYPE

例如,您可能希望将传递到子管道的变量名称更改为不同的名称

PARENT_RELEASE_TYPE: $RELEASE_TYPE

然后您将能够在子管道中访问这个新变量

PARENT_RELEASE_TYPE

注意:我找不到与此问题相关的问题/讨论,因此无法确认后端到底是什么导致了此问题。

© www.soinside.com 2019 - 2024. All rights reserved.