公司要上CI,确切的说,是我要上CI,不管别的项目组用不用,我的产品是必须用的。
CI的好处自不必多说。CI免费的工具,最常用的便是Jenkins,也就是hudson。
以前搭过环境,也用过,已经很顺手了。但这次依然遇到了不少新问题,总结如下:
1、svn中文目录问题,这个问题挺恼人的,搞了一下午,以前没有遇到过是因为老东家的svn里是不允许出现中文目录的。
现在的东家,很多项目都是有中文目录的,所以必须解决,试了各种方法后,发现,竟然是SVN插件的bug,遂更新之。
遇到类似问题,更新svn和Credentials插件即可
如果你的jenkins是部署在tomcat下的,请将tomat的server.xml编码给位utf-8
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" URIEncoding="utf-8" />
如果还是不行?
更改浏览器中字符集编码如更改chrome或者firefox中的字符集编码格式,由于svn服务器的字符集编码默认为utf-8,所以务必使这三者的字符集编码保持一致。当然最佳的方案是不要在svn中建立中文目录,一律使用英文,中文处理起来非常不方便。
2、使用tomcat部署jenkins时,可以将jenkins改名root,删除webapp下其他项目
localhost:8080即可访问。
很简单吧,但是在把tomcat安装为windows服务的时候,却遇到了问题,确切的说,这不是jenkins的问题,是我的问题。
使用tomcat 7.0.39版本免安装版本,解压后,进入安装目录下的bin目录下, 输入命令: service.bat install, 在cmd运行框中输入service.msc , 点击 tomcat7服务,启动失败!
为什么要将其安装为windows服务?
如果没有使用tomcat作为windows服务启动,而是手工启动(startup.bat)的话, jenkins在使用过程中经常会崩溃,提示out of memory。
现象分析:
1)win7的程序需要已管理员身份运行。这是问题的根本原因
2)我使用win + R 的快捷键来运行cmd及service.msc,没有已管理员身份运行,是造成问题的根本原因
解决方案:
1)进入C:\Windows\System32目录,右键cmd,已管理员身份运行cmd
2)进入tomcat的bin目录下,执行命令 : sc delete tomcat7 删除tomcat7服务成功
3)执行命令 : service.bat install , 安装tomcat7服务成功
4)运行service.msc,查看服务,发现以前的“tomcat7”服务已没有了,新的服务名称位"Apacha tomcat7"
3、如果在tomcat中部署,局域网内不能访问jenkins
请关闭或配置防火墙。让我痛心疾首啊,排查了老半天
4、找不到父项目资源?我在Eclipse里构建还好好的?现在依然好好的
在jenkins中,任务名必须和项目名一致,否则子项目可能会找不到父项目中的资源文件。
5、最后这个奇葩的问题,不是我遇到的,但放在这里,让大家引以为戒!
配置好svn后执行jenkins job构建信息始终是:
org.tmatesoft.svn.core.SVNException: svn: E195012: Unable to find repository location for ‘svn://se-repo.twi1.electronics.ruag.com/repos/exconbasis/tags/Release4.1/4.1.2.8‘ in revision ‘5‘842‘
但是当前的版本库根本不是‘5842’而是‘6874’,这让人非常纳闷,jenkins为什么会去这个库取文件,排查了一整天,总算找到问题,
https://issues.jenkins-ci.org/browse/JENKINS-3342 中提到
when was the branch created? I‘m guessing the error message may actually be correct (that path did not exist at revision 12430), and the problem here is why is it trying that revision? can you check the clock difference between hudson server and svn server?
由于jenkins所在的服务器系统时间和svn服务器的系统时间根本不一致,导致出错,更改完jenkins服务器时间后就解决了此问题。现在还不能确定jenkins是否通过系统时间去计算svn服务器revision版本。
6、最后再额外送大家一个小礼物,安装Local插件,可以使jenkins瞬间支持中文,如果想练习英文,该插件也能搞定哦,总比官方汉化版一半英文一半中文舒服。
公司CI是我搭的,没人用,想推广个东西还是蛮费劲的,你们不用,我自己的项目用,一定让你们看见优势,今天早晨就收到一封构建失败的报告,窃喜,等着瞧……