首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Gitlab:“网络管道”是“分支管道”的例子吗?

Gitlab:“网络管道”是“分支管道”的例子吗?
EN

Stack Overflow用户
提问于 2022-11-18 15:53:38
回答 1查看 34关注 0票数 0

我想添加一个工作流规则,以便当管道是"web管道“(通过在GitLab UI中使用Run管道按钮创建)并且所选分支是主分支时,允许管道运行。所以我的第一个想法是写:

代码语言:javascript
复制
if: $CI_PIPELINE_SOURCE == "web" && $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH

但是,在阅读Gitlab文档时,我可以理解$CI_COMMIT_BRANCH只在“分支管道”中可用,请参见以下内容:

CI_COMMIT_BRANCH:提交分支名称。在分支管道中可用,包括默认分支的管道。

文档似乎将“分支管道”定义为在分支中发生推送时运行的管道,请参阅这里那里

每次向分支提交更改时,都可以将管道配置为运行。这种类型的管道称为分支管道。为Git运行的分支管道将事件推送到分支,如新提交或标记。示例:if: $CI_COMMIT_BRANCH == "main":如果将更改推送到main

(但是,请注意,“分支管道”不是$CI_PIPELINE_SOURCE中的管道类型(参见这里pushwebscheduleapiexternalchatwebidemerge_request_eventexternal_pull_request_eventparent_pipelined26或pipeline)。

因此,在仔细阅读了文档之后,我只能得出结论:"web“管道不是分支管道,因为没有提交或推送负责启动管道,因此CI_COMMIT_BRANCH将不可用。因此,我开始寻找另一个预定义的变量,它告诉我当前的分支名称(失败)。

然而,令我惊讶的是,通过实验,我可以看到CI_COMMIT_BRANCH实际上是可以在网络管道中使用的!这不是令人难以置信的困惑吗?那么,web管道到底是“分支管道”吗?为什么?哪些其他类型的$CI_PIPELINE_SOURCE被认为是“分支管道”?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-11-19 16:25:57

你在比较不相互排斥的术语。

预定义变量引用

以下是相互排斥的变量:

  • CI_COMMIT_BRANCH -提交分支名称。在分支管道中可用,包括默认分支的管道。在合并请求管道或标记管道中不可用。
  • CI_COMMIT_TAG -提交标记名。只能在标签的管道中使用。
  • 所有特定于合并请求管道的变量

这与触发构建的操作完全不同:

CI_PIPELINE_SOURCE 管道是如何触发的。可以是推送、网页、调度、api、外部、聊天、电石、merge_request_event、external_pull_request_event、parent_pipeline、触发器或流水线。有关每个值的说明,请参见rules,它使用此变量控制作业何时运行。

如果您从web触发main上的构建,它不会停止在main上。只是不是推事件触发的。但是,GitLab仍然在运行管道,在特定分支上的特定提交中使用回购。如果手动从web触发标记生成,或者安排标记生成,源将反映该生成(webschedule),CI_COMMIT_BRANCH将被取消设置,CI_COMMIT_TAG将被设置。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74492218

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档