持续集成这个概念已经成为软件开发的主流,可以更频繁的进行测试,尽早发现问题并提示。自动化部署就更不用说了,可以加快部署速度,并可以有效减少人为操作的失误。
开发环境如下:
Jenkins原名是Hudson,官网地址是http://jenkins-ci.org/。建议直接下载最新版本。
这个软件的安装简单,直接取war包放到tomcat下,启动tomcat即可。
相应的工程配置会在~/.jenkins目录中。
另外提醒一下,建议把Jenkins安装在Linux上,这样就不会出现ssh等命令找不到的问题,否则还要想办法去处理。
安装好后直接访问“http://IP:端口/jenkins”即可进入主界面,点击“系统管理”->“管理插件”,首次进入都是空白的,要等1分钟左右才能看到内容。
在“可选插件”中找到“GIT plugin”安装,最下面有个安装完重启的勾选项,选中即可。
在“可更新”中找到“Mailer Plugin”选中并更新即可。另外如果想有更丰富的邮件内容,就去“可选插件”中安装“Email Extension Plugin”即可
默认就装了很多常用插件,比如Maven、Junit等等,如果使用感觉有问题可以尝试升级一下版本。
主界面点击“系统管理”->“系统设置”即可进入。重点配置以下内容:
在主界面直接“新建”,就会有一个新的项目。重点配置以下内容:
1.源码管理:
选择Git,填写“Repository URL”,并加上相应的“Credentials”,其中认证信息用私钥的话干脆直接把私钥内容填上去就好。
2.构建触发器:
这个地方要把“Build periodically”和“Poll SCM”都选上,时间格式都填写成一样的即可,比如“H/15 ”,下面会有个具体执行时间的提示,Build动作会自动比Poll延迟3分40秒,这个设定还是很合理的。
3.构建:
增加两个构建步骤,分别是“Execute shell”和“Invoke top-level Maven target”,注意先后顺序,可以拖拽摆放的。
脚本执行根据自己需要,比如我需要去修改数据库连接配置,官方建议是自己在工程里面写好脚本,这里直接调用,而不是在这写一个完整的脚本。
Maven构建就加上“clean test”即可,就是运行“mvn clean test”的命令。
4.Publish Junit test result report:
在测试报告(XML)上加上“*/target/surefire-reports/.xml”即可,这样就会每次测试完自动找到测试报告,在Jenkins上即可在每个构建结构里面查看到。
5.邮件通知:
在构建后增加“Editable Email Notification”,填写邮件的接受者、内容格式可以直接用全局变量,重点是配置一下发送触发条件。
经过以上配置进行一次构建就会发现,Jenkins可以看到太多内容了,包括pull到的源码,所以非常有必要增加权限控制。
进入“系统管理”->“Configure Global Security”中进行如下步骤:
这里我没有让Jenkins每次测试都去部署,一方面是考虑到单元测试基本已经满足需要了,另一方面因为测试太频繁了,一直部署也搞得Stage测试环境要经常重启,反而影响正常的人工测试。
所以自己写了个脚本,在必要的时候去运行一下去自动完成整个部署工作。
#!/bin/sh
# update code
git pull
# package
mvn clean
mvn package -Dmaven.test.skip=true
# deploy
WAR=`ls target | grep war`
TOMCAT=/home/test/apache-tomcat-6.0.41
mv target/$WAR $TOMCAT
cd $TOMCAT
# invoke another deploy script
sh deploy-war.sh $WAR webapps