Devops-蓝鲸篇-03-蓝盾流水线简单介绍

news/2024/12/16 11:25:04/

BKCI流水线快速了解

BK-CI 可以帮你快速实现一条持续交付流水线来编译、测试、部署你的应用,下面将通过教程和文档指南告诉你,怎么在 BK-CI 里配置和管理持续集成、持续交付(CI/CD)流水线。

下面为流水线的完整逻辑图:
在这里插入图片描述

Task(插件)

即一个单独的任务,如拉取 GitHub 仓库代码。
在这里插入图片描述

Job(作业)

可以运行在一个构建环境里,比如运行在 macOS;也可以作为不需要构建环境的普通任务调度编排。它有如下特性:

  • 由多个 Tasks(插件)组成
  • 一个 Task 失败,则该 Job 失败,其余 Task 将不会运行
    在这里插入图片描述

Stage(阶段)

  • 由多个 Job 组成
  • 同个 Stage 下的 Job 并行执行,且 Job 与 Job 之间相互独立
  • 当一个 Job 失败,则该 Stage 失败
    在这里插入图片描述
    这个Stage存在两个job:构建环境-macOS、无编译环境

Pipeline(流水线)

  • 由多个 Stage 组成
  • 同个 Pipeline 下的 Stage 串行执行,一个 Stage 失败,将不会执行后续 Stage
  • 当一个 Stage 失败,则该 Pipeline 失败
    在这里插入图片描述

Materials and Triggers(材料和触发)

Materials(源材料)

流水线执行就像做饭一样,需要材料(米),有了材料,才能做出可口的饭菜。向流水线中添加了拉取代码库的相关插件后(Git、SVN),这个流水线就有了材料。

Trigger(触发)

即流水线构建的触发方式,目前包括:手动触发、定时触发、代码库事件触发以及远程触发。

其它

产出物

执行一次流水线构建,会有很多产出物出现,我们按照下面的维度进行了分类:

  • 构件(Artifact) 顾名思义,就是编译或打包之后产生的二进制文件,包括镜像、版本压缩包、IPA 包、APK 包等等,利用插件你可以将构件归档到指定的仓库中。
  • 代码检查报告
    如果你的流水线中包含了 CodeCC 代码检查任务插件,那么你的流水线就会多出这样一个代码检查报告页面,该页面数据会随着你的流水线构建执行而不断刷新。
  • 测试报告
  • 安装程序
  • 版本日志
  • 文档
    如果想在不同 Job 之间共享产出物,需要用到【Upload】和【Download】插件。

WORKSPACE

在构建机上工作目录,所有与构建机相关的插件执行时的相对目录,在如下这些需要路径插件中,需要的也是 WORKSPACE 下的相对路径。

节点

也称之为构建机,为了编译、测试或部署你的代码,你需要将至少 1 台 Agent 节点导入至 BK-CI,而随着团队规模的增长,这个数字将不断扩充。根据节点类型的不同,我们的任务也分为两类:

  • 直接运行在节点上
    你可以在添加 Job 时直接选择导入到 BK-CI 的私有构建机(包含 macOS、Windows、Linux),流水线会在运行到对应 Job 时将任务分配到该构建机上。
  • 运行在节点的 docker 内
    当你的节点操作系统是 Linux 时,Job 详情页的构建资源类型会多出一个选项:Linux 构建镜像。选择这个选项,流水线会在运行到该 Job 后,通过以下方式来充分利用你的节点 CPU、MEM 等动态资源:
  • 在分配到该 Job 的节点上运行 docker run 命令,将对应镜像启动后
  • 把 WORKSPACE 挂载至 docker 内来进行编译构建
  • Job 运行结束后,销毁该容器,WORKSPACE 保留

http://www.ppmy.cn/news/1555572.html

相关文章

C++中的接口继承和实现继承以及多态性与性能的平衡处理

接口继承 接口继承是指子类只继承基类的纯虚函数,即只继承基类的接口,而不继承基类的实现。子类必须实现基类中的所有纯虚函数,否则子类也将成为抽象类。在 C 中,接口继承主要通过抽象类来实现。抽象类是包含至少一个纯虚函数的类…

Django ORM – 多表实例

表与表之间的关系可分为以下三种: 一对一: 一个人对应一个身份证号码,数据字段设置 unique。一对多: 一个家庭有多个人,一般通过外键来实现。多对多: 一个学生有多门课程,一个课程有很多学生,一般通过第三个表来实现关…

Spire.PDF for .NET【页面设置】演示:向 PDF 文档添加页码

在 PDF 文档中添加页码不仅实用,而且美观,因为它提供了类似于专业出版材料的精美外观。无论您处理的是小说、报告还是任何其他类型的长文档的数字副本,添加页码都可以显著提高其可读性和实用性。在本文中,您将学习如何使用Spire.P…

游戏引擎学习第47天

仓库: https://gitee.com/mrxiao_com/2d_game 昨天我们花了一点时间来修复一个问题,但基本上是在修复这个问题的过程中,我们决定添加一个功能,那就是在屏幕上控制多个实体。所以如果我有一个手柄,我可以添加另一个角色&#xff0…

java agent-03-Java Instrumentation 结合 bytekit 实战笔记 agent attach

java agent 系列 java agent 介绍 java agent-02-Java Instrumentation API java agent-03-Java Instrumentation 结合 bytekit 实战笔记 agent attach java agent-03-Java Instrumentation 结合 bytekit 实战笔记 agent premain 拓展阅读 前面几篇文档,我们简…

⭐Redis - 手动实现分布式锁 Redisson 的使用

概述 定义:分布式系统或集群模式下,多进程或多节点之间 “可见” 并且 “互斥” 的锁机制 功能:确保同一时刻只有一个进程或节点能够获取某项资源的访问权 特点 互斥高可用多进程可见高并发 (高性能)安全性 (避免死锁问题) 常见的分布式锁 …

【软件工程】第八章·单元/集成测试程序

🌈 个人主页:十二月的猫-CSDN博客 🔥 系列专栏: 🏀软件开发必练内功_十二月的猫的博客-CSDN博客 💪🏻 十二月的寒冬阻挡不了春天的脚步,十二点的黑夜遮蔽不住黎明的曙光 目录 1. 前…

vue2-请求代理,动态target

当你在 Vue 2 项目中将 axios 的 baseURL 配置为 http://192.168.11.111:8762 时,所有请求都被认为是绝对路径请求,这种请求会直接发送到目标服务器, 跳过开发服务器的代理。 baseURL具体值 这就是为什么代理配置无法拦截 /exportPdf 的原因…