二、jenkins持续集成的操作步骤

根据持续集成的设计、代码从提交到生产、整个环境有以下几步。

提交

流程的第一步、是开发者向代码仓库提交代码。所有后面的步骤都始于本地代码的一次提交(commit)。

测试(第一轮)

代码仓库对commit操作配置了钩子(hook)、只要提交代码或者合并进主干、就会跑自动化测试。

测试的种类:

  • 单元测试:针对函数或模块的测试
  • 集成测试:针对整体产品的某个功能的测试、又称功能测试
  • 端对端测试:从用户界面直达数据库的全链路测试。

构建

通过第一轮测试、代码就可以合并进主干、就算可以交付了。

交付后、先进行构建(bulid)、再进行第二轮测试。所谓构建、指的是将源码转换成可以直接运行的实际代码、比如安装依赖、配置各种资源(样式表、JS脚本、图片)等等。

常用的构建工具如下:

  • jenkins
  • travis
  • codeship
  • strider

jenkins和starider是开源软件、travis和codeship对于开源项目可以免费使用。他们都会将构建和测试、在一次运行中执行完成。

测试(第二轮)

构建完成、就要进行第二轮测试。如果第一轮已经涵盖了所有测试内容,第二轮可以忽略,当然、这时构建步骤也要移到第一轮测试前面。

第二轮是全面测试、单元测试和集成测试都会跑,有条件的话,也要做端对端测试。所有测试以自动化为主,少数无法自动化的测试用例,就要人工跑。

需要强调的是、新版本的每一个更新点都必须测试到。如果测试的覆盖率不高、进入后面的部署阶段后、很可能会出现严重问题。

部署

通过了第二轮测试、当前代码就是一个可以直接部署的版本(artifack)。将这个版本的所有文件打包(tar filename.tar*)存档,发到生产服务器。

生产服务器将打包文件,解包成本地的一个目录、再将运行路径的符号链接(symlink)指向这个目录、然后重启应用。这方面的部署工具有ansible、chef、puppet等。

回滚

一但当前版本发生问题、就要回滚到上一个版本构建的结果。最简单的做法就是修改一下符号链接,指向上一个版本的目录。