我在 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
阶段内无法访问。我还尝试将构建工件导出到不同的文件并在稍后阶段访问该文件。
我在使用多项目子管道时遇到了类似的问题。在您的情况下,当在声明的左侧和右侧使用相同的变量名称时,似乎会出现此问题:
RELEASE_TYPE: $RELEASE_TYPE
例如,您可能希望将传递到子管道的变量名称更改为不同的名称
PARENT_RELEASE_TYPE: $RELEASE_TYPE
然后您将能够在子管道中访问这个新变量
PARENT_RELEASE_TYPE
。
注意:我找不到与此问题相关的问题/讨论,因此无法确认后端到底是什么导致了此问题。