0
点赞
收藏
分享

微信扫一扫

创建和使用CI / CD管道【译】【原】

罗蓁蓁 2023-01-03 阅读 97

在GitLab 8.8中引入。

介绍

管道是持续集成,交付和部署的顶级组件。

管道包括:

  • 定义要运行的作业的作业。例如,代码编译或测试运行。
  • 定义何时以及如何运行的阶段。例如,该测试仅在代码编译后运行。

如果有足够的并发​​Runners​​​,则​​Runners​​并行执行同一阶段中的多个作业。

如果一个阶段的所有工作:

  • 成功,管道进入下一阶段。
  • 失败,下一阶段没有(通常)执行,管道提前结束。

注意: 如果您有​​GitLab从中提取​​​的​​镜像存储库,则​​可能需要在项目的“设置”>“存储库”>“从远程存储库中提取”>“镜像更新的触发管道”中启用管道触发 。

简单的管道示例

举个例子,想象一个由四个阶段组成的管道,按以下顺序执行:

  • ​build​​​,有一份工作​​compile​​。
  • ​test​​​,有两个叫做​​test​​​和的工作​​test2​​。
  • ​staging​​​,有一份工作​​deploy-to-stage​​。
  • ​production​​​,有一份工作​​deploy-to-prod​​。

可视化管道

在GitLab 8.11中​​引入​​。

管道可以是具有许多顺序和并行作业的复杂结构。

为了更容易理解管道的流程,GitLab具有用于查看管道及其状态的管道图。

管线图可以以两种不同的方式显示,具体取决于您访问图表的页面。

注意: GitLab在管道图(如下所示)中显示时将这些阶段的名称大写。

常规管道图

常规管道图显示每个阶段的作业名称。当您在​​单个管道页面​​上时,可以找到常规管道图。例如:

管道迷你图

管道迷你图表占用的空间更少,可以快速通知您所有作业是否通过或出现故障。导航到以下内容时可以找到管道迷你图:

  • 管道索引页面。
  • 单个提交页面。
  • 合并请求页面。

管道迷你图允许您查看单个提交的所有相关作业以及管道的每个阶段的最终结果。这使您可以快速查看失败并修复它。

管道迷你图中的阶段是可折叠的。将鼠标悬停在它们上方,然后单击以展开其作业。

迷你图

迷你图扩大了



管道图中的工作排序

作业排序取决于管道图的类型。对于​​常规管道图​​,作业按名称排序。

对于​​管道迷你图​​​( 在GitLab 9.0中​​引入​​),作业按严重性排序,然后按名称排序。

严重性的顺序是:

  • 失败
  • 警告
  • 有待
  • 赛跑
  • 手册
  • 计划
  • 取消
  • 成功
  • 跳过
  • 创建

例如:

如何计算管道持续时间

给定管道的总运行时间不包括重试和挂起(排队)时间。

每项工作都表示为a ​​Period​​,其中包括:

  • ​Period#first​​ (当工作开始时)。
  • ​Period#last​​ (当工作完成时)。

一个简单的例子是:

  • 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  7
AAAAAAA
BBBBBBB
CCCC

A,B和C的并集是(1,4)和(6,7)。因此,总运行时间为:

(4 - 1) + (7 - 6) => 4

扩展和折叠作业日志部分

在GitLab 12.0中​​引入​​。

作业日志分为可折叠或展开的部分。

在以下示例中:

  • 扩展了两个部分,可以折叠。
  • 一个部分已折叠,可以展开。

配置管道

管道及其组件作业和阶段在​​.gitlab-ci.yml​​每个项目的文件中定义。

特别是:

  • 作业是​​基本配置​​组件。
  • 阶段是使用​​stages​​关键字定义的。

有关所有可用的配置选项,请参阅​​GitLab CI / CD管道配置参考​​。

设置和日程安排

除了配置作业外​​.gitlab-ci.yml​​,还可以通过GitLab UI获得其他配置选项:

  • 每个项目的管道设置。有关更多信息,请参阅​​管道设置​​。
  • 管道计划。有关更多信息,请参阅​​管道计划​​。

分组工作

在GitLab 8.12中​​引入​​。

如果您有许多类似的工作,您的​​管道图​​将变得冗长且难以阅读。

出于这个原因,类似的工作可以自动组合在一起。如果作业名称以某种方式格式化,它们将在常规管道图(而不是迷你图)中折叠为单个组。

如果您没有在其中看到重试或取消按钮,您将知道管道何时对作业进行分组。将鼠标悬停在它们上方将显示分组作业的数量。单击以展开它们。

配置分组

在管道​​配置文件中​​,作业名称必须包含两个用以下之一分隔的数字(您甚至可以交替使用它们):

  • 空间。
  • 斜线(​​/​​)。
  • 冒号(​​:​​)。

注意: 更具体地说,它使用​​此​​​正则表达式:​​\d+[\s:\/\\]+\d+\s*​​。

分组如何工作

将通过从左到右比较这两个数字来订购作业。您通常希望第一个是索引,第二个是总数。

例如,以下作业将分组在名为的作业下​​test​​:

  • ​test 0 3​
  • ​test 1 3​
  • ​test 2 3​

以下作业将分组在一个名为的作业下​​test ruby​​:

  • ​test 1:2 ruby​
  • ​test 2:2 ruby​

以下作业将分组到一个名为的作业中​​test ruby​​:

  • ​1/3 test ruby​
  • ​2/3 test ruby​
  • ​3/3 test ruby​

合并请求的管道

GitLab支持配置仅针对合并请求运行的管道。有关更多信息,请参阅 ​​合并请求的管道​​。

徽章

管道状态和测试覆盖率报告标记可用于每个项目并可配置。

有关向项目添加管道标记的信息,请参阅​​管道标记​​。

多项目管道

额外费用

不同项目的管道可以组合在一起并可视化。

有关更多信息,请参阅​​多项目管道​​。

使用管道

通常,管道自动执行,一旦创建就不需要干预。

但是,有些情况下您需要与管道进行交互。这些记录如下。

手动执行管道

可以使用预定义或手动指定的​​变量​​手动执行管道。

如果在管道的正常操作之外需要管道的结果(例如,代码构建),则可以执行此操作。

要手动执行管道:

  1. 导航到项目的CI / CD>管道。
  2. 单击“ 运行管道”按钮。
  3. 在“ 运行管道”页面上:
  1. 在“ 创建”字段中选择要运行管道的分支。
  2. 输入管道运行所需的任何​​环境变量​​。
  3. 单击“ 创建管道”按钮。

管道将按配置执行作业。

访问管道

您可以在项目的CI / CD>管道页面下找到当前和历史管道运行 。单击管道将显示为该管道运行的作业。

您还可以通过导航到“ 管道”选项卡来访问合并请求的管道。

访问个人工作

访问管道时,您可以看到该管道的相关作业。

单击单个作业将显示其作业跟踪,并允许您:

  • 取消工作。
  • 重试这份工作。
  • 删除作业跟踪。

看到失业的原因

在GitLab 10.7中​​引入​​。

当管道出现故障或被允许失败时,有几个地方可以快速检查失败的原因:

  • 在管道图中,在管道详细信息视图上。
  • 在管道小部件中,在合并请求和提交页面中。
  • 在作业视图中,在作业的全局和详细视图中。

在每个地方,如果将鼠标悬停在失败的作业上,您可以看到失败的原因。

从​​GitLab 10.8​​,您还可以在“作业详细信息”页面上查看失败的原因。

管道图的手动操作

在GitLab 8.15中​​引入​​。

使用​​when:manual​​参数配置的手动操作允许您在管道中向前移动之前需要手动交互。

您可以直接从管道图中执行此操作。只需单击播放按钮即可执行该特定作业。

例如,您的管道自动启动,但需要手动操作才能 ​​部署到生产环境​​​。在下面的示例中,​​production​​舞台具有手动操作。

延迟管道图中的作业

在GitLab 11.4中​​引入​​。

如果您不想立即运行作业,可以使用该​​when:delayed​​参数将作业的执行延迟一段时间。

这对于逐步推出新代码的定时增量转出特别有用。

例如,如果您开始推出新代码并且:

  • 用户不会遇到麻烦,GitLab可以自动完成从0%到100%的部署。
  • 用户遇到新代码时出现问题,您可以通过取消管道并​​回滚​​到上一个稳定版本来停止定时增量部署。

使用API

GitLab提供API端点:

  • 执行基本功能。有关更多信息,请参阅​​Pipelines API​​。
  • 维护管道计划。有关更多信息,请参阅​​管道计划API​​。
  • 触发管道运行。有关更多信息,请参阅:
  • ​​通过API触发管道​​。
  • ​​Pipeline触发API​​。

 在阶段中启动多个手动操作

在GitLab 11.11中​​引入​​。

可以使用“播放所有手动”按钮同时启动单个阶段中的多个手动操作。用户单击此按钮后,将触发每个单独的手动操作并刷新到更新状态。

此功能仅适用于:

  • 对于至少具有开发者访问权限的用户
  • 如果舞台包含​​手动操作​​。

受保护分支的安全性

在​​受保护的分支​​上执行管道时,将强制执行严格的安全模型 。

仅当​​允许​​​用户​​合并或推送​​ 该特定分支时,才允许在受保护的分支上执行以下操作 :

  • 运行手动管道(使用​​Web UI​​或管道API)。
  • 运行预定的管道。
  • 使用触发器运行管道。
  • 触发现有管道上的手动操作。
  • 重试或取消现有作业(使用Web UI或管道API)。

标记为受保护的变量只能在受保护的分支上运行的作业访问,从而防止不受信任的用户无意中访问敏感信息(如部署凭据和令牌)。

运动员标记为保护只能保护分支机构运行的作业,避免不受信任的代码要在保护运动员和保存部署键被意外地访问其他凭证执行。为了确保在受保护的执行者上执行的作业不会使用常规执行者,必须相应地对其进行标记。

 



举报

相关推荐

0 条评论