Jenkins

    @noneface  17 Aug 2018


Jenkins

Jenkins是一款由Java编写的开源的持续集成工具.
持续集成:持续集成是一种软件开发实践,即团队开发成员经常集成他们的工作,通过每个成员每天至少集成一次,也就意味着每天可能会发生多次集成。 每次集成都通过自动化的构建(包括编译,发布,自动化测试)来验证,从而尽早地发现集成错误。

所以在持续集成过程中,Jenkins的作用就是可以通过自动化的方式,跟踪代码仓库的某一分支,当产生新的commit提交到当前分支,则Jenkins会进行自动的构建,步骤包括编译、发布、自动化测试。

目前,我司使用Jenkins大部分的场景还只限于编译、发布,缺少单元测试、自动化接口测试,以至于无法再持续集成过程中,做到自动化测试。

Jenkins 发布/持续集成 过程

机器: 
    - Jenkins服务机器 A
    - 代码仓库 B
    - 部署环境 C

通常来说,会在Jenkins服务中配置:代码仓库访问权限,部署环境 ssh访问权限。

于是,当在代码仓库产生一次变更时,

1. Jenkins 会通过 clone 一份最新的代码,从 B -> A Jenkins机器本地  (git clone)
2. Jenkins 在本地进行编译、测试,通过后将最新的代码 从 A -> C 到部署环境(ssh方式  scp)
3. Jenkins 向部署环境C 发布代码后,通过运行环境命令,对部署环境进行重启(使用最新的代码)

海外/跨云发布

由于当前业务场景存在跨境业务,所部署的机器,也存在不同的云服务器上,导致在 A->C 过程中(Python项目、源码、不存在编译

使用 scp 之类的命令,进行文件传输,并且跨云网络延时问题,导致发布时间过长。

所以,在进行发布、构建过程中,在第 2 步时,先在Jenkins 机器上,将测试通过后的代码进行 tar 打包压缩,发送到 C 部署环境机器上

于此同时,在完成 build 之后,向部署环境执行 tar 解包解压操作,之后进行重启。

通过此流程,优化发布时间。从原来每次发布耗时 20min -> 1min

整体流程

代码仓库设置

show

构建过程

show


Follow your heart  |   nonefacesay@gmail.com