在gitlab ci中获取分支名称

Max*_* R. 5 gitlab gitlab-ci

在我的Gitlab CI中,我有一个通过api调用触发器触发另一个阶段的阶段,并且我想将当前分支名称作为参数传递给另一个持有该触发器的项目。我CI_COMMIT_REF_NAME为此使用了它,它似乎可以正常工作,但是现在我仅在将分支合并到master时才调用此阶段,CI_COMMIT_REF_NAME总是说“ master”。

文档中显示“为项目构建的分支或标记名称”,我是否正确理解它可以保存工作分支的目标分支?

我也尝试在gitlab ci中获取当前分支,git symbolic-ref HEAD | sed 's!refs\/heads\/!!'但它为空。

CI_COMMIT_REF_NAME我要查找的变量是否有问题,还是需要其他东西?

提前致谢。

mec*_*oup 16

请注意,像下面这样检查值的规则$CI_COMMIT_BRANCH(旨在防止在 PR 合并到master分支时运行此步骤)将无法按预期工作:

build-python-c4d:
  stage: pre
  rules:
    - if: '$CI_COMMIT_BRANCH != "master"'
Run Code Online (Sandbox Code Playgroud)

来自文档$CI_COMMIT_BRANCH:​

提交分支名称。在分支管道中可用,包括默认分支的管道。在合并请求管道或标记管道中不可用。

相反,你应该使用:

build-python-c4d:
  stage: pre
  rules:
    - if: ($CI_COMMIT_BRANCH != "master" && $CI_COMMIT_REF_NAME != "master")
Run Code Online (Sandbox Code Playgroud)


Kin*_*ang 14

我不确定“通过api调用触发器触发另一个阶段的阶段”是什么意思。但是,总的来说,GitLab CI作业是CI管道的一部分,并且CI管道是为分支或标签创建的。

CI_COMMIT_REF_NAME变量包含为其创建管道的分支或标记的名称。管道中没有“目标”分支的概念。

  • `echo ${CI_COMMIT_BRANCH}` 对我来说是正确的。 (7认同)
  • [预定义变量的完整列表](https://docs.gitlab.com/ee/ci/variables/predefined_variables.html)。 (3认同)