管道和工作介绍
在GitLab 8.8中引入。
注意:注意:如果你有镜像存储库,GitLab从中提取,您可能需要启用管道触发在您的项目设置>存储库>从远程存储库提取>触发镜像更新管道.
管道
管道是一组工作被执行阶段(批次)。一个阶段中的所有作业都是并行执行的(如果有足够的并发跑步者),如果他们都成功了,渠道就会进入下一个阶段。如果其中一个作业失败,则下一阶段(通常)不会执行。您可以访问项目的管道页面管道选项卡。
在下面的图像中,您可以看到管道由四个阶段组成(构建
,测验
,暂存
,生产
)每个人都有一项或多项工作。
注意:类中显示时,GitLab将阶段名称大写管道图.
管道类型
有三种类型的管道经常使用“管道”这一简写形式。人们经常谈论它们,好像每一个都是管道,但实际上,它们只是一个单一的、综合的管道的一部分。
- CI管道中定义的构建和测试阶段
.gitlab-ci.yml
- 部署管道中定义的部署阶段
.gitlab-ci.yml
通过不同阶段将代码部署到服务器的流程:例如,从开发到登台再到生产 - 项目管道:跨项目CI依赖关系通过API触发,特别是微服务,但也适用于复杂的构建依赖:例如API ->前端,ce/ee -> omnibus。
开发工作流程
管道可以容纳几个开发工作流:
- 分支流(例如,开发、qa、阶段、生产的不同分支)
- Trunk-based流(例如,特性分支和单个主分支,可能带有版本标签)
- Fork-based流(例如合并请求来自fork)
示例连续交付流程:
工作
方法中定义作业.gitlab-ci.yml
文件。不要和构建
工作或构建
阶段。
定义管道
管道定义在.gitlab-ci.yml
通过指定工作磨合在一起阶段.
参见参考文献作业文档.
查看管道状态
您可以在项目的目录下找到当前和历史的管道运行管道选项卡。单击管道将显示为该管道运行的作业。
查看工作状态
当您访问单个管道时,您可以看到该管道的相关作业。单击单个作业将显示其作业跟踪,并允许您取消作业、重试作业或删除作业跟踪。
看到工作失败的原因
介绍了在GitLab 10.7中。
当管道失败或被允许失败时,有几个地方可以快速检查它失败的原因:
- 在管道图中显示在管道详细信息视图上。
- 在管道部件中显示在合并请求和提交页面中。
- 在作业视图中显示在作业的全局和详细视图中。
在任何情况下,如果您将鼠标悬停在失败的作业上,就可以看到它失败的原因。
从GitLab 10.8您还可以在Job详细信息页面上看到失败的原因。
管道图
介绍了在GitLab 8.11中。
管道可以是具有许多顺序和并行作业的复杂结构。为了更容易地了解发生了什么,您可以查看单个管道及其状态的图形。
管道图可以以两种不同的方式显示,这取决于您所在的页面。
常规管道图显示了每个阶段的作业名称,当您在单管道页面.
然后,还有管道迷你图,它占用更少的空间,如果所有作业都通过或失败,可以让您快速查看。管道迷你图可以在您访问时找到:
- 管道索引页
- 单个提交页面
- 合并请求页面
这样,您就可以看到单个提交的所有相关作业以及管道每个阶段的净结果。这使您可以快速查看失败的地方并修复它。管道迷你图中的阶段是可折叠的。将鼠标悬停在它们上并单击以展开它们的工作。
迷你图 | 扩展的小图形 |
---|---|
在管道图中对相似的作业进行分组
介绍了在GitLab 8.12中。
如果你有很多类似的工作,你的管道图就会变得很长,很难阅读。因此,类似的工作可以自动归为一类。如果作业名称以某种方式格式化,那么它们将在常规管道图(而不是迷你图)中被分解为单个组。如果您没有在管道中看到重试或取消按钮,您就会知道管道何时对作业进行了分组。将鼠标悬停在它们上将显示分组作业的数量。单击可展开。
基本的要求是,有两个数字用以下之一分开(你甚至可以互换使用它们):
- 一个空间
- 斜杠(
/
) - 冒号(
:
)
注意:更具体地说,它使用这个正则表达式:
\ d + [\ s: \ / \ \] + \ d + \ s *
.
作业将通过从左到右比较这两个数字来排序。您通常希望第一个是指数,第二个是总数。
例如,以下作业将被分组在一个名为测验
:
测试0 3
= >测验
测试1 3
= >测验
测试2 3
= >测验
下面的作业将被分组在一个名为测试红宝石
:
测试1:2红宝石
= >测试红宝石
测试2:2红宝石
= >测试红宝石
下面的作业将被分组在一个名为测试红宝石
:
1/3测试红宝石
= >测试红宝石
2/3测试红宝石
= >测试红宝石
3/3测试红宝石
= >测试红宝石
来自管道图的手动操作
介绍了在GitLab 8.15中。
手动操作允许您在进入CI中的特定工作之前需要手动交互。您的整个管道可以自动运行,但实际部署到生产环境将需要单击。
您可以直接从管道图中进行此操作。只需单击播放按钮来执行特定的作业。例如,在下面的图像中,生产
舞台有一个手动操作的工作。
管道图中作业的排序
正则管道图
在单个管道页面中,作业按名称排序。
小型管道图
介绍了在GitLab 9.0中。
在管道迷你图中,作业首先按严重程度排序,然后按名称排序。严重程度依次为:
- 失败的
- 警告
- 等待
- 运行
- 手册
- 取消了
- 成功
- 跳过
- 创建
管道持续时间是如何计算的
给定管道的总运行时间不包括重试和挂起(队列)时间。我们可以把这个问题简化为求周期并集。
所以每个工作都用a表示期
,其中包括期#第一
工作刚开始的时候期#去年
当工作完成时。这里有一个简单的例子:
- A (1,3)
- B (2,4)
- C (6,7)
这里A从1开始,到3结束。B从2开始,到4结束。C从6开始,到7结束。从视觉上看,它可以被看作:
0 1 2 3 4 5 6 7AAAAAAABBBBBBB预备
A, B, C的并集是(1,4)和(6,7),因此总运行时间应为:
(4 - 1) + (7 - 6) =>
徽章
管道状态和测试覆盖率报告徽章是可用的。您可以在管道的设置页面。
受保护分支的安全性
在管道上执行时,将强制执行严格的安全模型受保护的分支.
只有当用户为时,才允许在受保护的分支上执行以下操作允许合并或推送在那个特定的分支上:
- 运行手动管道(使用Web UI或管线API)
- 运行将管道
- 使用以下命令运行管道触发器
- 触发手动操作在现有管道上
- 重试/取消现有作业(使用Web UI或管线API)
秘密的变量标记为受保护的仅对运行在受保护分支上的作业可访问,避免不受信任的用户意外访问敏感信息,如部署凭据和令牌。
跑步者标记为受保护的只能在受保护的分支上运行作业,避免在受保护的运行程序上执行不受信任的代码,并防止部署密钥和其他凭证被无意地访问。为了确保打算在受保护的运行程序上执行的作业不会使用常规运行程序,必须相应地标记它们。