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 保留