什么是持续集成(Continuous integration)
提出者Martin Fowler本人对持续集成是这样定义的:持续集成是一种软件开发实践,即团队开发成员经常集成他们的工作,通常每个成员每天至少集成一次,也就意味着每天可能会发生多次集成。每次集成都通过自动化的构建(包括编译,发布,自动化测试)来验证,从而尽快地发现集成错误。许多团队发现这个过程可以大大减少集成的问题,让团队能够更快的开发内聚的软件。
随着软件开发复杂度的不断提高,团队开发成员间如何更好地协同工作以确保软件开发的质量已经慢慢成为开发过程中不可回避的问题。尤其是敏捷开发(Agile) 在软件工程领域越来越红火,如何能再不断变化的需求中快速适应和保证软件的质量也显得尤其的重要。
持续集成正是针对这一类问题的一种软件开发实践。
持续集成的核心价值在于:
- 减少风险,减少重复过程
- 任何时间、任何地点生成可部署的软件
- 增强项目的可见性
- 建立团队对开发产品的信心
持续集成的原则
- 所有的开发人员需要在本地机器上做本地构建,然后再提交的版本控制库中,从而确保他们的变更不会导致持续集成失败。
- 开发人员每天至少向版本控制库中提交一次代码。
- 开发人员每天至少需要从版本控制库中更新一次代码到本地机器。
- 需要有专门的集成服务器来执行集成构建,每天要执行多次构建。
- 每次构建都要100%通过。
- 每次构建都可以生成可发布的产品。
- 修复失败的构建是优先级最高的事情。
- 测试是未来,未来是测试
Jenkins
Jenkins 是一个开源项目,提供了一种易于使用的持续集成系统,使开发者从繁杂的集成中解脱出来,专注于更为重要的业务逻辑实现上。同时 Jenkins 能实施监控集成中存在的错误,提供详细的日志文件和提醒功能,还能用图表的形式形象地展示项目构建的趋势和稳定性。
1.为什么选择Jenkins
答案简单:因为免费,学习资料多。
2.准备
因为要与Github通信,所以需要准备一台服务器,该服务器能访问到Github,Github能访问到�它。
为了这个测试,我特地在搬 瓦 工VPS买了服务器,顺便介绍一下这个�高性价比的vps供应商,$2.99约合人民币18元每个月,可一键搭建。但是记得有个坑就是购买的时候一定要选好机房,之前买过洛杉矶的卡的要死,打条命令之后要等好久才显示,对它失去信心不想用它了,后来听一个朋友说亚利桑那州(Arizona)的机房挺稳定的,再给它一次机会,这次买了Arizona机房的果然速度挺快的
4.部署
邮件配置
设置有效URL和发送邮箱系统管理 >> 系统设置
注意SMTP服务器是系统管理员邮件提供商的服务器
安装Git插件
查找Git plugin,勾选,直接安装,重启Jenkins
Jenkins提供了很多优秀的插件,这里有一篇不错的介绍Jenkins Job相关插件的文章
如果你觉得已有的插件不能满足你的需求,可以自己开发(推荐:浅析Jenkins插件开发)
用户与安全
系统管理 >> 管理用户
可配合安全矩阵管理用户权限
1. 在jenkins上一个job,类型为 Freestyle project。
2. 在项目的配置中,Source选择 git,并输入Reponsitory的url。
备注:
Creentials: 添加github账号,添加的账号需要对repository有写的权限。
Branches to build: 选择一个监听的branch
3. Build选择 Execute Windows batch command。
输入command
python JenkinsTest.py
4. Build Now,保证能build成功,可以在Console Output中查看详细信息。
5. 在项目的配置中,选择构建触发器 "GitHub hook trigger for GITScm polling"。
6. 启动ngrok服务,获得本机8080端口的面向外网的url。
理解: 因为Jenkins的地址是http://localhost:8080,这个地址只能在本机访问,GitHub是访问不到这个网址的,所以要把本机的8080端口也能让外网访问的到暴露给外网。
通过这个网址下载ngrok: https://ngrok.com/download
打开ngrok.exe文件,运行 ngrok.exe http 8080,暴露出8080端口号。
注意: 这个只能8小时之内有效。
得到url: http://d01e74e1.ngrok.io
7. 在Jenkins中设置Jenkins的url,这个url是步骤6中得到的。
这一步也可以通过Override Hook URL来设置。
8. GitHub项目设置Webhooks
在Payload url中输入:http://d01e74e1.ngrok.io/github-webhook/
注意: 一定要有后面的 /github-webhook
9. Push一个commit测试
10. 在Github上查看webhook的状态
11. 此时Jenkins就应该产生一个build,在console里面查看log信息。
参考:https://www.jianshu.com/p/b2ed4d23a3a9