首页 > 解决方案 > GitLab CI 预定义的环境变量仅在子句中不被识别?

问题描述

我想在.gitlab-ci.yml的作业子句中使用GitLab CI 预定义变量(环境变量)only

我有一个项目托管在http://gitlab.myorg.com/jamiet/test-ci-variables(GitLab 版本是“9.5.2-ee”)。这是.gitlab-ci.yml的内容:

stages:
    - mystage

.templ: &templ
    stage: mystage
    image: docker-dev/centos-base/7.3.1611/
    tags:
        - kubernetes
    script:
        - echo "hello world"

use absolute values:
    <<: *templ
    only:
        - master@jamiet/test-ci-variables

use $CI_PROJECT_NAME:
    <<: *templ
    only:
        - master@jamiet/$CI_PROJECT_NAME

use ${CI_PROJECT_NAME}:
    <<: *templ
    only:
        - master@jamiet/${CI_PROJECT_NAME}

当 CI 管道运行时,它只运行 job use absolute values

在此处输入图像描述

这向我表明它要么无法识别,$CI_PROJECT_NAME要么我的语法错误。有人知道吗?

标签: gitlabgitlab-ci

解决方案


对此也感到不解。解决方案是:如果出现以下情况,变量检查将不起作用

only:
  variables:
    - $VARIABLE == master@jamiet/{}
    - master@jamiet/${CI_PROJECT_NAME}
    - master@jamiet/$CI_PROJECT_NAME

适用于裸变量:

only:
  variables:
    - $VARIABLE == $CI_PROJECT_NAME
    - ${CI_PROJECT_NAME}
    - $CI_PROJECT_NAME 

尝试在模板中重新定义变量并像这样使用它。


推荐阅读