GitLab CI CD pipelines

GitLab CI CD pipelines

Posted by WTJ on January 2, 2019

目录

pipelines 是持续集成、交付和部署的顶级组件。

pipelines 包括:

  • 工作,它定义了要做什么。例如,编译或测试代码的作业。
  • 阶段,定义何时运行作业。例如,在编译代码的阶段之后运行测试的阶段。 作业由runners执行。如果有足够的并发运行者,同一阶段的多个作业将并行执行。

如果一个阶段中的所有作业都成功,​​则 pipelines 将进入下一个阶段。

如果一个阶段中的任何作业失败,则(通常)不会执行下一个阶段,并且 pipelines 会提前结束。

一般来说,pipelines 是自动执行的,一旦创建就不需要干预。但是,有时您也可以手动与管道交互。

一个典型的管道可能包含四个阶段,按以下顺序执行:

  • 一个build舞台,有一个工作叫做compile.
  • 一个test阶段,有两个作业称为test1和test2。
  • 一个staging舞台,有一个工作叫做deploy-to-stage.
  • 一个production舞台,有一个工作叫做deploy-to-prod.

管道类型

管道可以通过许多不同的方式进行配置:

  • 基本管道同时运行每个阶段中的所有内容,然后是下一个阶段。
  • 有向无环图管道 (DAG) 管道基于作业之间的关系,可以比基本管道运行得更快。
  • 合并请求管道仅针对合并请求运行(而不是针对每次提交)。
  • 合并结果管道 是合并请求管道,其行为就像来自源分支的更改已经合并到目标分支中一样。
  • 合并列车 使用合并的结果管道将合并一个接一个地排队。
  • 父子流水线将复杂的流水线分解为一个父流水线,可以触发多个子子流水线,这些子流水线都在同一个项目中运行,具有相同的 SHA。这种管道架构通常用于单一存储库。
  • 多项目管道将不同项目的管道组合在一起。

配置管道

管道及其组件作业和阶段在每个项目的 CI/CD 管道配置文件中定义。

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

有关 CI 管道文件中的配置选项列表,请参阅GitLab CI/CD 管道配置参考

您还可以通过 GitLab UI 配置管道的特定方面。例如:

跑步者参考规格

当跑步者选择一个管道作业时,GitLab 会提供该作业的元数据。这包括Git refspecs,它指示从项目存储库中签出的 ref(分支、标签等)和提交 (SHA1)。

下表列出了为每种管道类型注入的 refspec:

管道类型 参考规格
分支管道 +:refs/pipelines/和+refs/heads/:refs/remotes/origin/
标签的管道 +:refs/pipelines/和+refs/tags/:refs/tags/
合并请求管道 +:refs/pipelines/

refsrefs/heads/和refs/tags/存在于您的项目存储库中。GitLabrefs/pipelines/在运行管道作业期间生成特殊 ref。即使在关联的分支或标签已被删除之后,也可以创建此 ref。因此,它在某些功能中很有用,例如[自动停止环境](https://docs.gitlab.com/ee/ci/environments/index.html#stop-an-environment),以及[合并](https://docs.gitlab.com/ee/ci/pipelines/merge_trains.html) 可能在删除分支后运行管道的列车。

查看管道

您可以在项目的 CI/CD > 管道页面下找到当前和历史管道运行。您还可以通过导航到管道选项卡来访问合并请求的管道。

pipelines_index_v13_0

选择一个管道以打开“管道详细信息”页面并显示为该管道运行的作业。从这里您可以取消正在运行的管道、在失败的管道上重试作业或删除管道