【发布时间】:2022-11-20 01:12:51
【问题描述】:
我想添加一个工作流规则以允许管道在它是“网络管道”(created by using Run pipeline button in the GitLab UI)并且所选分支是主要分支时运行。所以我的第一个想法是写:
if: $CI_PIPELINE_SOURCE == "web" && $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
但是,在阅读 Gitlab 文档时,我了解到 $CI_COMMIT_BRANCH 仅在“分支管道”中可用,请参见此处:
CI_COMMIT_BRANCH:提交分支名称。在分支管道中可用,包括默认分支的管道该文档似乎定义了“分支管线“作为在分支中发生推送时运行的管道,请参阅here 和there:
您可以将管道配置为在每次向分支提交更改时运行。这种类型的管道称为分支管线.
分支管线为 Git 运行将事件推送到分支,例如新的提交或标签。
示例:
if: $CI_COMMIT_BRANCH == "main":如果将更改推送到main。(但是请注意,“分支管道”不是
$CI_PIPELINE_SOURCE中的一种管道(参见here:push、web、schedule、api、external、chat、@987654337 @、merge_request_event、external_pull_request_event、parent_pipeline、trigger或pipeline)。因此,在仔细阅读文档后,我只能得出结论,“web”管道不是分支管道,因为没有提交或推送负责启动管道,因此
CI_COMMIT_BRANCH将不可用。所以我开始寻找另一个告诉我当前分支名称的预定义变量(未成功)。然而,令我惊讶的是,我可以通过实验看到
CI_COMMIT_BRANCH实际上在网络管道中可用!这不是令人难以置信的混乱吗?那么web管道毕竟是“分支管道”吗?为什么?其他哪些类型的$CI_PIPELINE_SOURCE被视为“分支管道”?
【问题讨论】: