CI/CD 流水线 (FREE)

news2024/12/20 12:09:46

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

流水线包括:

  • 工作,定义做什么。例如,编译或测试代码的作业。
  • 阶段,定义何时运行作业。例如,在编译代码的阶段之后运行测试的阶段。

作业由 runners 执行。如果有足够多的并发运行程序,同一阶段的多个作业将并行执行。

如果一个阶段中的所有作业成功,流水线将进入下一个阶段。

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

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

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

  • 一个 build 阶段,有一个名为 compile 的作业。
  • 一个 test 阶段,有两个名为 test1 和 test2 的作业。
  • 一个 staging 阶段,有一个名为 deploy-to-stage 的作业。
  • 一个production阶段,有一个名为deploy-to-prod的作业。

NOTE: 如果您有一个极狐GitLab 从中拉取的镜像仓库,您可能需要在项目的 设置 > 仓库 > 镜像仓库 > 触发镜像更新的流水线

流水线类型

流水线可以通过多种不同的方式进行配置:

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

配置流水线

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

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

有关 CI 流水线文件中的配置选项列表,请参阅 GitLab CI/CD 流水线配置参考。

您还可以通过 GitLab UI 配置流水线的特定方面。例如:

  • 每个项目的流水线设置。
  • 计划流水线。
  • 自定义 CI/CD 变量。

Ref specs for runners

当 runner 选择流水线作业时,系统会提供该作业的元数据,包括 Git refspecs,指示哪个引用(分支、标签等)和提交(SHA1) 从您的项目仓库中检出。

下表列出了为每种流水线类型注入的 refspecs:

流水线类型Refspecs
分支流水线+<sha>:refs/pipelines/<id> 和 +refs/heads/<name>:refs/remotes/origin/<name>
标签流水线+<sha>:refs/pipelines/<id> 和 +refs/tags/<name>:refs/tags/<name>
合并请求流水线+<sha>:refs/pipelines/<id>

refs refs/heads/<name> 和 refs/tags/<name> 存在于您的项目仓库中。极狐GitLab 在运行流水线作业期间,生成特殊引用 refs/pipelines/<id>。即使在删除关联的分支或标记后,也可以创建此引用。因此,它在某些功能中很有用,例如自动停止环境和可能运行流水线的合并队列分支删除后。

查看流水线

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

 

单击流水线以打开 流水线详细信息 页面并显示为该流水线运行的作业。从这里您可以取消正在运行的流水线、在失败的流水线上重试作业,或删除流水线。

从 12.3 版本开始,/project/pipelines/[branch]/latest 提供了指向给定分支最后一次提交的最新流水线的链接。 此外,/project/pipelines/latest 将您重定向到项目默认分支上最后一次提交的最新流水线。

从 13.0 版本开始,您可以通过以下方式过滤流水线列表:

  • 触发器作者
  • 分支名称
  • 状态(13.1 及更高版本)
  • 标签(13.1 及更高版本)
  • 源(14.3 及更高版本)

从 14.2 版本开始,可以更改流水线列以显示流水线 ID 或流水线 IID。

如果您使用 VS Code 编辑您的 GitLab CI/CD 配置, GitLab Workflow VS Code 扩展帮助您验证您的配置并查看您的流水线状态。

手动运行流水线

可以使用预定义或手动指定的变量手动执行流水线。

如果在流水线的正常操作之外需要流水线的结果(例如,代码构建),您可能会这样做。

要手动执行流水线:

  1. 在顶部栏上,选择 菜单 > 项目 并找到您的项目。
  2. 在左侧边栏上,选择 CI/CD > 流水线
  3. 选择 运行流水线
  4. 在 为分支名称或标签运行 字段中,选择要为其运行流水线的分支或标签。
  5. 输入流水线运行所需的任何环境变量。您可以设置特定变量以使其值在表单中预填充。
  6. 选择 运行流水线

流水线现在按照配置执行作业。

手动流水线中的预填充变量

引入于 13.7 版本

您可以使用 value 和 description 关键字来定义在手动运行流水线时,预填充的流水线级(全局)变量。

在手动触发的流水线中,运行流水线 页面显示所有顶级变量,以及 .gitlab-ci.yml 文件中定义的 description 和 value。然后可以根据需要修改这些值,这会覆盖该单个流水线运行的值。

说明显示在变量下方。它可以用来解释变量的用途,可接受的值是什么,等等:

variables:
  DEPLOY_ENVIRONMENT:
    value: "staging"  # Deploy to staging by default
    description: "The deployment target. Change this variable to 'canary' or 'production' if needed."

当您手动运行流水线时,您无法将作业级变量设置为预填充。

使用 URL 查询字符串运行流水线

您可以使用查询字符串预填充 运行流水线 页面。例如,查询字符串 .../pipelines/new?ref=my_branch&var[foo]=bar&file_var[file_foo]=file_bar 预先填充 运行流水线 页面:

  • 运行字段:my_branch
  • 变量部分:
    • 变量:
      • 键:foo
      • 值:bar
    • 文件:
      • 键:file_foo
      • 值:file_bar

pipelines/new URL 的格式为:

.../pipelines/new?ref=<branch>&var[<variable_key>]=<value>&file_var[<file_key>]=<value>

支持以下参数:

  • ref:指定用于填充 运行 字段的分支。
  • var:指定一个 Variable 变量。
  • file_var:指定一个 File 变量。

对于每个 var 或 file_var,都需要一个键和值。

向您的流水线添加手动交互

手动作业允许您在推进流水线之前需要手动交互。

您可以直接从流水线图中执行此操作。只需单击运行按钮即可执行该特定作业。

例如,您的流水线可以自动启动,但需要手动操作才能部署到生产。 在下面的示例中,production 阶段有一个带有手动操作的作业:

 

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

可以使用“全部手动运行”按钮同时启动单个阶段中的多个手动操作。 单击此按钮后,将触发每个单独的手动操作并刷新为更新状态。

此功能仅适用于:

  • 对于至少具有开发人员角色的用户。
  • 如果阶段包含手动操作。

跳过流水线

要在不触发流水线的情况下推送提交,请使用任何大写形式在提交消息中添加 [ci skip] 或 [skip ci]

或者,如果您使用的是 Git 2.10 或更高版本,请使用 ci.skip Git 推送选项。 ci.skip 推送选项不会跳过合并请求流水线。

删除流水线

项目中具有所有者角色 的用户可以通过点击 CI/CD > 流水线 中的流水线到达 流水线详情 页面,然后使用 删除 按钮。

 

删除流水线不会自动删除其子流水线。

WARNING: 删除流水线会使所有流水线缓存过期,并立即删除所有相关对象,例如构建、日志、产物和触发器。此操作无法撤消。

流水线配额

每个用户都有个人流水线配额,用于跟踪所有个人项目中共享 runner 的使用情况。 每个群组都有一个使用配额,用于跟踪群组内创建的所有项目的共享 runner 的使用情况。

当流水线被触发时,无论是谁触发的,都会使用项目所有者的命名空间的流水线配额。在这种情况下,命名空间可以是拥有项目的用户或群组。

如何计算流水线持续时间

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

每个作业都表示为一个 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

如何计算流水线配额使用量

管道配额使用量计算为每个单独作业的持续时间总和。这与管道持续时间计算的方式略有不同。流水线配额使用不考虑并行运行的作业的任何重叠。

例如,流水线由以下作业组成:

  • 作业 A 需要 3 分钟。
  • 作业 B 需要 3 分钟。
  • 作业 C 需要 2 分钟。

流水线配额使用量是每个作业持续时间的总和。在此示例中,将使用 8 分钟 runner,计算公式为:3 + 3 + 2。

受保护分支上的流水线安全

在受保护分支上执行流水线时,会强制执行严格的安全模型。

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

  • 运行手动流水线(使用 Web UI 或流水线 API)。
  • 运行计划流水线。
  • 使用触发器运行流水线。
  • 运行按需 DAST 扫描。
  • 在现有流水线上触发手动操作。
  • 重试或取消现有作业(使用 Web UI 或流水线 API)。

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

标记为 受保护 的 Runners 只能在受保护的分支上运行作业,防止不受信任的代码在受保护的 runner 上执行,并保护部署密钥和其他凭据不被无意访问。为了确保要在受保护 runner 上执行的作业不使用常规 runner,必须相应地标记它们。

可视化流水线

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

为了更容易理解流水线的流程,极狐GitLab 提供了用于查看流水线及其状态的流水线图。

流水线图可以显示为大图或迷你图,具体取决于您访问该图的页面。

流水线图中,阶段的名称大写。

查看完整的流水线图

  • 可视化改进引入于 13.11 版本

流水线详细信息页面显示流水线中所有作业的完整流水线图。

您可以按以下方式对作业进行分组:

  • 阶段,将同一阶段的作业一起排列在同一列中:

  •  

  • 作业依赖项,根据作业的 needs 依赖项来安排作业。

多项目流水线图 帮助您可视化整个流水线,包括所有跨项目的相互依赖。 (PREMIUM)

如果一个阶段包含超过 100 个作业,则流水线图中仅列出前 100 个作业。其余作业仍然正常运行。要查看作业:

  • 选择流水线,在流水线详情页面右侧列出作业。
  • 在左侧边栏上,选择 CI/CD > 作业

在流水线图中查看作业依赖关系

  • 引入于 13.12 版本。
  • 默认其用于 14.0 版本。
  • 功能标志移除于 14.2 版本。

您可以根据作业的 needs 依赖关系在流水线图中排列作业。

最左侧列中的作业首先运行,依赖它们的作业分组在下一列中。

例如,test-job1 仅依赖于第一列中的作业,因此它显示在左起第二列中。deploy-job1 依赖于第一列和第二列中的作业,并显示在第三列中:

 

要添加显示作业之间 needs 关系的行,请选择 查看依赖项 开关。

 

要查看作业的完整 needs 依赖关系树,请将鼠标悬停在其上:

 

流水线迷你图

流水线迷你图占用的空间更少,并且可以快速告诉您所有作业是否通过或失败。当您转到以下位置时,可以找到流水线迷你图:

  • 流水线索引页面。
  • 单个提交页面。
  • 合并请求页面。
  • 流水线编辑器(14.5 及更高版本)。

流水线迷你图允许您查看单个提交的所有相关作业以及流水线每个阶段的最终结果。这使您可以快速查看失败的内容并进行修复。

流水线迷你图仅按阶段显示作业。

流水线迷你图中的阶段是可展开的。将鼠标悬停在他们上方并单击以展开他们的作业。

 

 

流水线徽章

流水线状态和测试覆盖率报告徽章可用于每个项目并可配置。 有关向项目添加流水线徽章的信息,请参阅流水线徽章。

下游流水线

在流水线图表视图中,下游流水线(多项目流水线和父子流水线显示在图表右侧的卡片列表。

在图表视图中取消或重试下游流水线

  • 从图表视图中取消或重试下游流水线功能引入于 15.0 版本,功能标志名为 downstream_retry_action。默认禁用。
  • 一般可用,且功能标志删除于 15.1 版本。

要取消仍在运行的下游流水线,请选择流水线卡片上的 取消 ({cancel})。

要重试失败的下游流水线,请选择流水线卡片上的 重试 ({retry})。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/653623.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Qt编写视频监控系统79-四种界面导航栏的设计

一、前言 最初视频监控系统按照二级菜单的设计思路&#xff0c;顶部标题栏一级菜单&#xff0c;左侧对应二级菜单&#xff0c;最初采用图片在上面&#xff0c;文字在下面的按钮方式展示&#xff0c;随着功能的增加&#xff0c;二级菜单越来越多&#xff0c;如果都是这个图文上…

openGauss数据库安装,配置连接 完整版Centos7

服务器版本&#xff1a;Centos7.6 || 7.9 数据库版本&#xff1a;openGauss-5.0.0-CentOS-64bit.tar.bz2 极简版 目录 修改系统参数安装环境安装openGauss数据库配置连接数据库使用navicat连接数据库 修改系统参数 ##修改 /etc/selinux/config 文件中的“SELINUX”值为“disa…

【网络安全】成功上岸深信服,这套面试题你肯定需要!!!

时间过得很快&#xff0c;回想起去年的这个时候&#xff0c;我也正在准备秋招&#xff0c;今天的我刚刚结束培训。 我的个人情况就读于某双非大学&#xff0c;信息与计算科学&#xff08;大数据方向&#xff0c;校企合作&#xff0c;一个介于数学与计算机之间的专业&#xff0…

移动端H5使用window.open跳转,IOS不生效解决

移动端H5使用window.open跳转&#xff0c;IOS不生效解决 navigator navigator对象&#xff0c;用于提供当前浏览器及操作系统等信息&#xff0c;这些信息都放在navigator的各个属性中。navigator对象也是window对象的成员。 打印navigator对象 userAgent在安卓和IOS的打印结…

Opencv-C++笔记 (9) : opencv-多通道分离和合并

文章目录 一、概论二、多通道分离函数split()三、多通道合并函数merge()四、图像多通道分离与合并例程 一、概论 在图像颜色模型中不同的分量存放在不同的通道中&#xff0c;如果我们只需要颜色模型的某一个分量&#xff0c;例如只需要处理RGB图像中的红色通道&#xff0c;可以…

科技云报道:大模型时代,SaaS元年才真的到来了?

科技云报道原创。 ChatGPT席卷全球后&#xff0c;如果有人问AI大模型影响最大的会是哪个行业&#xff1f;SaaS领域肯定是不二之选。 目前全球各大科技公司已宣称要用大模型触及、整合所有产品。 其中&#xff0c;微软率先为其办公家族装配上了各类copilot&#xff0c;开发者…

Opencv-C++笔记 (10) : opencv-图像像素计算

文章目录 一、概率寻找图像像素的最大值和最小值计算图像的均值和标准方差 一、概率 我们可以将数字图像理解成一定尺寸的矩阵&#xff0c;矩阵中每个元素的大小表示了图像中每个像素的亮暗程度&#xff0c;因此统计矩阵中的最大值&#xff0c;就是寻找图像中灰度值最大的像素…

人机交互学习-7 可视化设计

可视化设计 窗口与菜单窗口窗口Window窗口界面类型 菜单注意事项 对话框模态对话框非模态对话框属性对话框功能对话框进度对话框公告对话框错误对话框消除错误信息 警告对话框确认对话框消除确认对话框 管理对话框内容标签对话框扩展对话框级联对话框 对话框设计原则 控件工具栏…

内部类~~

1&#xff1a;一个类中再定义一个类 2&#xff1a;内部类的使用场景&#xff0c;作用 当一个事物的内部&#xff0c;还有一个部分需要一个完整的结构进行描述&#xff0c;而这个内部的完整结构又只为外部事物提供服务&#xff0c;那么整个内部的完整结构可以选择使用内部类来设…

“大龄”码农的“中年危机”:35岁之后,IT计算机的出路在哪?

前言 对于一个工作不下于4年的人来说&#xff0c;我觉得我有一定的思考沉淀来回答这个问题。 说说我的一些经历吧。 普通一本毕业&#xff0c;专业是自动化&#xff0c;大学由于挂科太多没拿到学位证到上海找实习&#xff0c;一开始做的是开发&#xff0c;从16年到19年都是做…

警惕冒充“数字人民币”诈骗案!

现在大家越来越习惯使用电子支付的方式&#xff0c;数字支付方式的需求也在不断增长。然而一些犯罪嫌疑人却看到了可乘之机&#xff0c;近日&#xff0c;山东菏泽曹县警方破获了一起利用数字人民币&#xff0c;实施诈骗的案件&#xff0c;受骗群众高达上万人。 家住山东菏泽曹…

基于浏览器渲染的组件测试

目录 为什么需要自动化测试 测试的类型 组件测试的方式 白盒测试 黑盒测试 灰盒测试 推荐的方案 Playwright 组件测试案例 Playwright 简介 playwright 架构图 BrowserContext 组件测试原理 组件引入 模型封装 组件渲染测试 组件 Props 测试 组件 Events 测试…

运维数字化转型:用数字化思维重塑运维体系(文末送书五本)

&#x1f935;‍♂️ 个人主页&#xff1a;艾派森的个人主页 ✍&#x1f3fb;作者简介&#xff1a;Python学习者 &#x1f40b; 希望大家多多支持&#xff0c;我们一起进步&#xff01;&#x1f604; 如果文章对你有帮助的话&#xff0c; 欢迎评论 &#x1f4ac;点赞&#x1f4…

基于Java学生请假系统设计实现(源码+lw+部署文档+讲解等)

博主介绍&#xff1a; ✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战 ✌ &#x1f345; 文末获取源码联系 &#x1f345; &#x1f447;&#x1f3fb; 精…

FDTD 时域有限差分数值模拟方法与应用,COMSOL 多场耦合仿真技术与应用

专题一&#xff1a;COMSOL多物理场耦合 &#xff08;一&#xff09;案列应用实操教学&#xff1a; 案例一 光子晶体能带分析、能谱计算、光纤模态计算、微腔腔膜求解 案例二 类比凝聚态领域魔角石墨烯的moir 光子晶体建模以及物理分析 案例三 传播表面等离激元和表面等离…

Cat.4网络DTU,稳定快速的数据传输神器

好兄弟们&#xff01;你们有没有遇到过&#xff0c;半夜在家睡得正香&#xff0c;突然领导一个电话干过来告诉你设备数据传输中断了&#xff0c;让你赶紧看看怎么回事的情况。简直让人崩溃&#xff01; 在现代工业和物联网应用中&#xff0c;数据传输的稳定性和速度对于设备的运…

Python-Inspect.exe-uiautomation-基本操作-获取微信群成员信息

文章目录 1.Inspect.exe2.uiautomation使用2.1.简介和安装2.2.获取微信群成员昵称2.3.常用控件类型2.4.比较通用的属性2.4.窗口常见操作2.5.常见鼠标和键盘操作3.总结1.Inspect.exe 检查 (Inspect.exe) 是一种基于 Windows 的工具,可以选择任何 UI 元素并查看其辅助功能数据。…

ASEMI代理光宝光耦LTV-5314资料,LTV-5314规格书

编辑-Z 在电子设备的设计和制造过程中&#xff0c;光耦合器是一种至关重要的组件。它们在电路中起到隔离作用&#xff0c;防止电流反向流动&#xff0c;从而保护设备免受损坏。其中&#xff0c;光耦LTV-5314是一种广受欢迎的光耦合器&#xff0c;以其卓越的性能和可靠的稳定性…

MaxCompute-批量导出项目空间的建表语句(DDL)

MaxCompute-批量导出项目空间的建表语句&#xff08;DDL&#xff09; 项目背景 最近需要做项目空间的数据备份&#xff0c;包括表结构&#xff08;建表语句&#xff09;&#xff0c;以便在系统出现问题时&#xff0c;或者数据丢失时进行恢复。 所遇问题 前面我介绍过MaxCom…

【算法】原地哈希与快速幂

文章目录 一、原地哈希二、快速幂2.1 指数无负数2.2 指数有负数 一、原地哈希 直接看例题&#xff1a;题目链接 题目描述&#xff1a; 给你一个未排序的整数数组 nums &#xff0c;请你找出其中没有出现的最小的正整数。 请你实现时间复杂度为 O(n) 并且只使用常数级别额外空间…