Skip to content

  • 体验新版
    • 正在加载...
  • 登录
  • GitCode
  • 帮助文档帮助文档
  • Wiki
    • Docs
    • Ci
  • pipelines

帮助文档
帮助文档
  • 项目概览

GitCode / 帮助文档

通知 1799
Star 580
Fork 457
  • 代码
    • 文件
    • 提交
    • 分支
    • Tags
    • 贡献者
    • 分支图
    • Diff
  • Issue 44
    • 列表
    • 看板
    • 标记
    • 里程碑
  • 合并请求 1
  • DevOps
    • 流水线
    • 流水线任务
    • 计划
  • Wiki 89
    • Wiki
  • 分析
    • 仓库
    • DevOps
  • 代码片段
  • 项目成员
  • Pages
帮助文档
帮助文档
  • 项目概览
    • 项目概览
    • 详情
    • 发布
  • 仓库
    • 仓库
    • 文件
    • 提交
    • 分支
    • 标签
    • 贡献者
    • 分支图
    • 比较
  • Issue 44
    • Issue 44
    • 列表
    • 看板
    • 标记
    • 里程碑
  • 合并请求 1
    • 合并请求 1
  • Pages
  • DevOps
    • DevOps
    • 流水线
    • 流水线任务
    • 计划
  • 分析
    • 分析
    • 仓库分析
    • DevOps
  • Wiki 89
    • Wiki
  • 代码片段
    • 代码片段
  • 成员
    • 成员
  • 收起侧边栏
  • 动态
  • 分支图
  • 创建新Issue
  • 流水线任务
  • 提交
  • Issue看板

pipelines

最后修改来自于BaiXuePrincess 6月 10, 2021
页面历史

CI/CD 流水线

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

流水线包括:

  • 流水线任务,定义要做 什么。 例如,编译或测试代码的流水线任务。
  • Stages,定义何时 运行流水线任务。 例如,在编译代码的阶段之后运行测试的阶段。

流水线任务由 Runners 执行。 如果有足够的并发 runners,则可以并行执行同一阶段中的多个流水线任务。

如果一个stage中的所有 流水线任务都成功,则流水线将继续进行下一个 stage。

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

通常,流水线是自动执行的,创建后就无需干预。 但是,有时你还可以手动与流水线进行交互。

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

  • 一个build阶段,其流水线任务称为compile 。
  • 一个test阶段,具有两个流水线任务,分别称为test1和test2 。
  • 一个staging阶段,其流水线任务称为deploy-to-stage 。
  • 一个production阶段,其流水线任务称为deploy-to-prod 。

注意:如果你有从 CODECHINA 提取镜像的仓库,则可能需要在项目的设置 >仓库 >镜像仓库 >触发流水线更新镜像中启用流水线触发。

流水线类型

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

  • 基本流水线:在每个stage同时运行所有内容,随后是下一stage。
  • 定向非循环图流水线(DAG)流水线:基于流水线任务之间的关系,并且比基本流水线运行得更快。
  • 多项目流水线:将不同项目的流水线组合在一起。
  • 父子流水线:将复杂的流水线分解为一个父流水线,该流水线可以触发多个子流水线,这些子流水线都在同一项目中并以相同的 SHA 运行。
  • 合并请求的流水线仅针对合并请求:只在合并请求运行(而不是针对每次提交)。
  • 合并结果流水线:是合并请求流水线,其作用就像源分支的更改已被合并到目标分支一样。
  • 合并列车:使用流水线获取合并结果,以使合并一个接一个地排队。

流水线配置

在 CI/CD 流水线配置文件中为每个项目定义了流水线及其组件流水线任务和 stages。

  • 流水线任务是基本的配置组件。
  • Stages 是通过使用stages关键字定义的。

有关 CI 流水线文件中配置选项的列表,请参见《 CODECHINA CI/CD 流水线配置参考》 。

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

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

查看流水线

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

Pipelines index page

单击流水线打开流水线详细信息页面,并显示为该流水线运行的任务。在这里,你可以取消正在运行的流水线,在发生故障的流水线上重试流水线任务或删除流水线。

可以在/project/pipelines/[branch]/latest找到指向给定分支的最后提交的最新流水线的链接。 另外, /project/pipelines/latest会将你重定向到项目默认分支上最后一次提交的最新流水线。

你可以通过以下方式过滤流水线列表:

  • 触发者
  • 分支名称
  • 状态
  • 标签

手动运行流水线

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

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

要手动执行流水线:

  1. 导航到项目的 DevOps >流水线 。
  2. 单击运行流水线按钮。
  3. 在 运行流水线页面上:
    1. 在 运行分支或 tag 字段中选择要为其运行流水线的分支或 tag。
    2. 输入流水线运行所需的任何环境变量 。
    3. 单击运行流水线按钮。

流水线将按照配置执行流水线任务。

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

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

  • 运行 字段: my_branch。
  • 变量 部分:
    • Variable:
      • Key: foo
      • Value: bar
    • File:
      • Key: file_foo
      • Value: 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 ,都需要一个键和一个值。

向流水线添加手动交互

使用when:manual关键字配置的手动操作允许你可在流水线前进之前需要手动交互。

你可以直接从流水线图执行此操作。 只需单击播放按钮即可执行该特定流水线任务。

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

Pipelines example

在一个 stage 启动多个手动操作

可以使用"全部播放手动"按钮同时启动一个阶段中的多个手动动作。 用户单击此按钮后,将触发每个单独的手动操作并将其刷新为更新状态。

此功能仅可用:

  • 至少具有开发者访问权限的用户。
  • 如果阶段包含手动操作 。

删除流水线

在项目中具有所有者权限的用户可以通过以下方式删除流水线:单击 CI/CD >流水线以转到流水线详细信息页面,然后使用 删除按钮。

Pipeline Delete Button

警告:删除流水线将使所有流水线缓存失效,并删除所有相关对象,例如构建、日志、工件和触发器。 此操作无法撤消

流水线配额

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

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

如何计算流水线持续时间

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

每个流水线任务都表示为一个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 

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

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

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

  • 运行手动流水线(使用 Web UI或流水线 API )。
  • 运行预定的流水线。
  • 使用触发器运行流水线。
  • 在现有流水线上触发手动操作。
  • 重试或取消现有流水线任务(使用 Web UI 或流水线 API)。

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

Runners标记为保护只能保护分支运行的流水线任务,防止不可信代码在受保护执行和不小心被访问保护部署密钥和其它凭证。 为了确保打算在受保护的 runner 上执行的流水线任务不会使用常规运行程序,必须对它们进行相应标记。

克隆仓库

快速访问

  • 首页
  • 组织
    • 子组织
    • 申请入驻
  • 项目
    • 徽章
    • 批量编辑
    • 新建项目
    • 描述模板
    • 文件查找
    • 合并请求
      • 允许协作
      • 创建合并请求
      • Cherry-pick
      • 快进合并
      • 解决冲突
      • 还原
      • 评审及管理
      • Squash合并
      • 合并请求版本
      • 草稿
    • 项目成员
    • 导入
      • Github
      • URL
    • Releases
    • 代码仓库
      • 分支
      • Git属性
      • Blame
      • 文件历史记录
      • 仓库镜像
      • 保护分支
      • 保护Tag
      • Git LFS
      • 减少仓库大小
      • GPG签名提交
      • 文件编辑
      • WebIDE
    • 项目设置
    • 与群组共享项目
    • wiki
    • 代码片
    • Pages
      • Hugo
      • Mdbook
      • html
  • Issues
    • 机密Issue
    • 关联Issue
    • 截止日期
    • 看板
    • 操作Issue
    • 标签
    • 管理Issue
    • 里程碑
    • Issue排序
  • API
    • Runners Api
  • CI / CD
    • Pipelines
      • 流水线计划
      • 设置
    • 变量
    • Runners
    • .codechina-ci.yml
      • .codechina-ci.yml 参考
      • 语法验证
  • 用户
    • 举报用户
    • 用户账号
      • 登录日志
      • 用户权限
      • 个人访问令牌
      • 个人偏好
    • Notebook
    • 探讨
    • SSH密钥
    • 快捷键
    • Markdown
    • 电子邮件通知
    • 快速操作
      • 自动填充
    • 预留命名空间
    • 搜索
    • 时间跟踪
    • 待办事项
渝ICP备2023009037号

京公网安备11010502055752号

网络110报警服务 Powered by GitLab CE v13.7
开源知识
Git 入门 Pro Git 电子书 在线学 Git
Markdown 基础入门 IT 技术知识开源图谱
帮助
使用手册 反馈建议 博客
《GitCode 隐私声明》 《GitCode 服务条款》 关于GitCode
Powered by GitLab CE v13.7