如何仅在主分支上创建标签时运行 Gitlab-CI 作业

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

我有一项工作是在创建标签时创建一个版本,但我还需要一个规则,仅允许它在为主分支创建标签时创建版本。我不确定我需要为此做什么?

我已经尝试过这个规则,但是这在管道中失败了,因为这个命令由于某种原因阻止它运行。

  rules:
  - if: $CI_COMMIT_TAG && $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
  script:
yaml gitlab-ci
1个回答
0
投票

您对标签的工作原理存在误解。请阅读这个优秀的答案以获得完整的解释,但这里有一个片段:

重要的是要了解标签与分支没有直接关系 - 它们仅标识提交。

因此,当创建标签时,即使对于一个分支,它也不是真正为该分支创建,而是作为对该分支中最新的 commit 的引用。这也是为什么GitLab 文档提到这些:

    CI_COMMIT_TAG
  • - 提交标签名称。仅在标签管道中可用。
  • CI_COMMIT_BRANCH
  • - 提交分支名称。在分支管道中可用,包括默认分支的管道。不适用于合并请求管道或标记管道。
    
    
  • 所以,你的管道将会失败,因为这两个变量不能共存,所以你的问题变得有点问题。

也许您不想确定标签的提交在主分支中是否可用?理论上,这样的东西可能会有所帮助:

Git:如何找出标签所在的分支?

,但是你不能在 GitLab if 子句中运行任意 git 操作。 并不理想,但最好的选择可能是在脚本中进行检查,并在未为主分支中存在的提交创建标签的情况下使作业失败:

script: - | if [[ -z $(git branch --list $CI_DEFAULT_BRANCH --contains tags/$CI_COMMIT_TAG) ]]; then exit 1 fi

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