学无止境
搭建持续集成首先要了解什么是持续集成,带着明确的目标去搭建持续集成环境才能让我们少走很多弯路。持续集成(Continuous integration)简称CI,是一种软件开发的实践,可以让团队在持续集成的基础上收到反馈并加以改进,不必等到开发的后期才寻找和修复缺陷。当然要明白的是持续集成环境的搭建也不是一劳永逸的,随着软件项目复杂度的增加,持续集成的环境同样要加以维护以确保集成环境的可靠性。
持续集成的重要要素:1.统一的代码库。
2.CI服务器
3.自动化测试和构建的脚本
4.Slaves
持续集成的流程:CI服务器控制持续集成的整个过程,轮询代码库更新,根据预定义的脚本进行项目的构建,服务器将任务分配到Slave端。这就是整个持续集成的过程,我们需要根据我们的项目需求,制定好一个完善的持续集成方案,然后根据方案选择CI服务器和版本管理软件,我们的项目选择了Jenkins+Github的持续集成环境,这也是我要主要和大家讲述的。
为什么要选择Jenkins?
Jenins是现在非常流行的持续集成CI服务器,这与它的前身Hudson也有着很大的关系,Jenkins易于安装,不需要数据库的支持,直接通过Web界面进行配置,而且集成了RSS/Email的通知机制,支持分布式构建,具有丰富的插件,这些都是Jenkins相比其他持续集成服务器的优势所在。
对于版本控制软件的选择要看项目需要了,可能是SVN也可能是Git,一般来说Jenkins都有提供插件支持,下面讲解一下Jenins+Github持续集成环境搭建的细节。
这个持续集成环境构建的主要流程就是Jenins会在后台运行,轮询版本控制的存储库,当发现版本库出现变更,就会通过预定义的构建脚本进行项目的构建,Jenkins会根据项目需求将构建的任务分配到Slave端。一般的项目构建过程主要分为自动化编译和自动化测试两个阶段,这同样是你脚本发挥作用的阶段。
1.Jenkins安装
进入Jenkins官方网站下载最新的Jenkins,Jenkins提供war包的下载和各种操作系统的安装文件,选择war包即可。Jenkins的启动方法有两种:第一种是使用tomcat直接打开,就是把jenkins.war放入tomcat下的 webapps目录下,当启动jenkins时,就会自动在webapps下建立jenkins目录。然后再浏览器的地址栏输入http://localhost:8080/jenkins另一种方法要确保系统中安装了jdk,并且配置了环境变量,检测方法就是在命令行输入java回车后有多行的命令符提示。直接在命令行输入java -jar jenkins.war即可启动jenkins,默认会运行在8080端口,切换到浏览器的地址栏输入http;//localhots:8080,localhost可以改成ip地址。看到Jenkins的页面说明jenkins已经部署成功了。
2.插件安装
在"系统管理-<插件管理"下可以看到Jenkins缺省安装了CVS,Subversion,Maven和SSH,这些主要是版本控制的软件的相应插件,不过我们使用的是GitHub进行版本控制,所以要在可选插件中选择安装Git plugin和GitHub plugin插件,安装之后重新启动就可以看到新的插件已经生效。
3.环境配置
进入"系统管理-<系统设置"设置Jenkins的相关参数。主要是设置Git和GitHub插件的参数,在Git下的Path to executable一栏添加本机的git.exe的路径,在Git plugin下的添加本地Git的user.name和user.email的信息,在GitHub Web Hook下添加GitHub账户的相关信息。如果想要使用邮件的功能,需要在邮件通知的一栏添加SMTP服务器和邮箱的相关信息,添加后点击Test的按钮测试一下能否正常发送邮件,这一功能可以在后面的项目中使Email Notification功能得以正常使用。
4.构建项目
点击"新Job",输入"任务名称",选择"构建一个自由风格的软件项目",点击"OK"。系统自动进入"任务配置"界面。
5.配置构建方法
在GitHub project中输入git地址。
在"源码管理-<Git"下的Repository URL输入Repository的Git地址(PS:可以选择分支)。
在"构建触发器"中选择"Build when a change is pushed to GitHub "和"Poll SCM ",这两项的作用分别是当GitHub有版本库更新时触发Jenkins进行构建和定期检查版本库是否有更新,如果有更新则触发Jenkins进行构建。这里要注意Schedule语法,例如"*/2 * * * *"表示每隔2分钟检查一次。
点击增加构建步骤,选择Execute Windows batch command,并输入"%VS10COMNTOOLS%..\IDE\devenv.com" "%WORKSPACE%\Test.sln" /Build "Debug|Win32",devenv.com是MSVC提供的命令行构建工具,这里的"%VS10COMNTOOLS%..\IDE\devenv.com"为devenv.com的路径,如果没有配置响应的环境变量,构建的时候就会找不到路径,所以可以用devenv.com的实际路径代替。在"构建后操作"中可以添加发送邮件的相关信息。
点击保存,项目的配置就完成了,点击立即构建,Jenkin就会从github上将代码clone下来,这里我在github上存放了一个HelloWorld的vs项目,所以我的命令行为"C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\devenv.com" "%WORKSPACE%\HelloWorld\HelloWorld.sln" /Build "Debug|Win32",然后自动编译项目,如果构建成功会是蓝色标记,如果构建失败会是红色标记。
构建完成后可以在项目中看到项目构建的具体信息,如工作区、变更集和每次构建的控制台输出等。这就是一个基本的基于Jenkins和GitHub的持续集成环境的搭建。
Tips: 1.对于刚接触Jenkins的同学可能有很多需要配置的地方不知道要怎么填,这时可以点击每一个填空后的?,就会弹出详细的提示。
2.官方的wiki是很好的入门教程
https://wiki.jenkins-ci.org/display/JENKINS/Home
3.多多实践,多多查看Jenkins配置的使用方法~~
以上我说的方法都是比较简单的方法,可以方便你快速进行搭建,Jenkins的搭建有很多种方法,例如使用Tomcat,Java web等等,我在资源栏上传了一本英文版的介绍Jenkins的书,是官方推荐的书籍,讲的很详细,需要的可以去下载。另外Jenkins相关的资料非常少,想要快速解决自己遇到的问题的话可以去freenode的#jenkins这个频道,里面有挺多jenkins方面的专家,遇到一些不懂的问题或者是你不知道是否能实现的问题他们都能给你提供很好的建议。
更多
0
- 上一篇实习第3天
- 下一篇Windows批处理命令教程
顶
0
踩
0
主题推荐
猜你在找
查看评论
我在用emma生成代码的coverage报告时遇到过这种现象,但原因是与jenkins无关的,能具体说一下你的情况吗?
请问你有没有遇到变更集中文乱码的问题~~
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
全部主题
Java
VPN
Android
iOS
ERP
IE10
Eclipse
CRM
JavaScript
Ubuntu
NFC
WAP
jQuery
数据库
BI
HTML5
Spring
Apache
Hadoop
.NET
API
HTML
SDK
IIS
Fedora
XML
LBS
Unity
Splashtop
UML
components
Windows Mobile
Rails
QEMU
KDE
Cassandra
CloudStack
FTC
coremail
OPhone
CouchBase
云计算
iOS6
Rackspace
Web App
SpringSide
Maemo
Compuware
大数据
aptech
Perl
Tornado
Ruby
Hibernate
ThinkPHP
Spark
HBase
Pure
Solr
Angular
Cloud Foundry
Redis
Scala
Django
Bootstrap
个人资料
- 访问:59232次
- 积分:945分
- 排名:第17018名
- 原创:30篇
- 转载:12篇
- 译文:0篇
- 评论:29条
个人主页
博客已迁移至个人主页,希望大家支持~
文章搜索
文章分类
- cocos2d-x(10)
- C++(4)
- 读书笔记(1)
- Installshield(6)
- 实习随笔(14)
- Jenkins(3)
- windows批处理(2)
- Git(2)
- Android基础教程(0)
文章存档
展开
阅读排行
- 构建基于Jenkins + Github的持续集成环境(5846)
- Cocos2d-x 内存管理(4414)
- 如何使用IRC(2738)
- 实习第5天(2407)
- 实习第16天(2211)
- 实习第1天(2203)
- 实习第9天(2196)
- 实习第28天(2187)
- 实习第3天(2081)
- Jenkins:VS项目的自动化编译(2041)
评论排行
- Cocos2d-x 内存管理(8)
- 实习第1天(4)
- 实习第28天(4)
- Cocos2d-x学习笔记(4)- 触摸反馈(3)
- 如何使用IRC(2)
- 构建基于Jenkins + Github的持续集成环境(2)
- InstallShield打包的setup文件命令行参数(2)
- InstallShield自定义安装界面(2)
- C++内存分配(2)
- 实习第46天(0)
推荐文章
最新评论
阳光在冬季
:@forcj:iss脚本是录制生成的,可以在录制结束的时候得到。当然自己也可以写,语法比较简单。
forcj
:iss脚本里面怎么写呢
spring1990
:很好,谢谢楼主分享
ruf
:给个实例看下吧:cocosObj *pxx = cocosXXX::xxx(); (假设此时引用为1...
ruf
:至于retain操作,你想存储一个引用,你想要保证你这里有一份引用,在别人释放的时候不被释放,当然要...
ruf
:不推荐使用他自动内存管理?是你没明白他的好处,下面的解释未必完全正确,我只是刚接触cocos2d-x...
阳光在冬季
:@wonderkai:嗯,这里确实是我表达的问题,其实是想说新创建一个对象的时候会加入到自动释放池,...
wanwanwanwang7881041
:2楼正解
Colin-Liao
:应该是create()的对象才是加入到自动释放池,而new的对象不会在自动释放池中出现除非手动加入
chchpd
:你好,这段时间也在看cocos2d的内存管理,能否给讲讲你的cocos2d-x内存管理的控件的思路啊...
京 ICP 证 070598 号
北京创新乐知信息技术有限公司 版权所有
江苏乐知网络技术有限公司 提供商务支持
Copyright © 1999-2014, CSDN.NET, All Rights Reserved