快速使用持续集成

持续集成是什么

持续集成是软件工程中的一种工作实践,旨在对每次提交的代码实现不断进行自动化的单元测试、编译构建、部署等系列动作。

想象一个最原始的软件工程场景,小明作为一名测试,他首先需要等上游的开发向代码仓库里提交完数次代码。等到约定的时间点后,小明跟开发打了声招呼,说今天要测的代码就截止到现在了。接着小明从仓库里把代码下载至本地,手动执行预先写好的编译脚本,盯着日志输出,要是不能过编译就及时在 IM 上打回给开发;跑完编译,小明再手动执行预先写好的测试脚本,盯着日志输出,要是有报错也要及时通知;如果今天进展顺利,那么小明就可以把当前的代码版本交给运维进行下一步工作;如果遇到报错,不确定修复耗时,那为了稳妥起见,需要推迟到明天再测一遍。在这个场景中,如下图所示,小明作为一名测试的基本工作用颜色框了出来。

就这样日复一日,有一天小明突然意识到,其实他一直在做的都是重复性劳动。既然各种测试、编译命令都是事先写好了的,那么他完全可以请一个机器人当管家,由机器人管家代劳他一直以来所重复的手动工作,这样子小明只需要写一个控制脚本,告诉机器人管家行动的步骤和流程。这样的工程实践带来更多优势,不仅小明可以把精力专注在测试质量上,而且对于整个团队而言,他们也不再被某个固定时间点所约束,开发只管提交代码即可,机器人可是全年无休、兢兢业业的。

这就是对“持续集成”的简单理解,在这个场景中,如下图所示,上一幅图的颜色框字已经被机器人管家接管,换了个颜色,可以看出机器人还可以承担更大的责任。

「CODING 持续集成」是什么

持续集成工具的领域中百花齐放,其中有一个集大成者的开源项目——Jenkins,「CODING 持续集成」基于 Jenkins 提供服务和能力,并做了大量优化工作。所以在这里,配置持续集成所用的脚本,即意味着给 Jenkins 写脚本,它有自己的名字——Jenkinsfile。Jenkinsfile 定义了持续集成中的工作流水线(pipeline),其实现对步骤的流式化封装和管理。流水线可以顺序执行,也可以并行执行。

每一次的目标代码变动都会触发「CODING 持续集成」按照 Jenkinsfile 里的流水线自动化执行一次。

 

使用「CODING 持续集成」

开启代码仓库

请阅读「快速使用代码仓库」一文。

初始化持续集成

进入项目,在左侧栏选择【持续集成】进入欢迎页面。点击【开始持续集成】初始化持续集成。

创建持续集成任务

按照提示,依次设置“任务名称”、“触发时间”、“触发方式”以及“通知提醒”。在这里,我们选择当代码仓库里 master 分支的代码有更新时触发即可。

选择持续集成过程(Jenkinsfile)模板

在这里,页面提供了 3 种适用于不同场景的模板选项。我们选择最基本的“简易模板”即可,点击确认选择。

配置持续集成过程(Pipeline)

我们在这个页面配置持续集成的详细过程,也是在编排流水线(pipeline)。

这里默认显示的是“图形化编辑器”,提供了可视化、易上手的编排工具。

左边展示的是流水线,按照简易模板分成了“开始”、“检出”、“构建”、“测试”以及“部署”共 5 个阶段。从左往右是它的执行顺序。

流水线上每一个阶段具体的执行命令都可以自定义,选中某个阶段,在右边可以对选中的阶段进行更详细的步骤配置。

比如先选中“构建”阶段,然后在右边的配置界面中点击第 2 个步骤“执行 Shell 脚本”,即可以看到这个步骤执行的具体命令。

可以看到,这个步骤执行的命令是docker version,即输出当前环境中 docker 的版本。

配置好自定义的阶段和步骤后,点击“开始持续集成”触发第一次构建。

查看构建

触发构建后,页面会跳到“构建记录”。如图所示,这一条构建记录即是我们刚才触发的。在这里可以看到构建的状态、触发信息、持续时长等信息,还可以进行删除等操作。由于我们使用的是系统默认模板,所以构建成功。

点击构建记录,我们可以查看流水线上每一个阶段的成功与否,每一个步骤命令具体的执行效果和日志。

比如我们选中“构建”阶段,点击第 2 个步骤,它执行的命令是docker version。可以看到,下面的输出是当前环境 docker 的版本信息,符合预期。

恭喜!你成功地运行了第一次持续集成,并对其中的过程配置、查看构建等有了基本的了解。接下来,你还可以查看这次构建的“改动记录”、“测试报告”以及“构建报告”。

下一步,试试在自己的代码仓库上应用持续集成吧。

相关文章