无法跳过基于Gitlab CI中的变量的运行管道

时间:2020-11-12 04:29:44

标签: gitlab-ci

无论项目分支等于开发时,我都试图强制管道跳过正在运行的作业。我创建了自定义变量名称$CURRENT_BRANCH,该名称是从预定义变量$CI_COMMIT_REF_NAME

收集的
- export CURRENT_BRANCH=`echo ${CI_COMMIT_REF_NAME} | awk -F '/' '{print $1}'`

$CURRENT_BRANCH将通过第一阶段,并将保存在工件中

- >
            if [ ${CURRENT_BRANCH} == 'feature' ]; then
                export CURRENT_BRANCH="feature"
                export FEATURE_NAME=`echo ${CI_COMMIT_REF_NAME} | awk -F '/' '{print $2}'` 
                echo "FEATURE_NAME=${FEATURE_NAME}" >> info.env
                echo "PROJECT_NAME=${FEATURE_NAME}" >> info.env
            else
                export CURRENT_BRANCH=${CURRENT_BRANCH}
                echo "PROJECT_NAME=${CURRENT_BRANCH}" >> info.env
            fi
        - echo "CURRENT_BRANCH=${CURRENT_BRANCH}" >> info.env
    artifacts:
        reports:
            dotenv: info.env

然后在下一阶段到最后阶段,例如,我尝试跳过使用only/exceptrules/when运行管道,

build_image:
    image: docker:19.03
    services:
        - docker:dind
    stage: release
    only:
      variables:
        - $CURRENT_BRANCH != "develop"

以及使用rules和条件

build_image:
    image: docker:19.03
    services:
        - docker:dind
    stage: release
    rules:
      - if: '$CURRENT_BRANCH == "develop"'
        when: never

管道仍在运行。我想念什么吗?

1 个答案:

答案 0 :(得分:0)

您提供作业build_image的完整代码吗? build_image作业需要您第一份作业的info.env工件。您可以尝试添加吗?

needs:
   - job: '<first-job-name>'
     artifacts: true