Gitlab Pipeline 触发规则

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

我在 gitlab 实例上有一个存储库,我想为其设置部署管道触发器。

我需要一个触发规则,如果“release”上有带有 SemVer 格式标签的新提交,该规则始终会触发管道。

存储库设置有两个分支“main”和“release”(“release”受保护,只能合并到其中,禁止直接推送)。

工作流程如下:

  • 开发并向“main”提交一些更改
  • 创建合并请求“main”->“release”并执行合并(通过 gitlab UI)
  • 在发布分支上(通过 gitlab UI)创建一个新标签(例如“0.0.4”) => 现在应该触发管道

不幸的是我还没有找到解决方案,也不知道为什么我的版本不起作用。我认为这应该可行,它检查提交标签是否采用指定的格式以及提交是否到“release”分支。

...
  rules:
    - if: '$CI_COMMIT_TAG =~ /^v?\d+\.\d+\.\d+$/ && $CI_COMMIT_BRANCH == "release"' 
...
triggers gitlab gitlab-ci pipeline cicd
1个回答
0
投票

TLDR(ctrl+f -> CI_COMMIT_TAG):https://docs.gitlab.com/ee/ci/variables/predefined_variables.html

让我们只关注 Git,以获得更清晰的理解。

当您在 Git 中添加标签时,您会将标签(例如“版本 0.0.4”)固定到特定的 Git 提交。

在 Git 中,提交有祖先,但“分支”只是某些开发线的当前头。换句话说,提交捕获项目在特定时刻的状态,并且可以与同时与多个分支相关联

因此,考虑到提交可以与多个分支相关联,GitLab(以及任何其他 CI 系统)检测您标记的分支是一项挑战。这就是为什么当您标记时,GitLab 会将其视为一个独立事件,称为 tag pipeline(而不是 branch pipeline),其中 $CI_COMMIT_TAG 可用,但 $CI_COMMIT_BRANCH 不可用。反之亦然。

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