4007676280
云终端系列报道第七十期 - 持续集成实例 2016-09-01

炙伦云终端分享嘉宾:


标准化构建平台,持续交付跑起来


3.4 持续集成的实践示例。
    1. 选择 CI 工具
    实现持续集成的工具有很多,例如:Jenkins、Hudson、Travis CI、Build Bot、Strider等等。
    其中,Jenkins 是 CI 的主流工具,它的前身是 Hudson,我这里选用 Jenkins 为大家演示案例。
    首先要给大家介绍一下在 Jenkins 中的专业名词:
    1. Jenkins 里面的集成构建的基本单位是任务-Task;
    2. 每一次任务的运行,称之为构建-Build,同时会产生一个唯一的BUILD_ID;
    3. 你可以把若干个任务添加到一个视图中,进行归类。如下图:
    
    现在,让我们来看看任务里面的具体设置:
    2. 设置构建任务
    Jenkins 的构建任务分为8个模块,来支撑我们之前提到的持续集成的所有步骤,这里给大家介绍以下核心的模块:
    1General
    顾名思义,这里是设置任务的通用属性,这里简单介绍一下常用的参数:
    1.丢弃旧的构建
    如果想Jenkins只保留一定数量的构建历史,那么勾选“丢弃旧的构建”进行选择:


    2. 参数化构建过程?在构建任务中,可以使用自定义全局变量,常用的有选择变量、字符串变量等等:
    
    3.串联执行控制
    多个任务之间可以互相触发,串联执行构建,称之为上下游,对上下游的任务进行构建控制:
    
    2源码管理
    该模块是设定 SCM 地址和需要进行构建的代码分支,对于许多 SCM,Jenkins 都有插件支持,我在这里选用了 Git:
    
    在这里可以观察到一个任务只能对一个代码分支进行持续集成,在版本开发和分支管理策略上面就需要做好调整:
    1.主干开发模式比较适合目前的持续集成;
    2.推荐使用Git-Flow的代码管理,只需要对Develop分支和Master分支做持续集成,可以很方便地做较长版本发布周期的项目、持续集成和随时发布;
    我在这里不展开更多的细节,更多的版本分支管理和发布实践可以参考 IBM 开发文库:《Git 分支管理最佳实践》。
    PS:默认 Jenkins 只安装了Git插件,如果需要对其他的SCM进行持续集成,那么需要在“系统管理”-“管理插件”-“可选插件”中进行搜索和勾选安装;
    如果 Jenkins 服务器没有联网,还手动下载插件的.hpi安装文件,然后在“系统管理”-“管理插件”-“高级”中上传插件进行手动的安装,安装时注意自己解决依赖。
    3构建触发器
    触发器非常关键,是实现自动化构建的入口。一般构建触发器会有以下的种类:
    1.定时构建
    Jenkins的定时构建语法格式和Linux的crontab一样,只不过没有命令列,常见的有以下 2 种模式:
    1.Build periodically:不管源码是否发生变化,周期性地进行项目构建;
    2.Poll SCM:定时检查源码变更(根据SCM软件的版本号),如果有更新就checkout最新code下来,然后执行构建动作。
    2.依赖构建
    Jenkins 里面可以选择在任意的其他任务构建完毕后,触发当前任务的构建,当然也可以在“构建后操作”模块中触发其他下游的任务进行构建。
    3.触发构建触发构建一般有以下 3 种模式:
    1.Build when a change is pushed to GitHub:当前项目是GitHub项目时,可以勾选此构建,当产生Push操作时,可以定制GitHub上的事件,由GitHub来触发自动构建;
    2.Build when a change is pushed to GitLab:当前项目是 GitLab 项目时,可以勾选次构建,当产生 Push 操作时,可以定制 GitLab 上的事情,由 GitLab 来触发自动构建;
    3.通过Remote HTTP API 来触发当前任务的构建:由通过任意的方式,使用 HTTP请求JenkinsAPI接口,可以触发当前任务PROJECTNAME的构建:http://YOURHOST/jenkins/job/PROJECTNAME/build
    这是给用户自由定制触发条件和场合使用的。
    4. 手动构建
    这个就不需要解释了吧,大家手动点一下就好了。
    在这里,我给大家演示以下 GitLab 项目是如何通过Build when a change is pushed to GitLab来自动触发构建:
    
    
    4Pre Steps
    在进行构建之前你还有什么想要准备的,在这里编写 pre-build step。
    5Build
    顾名思义,在这里执行构建动作,一般的构建动作会包括:编译、运行单元测试,如果需要上传和部署,那么还需要打包。
    在这里,我给大家演示一下 Maven 项目的构建(mvn package 指令会经历 compile、test 等关键周期,因此编译、单元测试均均会运行):
    
    6Post Steps
    Post Steps 允许你根据构建的结果,来执行其他操作,构建的结果支持:
    1. Run only if build succeeds?
    2.?Run only if build succeeds or is unstable?
    3. Run regardless of build result
    
    7构建设置
    在这里,你可以发送邮件通知其他项目组的成员关于本次构建的结果:
    
    8构建后操作
    本次构建结束后,你还可以执行其他的操作,如下图:
    
    例如之前提到的触发其他任务进行构建,在这里勾选 Build other projects 即可:
    
    又例如,我们在构建成功后,自动上传和部署到开发或者测试环境,在这里设置一下构建后的操作即可:

上一页:云终端系列报道第六十九期 - 实现持续集成 下一页:云终端系列报道第七十一期 - 持续部署与持续反馈
推荐新闻 Recommended news
帮助中心
4007676280