自动构建(CI)是敏捷开发中非常重要的一个环节,Jenkins是最常用的开源的自动构建工具,本文将实现使用Jenkin实现每日自动构建并发布到远程开发服务器上给客户进行演示。
1. 安装Jenkins
在Jenkins官网下载最新版的Jenkins(本文下载的版本是2.3.1),是一个war包,可以直接扔到tomcat的webapps目录下或其他Java Web容器中运行,也可以直接执行java命令进行安装,建议以第二种方式,程序独立并且可以自由设置。方法如下:
执行 java -jar jenkins.war --httpPort=8099 命令运行Jenkins,然后打开浏览器访问 http://localhost:8099 就可以运行Jenkins,非常简单。
上面的命令中 httpPort 用来设定端口,默认为8080,跟多的参数请访问 Starting and Accessing Jenkins。
需要注意的是,Jenkins 2.x要求JDK的版本必须是1.7及以上,否则无法运行。
Jenkins 2.x 首次安装运行增加了安全认证,根据屏幕提示访问指定的initialAdminPassword文件内容,将里面的字符串输入验证之后才可以继续,第一次启动的时候需要等待系统初始化,然后根据向导来初始化系统,配置信息都放在了当前用户目录下的.jenkins目录中,也可以自定义目录。
如果想要Jenkins自动运行,Linux下直接将启动的命令放在/etc/rc.local中即可,Windows下面需要将其按章程服务,如果使用命令行运行的Jenkins,可以在Manage Jenkins下面点击的Install as Windows Service按钮进行安装:
执行的时候可以重新设置jenkins的目录,如果设置成新的目录之后默认的.jenkins目录就可以删除了。卸载的时候只要进入到数据目录,然后执行 jenkins uninstall 即可。
因为Jenkins会执行一些定时任务,所以需要比较大的内存,需要对web server分配足够的内存,如果是放在Java Web容器中的话在容器中设置,命令行的方式可以直接在命令行中增加参数,采用上面独立安装的方式的话,可以在数据目录下的jenkins.xml文件中设置,如下图所示:
为了提升运行的效率,Jenkins每次启动的时候会将配置信息读取到内存中,所以如果修改了Jenkins的配置信息的话,需要在Manage Jenkins下面点击 Reload Configuation from Disk,重新加载配置信息。
Jenkins以其拥有大量的插件而著称,接下来需要安装常用的插件,本文需要确保已经安装了如下插件:
Email Extension Plugin (邮件通知)
Deploy to container Plugin (部署到Java容器中的插件)
Publish Over SSH (远程Shell)
Maven Integration plugin (Maven集成,否则新建的时候没有Maven Project)
Monitoring (监控Jenkins所消耗的系统资源,如内存使用等)
在Plugin Manager中可以查看已经安装的插件,也可以通过在线的方式进行安装。
2. 对Jenkins进行配置
接下来在Global Tool Configuration中配置jdk和maven,见下图所示:
设置的时候可以直接让Jenkins在线安装,也可以设置成本机的路径。
3. 创建一个maven任务
回到主界面,点击左上角的New Item:
保存之后进入下一步,分别设置源代码管理,这里以SVN为例:
设置集成的方式,选中 Build periadically设置定时集成的表达式,规则和linux下的定时任务表达式规则是一致的:
设置项目的pom.xml文件(相对路径)和maven的命令:
上面 clean install 前面是maven的参数,分别表示指定profile、显示详细的错误信息、自动应答需要交互的流程和忽略测试。还可以加上 -U 参数强制更新Maven依赖包。点开下面的Advanced按钮之后可以设置MAVEN_OPTS等信息,主要设置jvm的一些参数,防止构建的时候出现内存溢出错误。
可以在此处设置一个针对当前项目的设置,也可以在Configure System设置中设置一个全局的配置:
经过这样设置保存之后,就可以进入欢迎页看到创建的项目了,然后点击最右边的 Build 按钮进行构建测试。在构建的时候可以点击项目的 Console Output 按钮查看控制台输出的日志,查看构建的过程。