在Jetty中部署Jenkins

Jenkins是一个用Java编写的开源持续集成工具,是在2010年之后从Hudson中fork出来的项目,这次fork的原因是社区和Oracle公司之间的一些商标争论。目前已经有许多开源项目使用Jenkins做持续集成(当然一些其他的开源项目也有很多使用Jenkins),其中不乏一些非常著名的项目,如:
OpenStack: https://jenkins.openstack.org/ (很壮观的,里面有各种测试项目、测试机器、测试报告等)
Apache: https://builds.apache.org/ (这个也很壮观哦)
KDE: http://build.kde.org/
Jenkins: https://ci.jenkins-ci.org/ (当然Jenkins自己CI工具也是Jenkins了,哈哈)
在参与测试的OpenStack项目中,我们也用Jenkins在内部搭建了持续集成环境,主要用于 Nova/Quantum/Ceilometer 等几个子项目的持续集成。
原来搭建时,还是直接用”java -jar jenkins.war”类似这样(当然作为daemon)来执行的。今天,主要是简单了解了一下将Jenkins放到Jetty这样的Java Servlet container中运行。在搭建环境过程中遇到过几个小问题,也顺便记录一下吧。

1. Jetty 9.0.3 启动时的错误:

原因:Jetty 9 需要 JVM 1.7 的支持(我原来的JVM是1.6)
解决方案:使用Java 1.7即可。

2. 将jenkns.war复制到webapp目录后,启动Jetty,但jenkins访问出错,HTTP ERROR 503。
启动和关闭Jetty的命令为:

在浏览器中访问时,遇到的错误信息如下:

查看Jetty的log中,可以看到如下的错误信息:

原因:Jetty 8.1.0之后对安全性有了一些要求,需要显示注明安全域(security realm)。
解决方法:编辑(或新建) webapps/jenkins.xml 文件,添加如下配置。

另外,Jetty 自带的示例:webapps.demo/test.xml 中也有security realm相关的配置。
解决了这两个问题后,Jenkins示例URL:http://192.168.52.11:8080/jenkins/ 就可以正常访问了。

参考资料:

http://www.eclipse.org/jetty/documentation/current/what-jetty-version.html

http://stackoverflow.com/questions/9111759/http-error-503-accessing-jenkins-reason-service-unavailable

https://wiki.jenkins-ci.org/display/JENKINS/Jetty

master

Stay hungry, stay foolish.

3 Comments

发表评论

邮箱地址不会被公开。 必填项已用*标注

*