在公司使用 Jenkins 软件已经有一段时间了,走了很多弯路,但也积累了一些经验,可以和大家分享一下。
我们来一起搭建Jenkins环境。首选你需要安装好JRE/JDK和Tomcat。由于这不是本文的重点,所以关于其安装过程就跳过不谈。
我实验用的服务器操作系统为64位版本的CentOS 5.4,安装JDK 版本为 64位的 1.6.0;安装Tomcat版本为 7.0.14。
题外话,为了解决可能出现的 OutOfMemoryError: PermGen space 问题,需要修改一下$TOMCAT_HOME/bin/catalina.sh 文件,添加一句
JAVA_OPTS="-Xms512m -Xmx768m -XX:MaxNewSize=256m -XX:MaxPermSize=128m"
在Jenkins 官方网站(http://jenkins-ci.org/)下载最新版本war包。拷贝到 $TOMCAT_HOME/webapps 下(不用解压),删除 webapps 下其他目录(当然也可以不用Tomcat直接启动Jenkins,因为他已经内嵌了Jetty)。
现在我们创建一个用于存放所有Jenkins数据的目录,比如 /jenkins。添加环境变量 JENKINS_HOME 到 /etc/profile 中指向这个路径。
export JENKINS_HOME=/jenkins
现在我们可以启动 $TOMCAT_HOME/bin/startup.sh 来启动Jenkins了,但这样每次启动太麻烦,我们把它做成一个服务来启动。
在 /etc/init.d/ 下创建一个 jenkins 文件
# vi /etc/init.d/jenkins
内容如下,如果你希望用指定用户启动,请修改 JENKINS_USER=root 的值,但要记得更改 /jenkins 以及Tomcat 目录的访问权限。另外其他环境变量例如 JAVA_HOME 和 TOMCAT_HOME 要根据你实际JDK和Tomcat的安装目录修改。
#!/bin/sh
#
# Startup script for the Jenkins Continuous Integration server
# (via Jakarta Tomcat Java Servlets and JSP server)
#
# chkconfig: - 85 15
# description: Jakarta Tomcat Java Servlets and JSP server
# processname: tomcat
# pidfile: /var/run/tomcat.pid
# Set Tomcat environment.
JENKINS_USER=root
LOCKFILE=/var/lock/jenkins
export PATH=/usr/local/bin:$PATH
export HOME=/jenkins
export JAVA_HOME=/usr/local/jdk1.6.0_25
export JENKINS_BASEDIR=/jenkins
export TOMCAT_HOME=/usr/local/tomcat-7.0.14
export CATALINA_PID=$JENKINS_BASEDIR/jenkins-tomcat.pid
export CATALINA_OPTS="-DJENKINS_HOME=$JENKINS_BASEDIR/jenkins-home -Xmx512m -Djava.awt.headless=true"
[ -f $TOMCAT_HOME/bin/catalina.sh ] || exit 0
export PATH=$PATH:/usr/bin:/usr/local/bin
# See how we were called.
case "$1" in
start)
# Start daemon.
echo -n "Starting Tomcat: "
su -p -s /bin/sh $JENKINS_USER -c "$TOMCAT_HOME/bin/catalina.sh start"
RETVAL=$?
echo
[ $RETVAL = 0 ] && touch $LOCKFILE
;;
stop)
# Stop daemons.
echo -n "Shutting down Tomcat: "
su -p -s /bin/sh $JENKINS_USER -c "$TOMCAT_HOME/bin/catalina.sh stop"
RETVAL=$?
echo
[ $RETVAL = 0 ] && rm -f $LOCKFILE
;;
restart)
$0 stop
$0 start
;;
condrestart)
[ -e $LOCKFILE ] && $0 restart
;;
status)
status tomcat
;;
*)
echo "Usage: $0 {start|stop|restart|status}"
exit 1
esac
exit 0
安装如下命令将Jenkins做成服务启动(以后启动和停止Jenkins也使用 service 命令)。
# chmod a+x /etc/init.d/jenkins
# chkconfig jenkins on
# service jenkins start
现在访问这台服务器 http://172.16.12.80:8080/jenkins/ 可以看到 Jenkins 已经启动了。
我们打算在这台服务器上装个 Nginx 做一下反向代理,为了方便,我选择使用RPM包安装的方式:
# wget http://nginx.org/packages/rhel/5/x86_64/RPMS/nginx-1.0.9-1.el5.ngx.x86_64.rpm
# rpm -ivh nginx-1.0.9-1.el5.ngx.x86_64.rpm
新建一个配置文件 /etc/nginx/conf.d/jenkins.conf 内容如下(注释掉的两行是打印日志用的,一般情况下不用打开):
server {
listen 80;
server_name ci.abc.com;
#access_log /var/log/jenkins_access_log main;
#error_log /var/log/jenkins_error_log debug_http;
client_max_body_size 60M;
client_body_buffer_size 512k;
location / {
proxy_pass http://localhost:8080;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
现在启动 Nginx
# service nginx start
我们先修改一下本机的 hosts 文件(C:\Windows\System32\drivers\etc\hosts)添加:
172.16.12.80 ci.abc.com
这次我们在浏览器里输入 http://ci.abc.com/jenkins 可以看到页面了!
到这里基本的Jenkins环境已经搭建好了

- 大小: 58.3 KB

- 大小: 58.9 KB
分享到:
相关推荐
本文将深入探讨编程经验中的关键点,结合“程序设计经验谈”这一主题,帮助读者更好地理解和应用编程技巧。 1. **代码可读性**:一个优秀的程序员始终注重代码的可读性,因为代码是给人读的,而不是机器。清晰的...
在谈到工具链时,戚俊介 分享了他使用 Jenkins 等工具的经验,并谈到了这些工具的优缺点。例如,他提到了 Jenkins 是内部用的最长时间的一个开源工具,但也提到了这些工具的维护成本高昂。 此外,戚俊介 也分享了他...
例如,使用持续集成/持续部署(CI/CD)工具,如Jenkins或Travis CI,可以自动构建、测试和部署源码,确保每次代码提交都符合质量要求。 资源管理同样重要。项目经理需合理分配人力、时间和其他资源,确保团队高效运作...
Java程序设计是一门涵盖广泛且基础扎实的编程学科,它为初学者提供了进入软件开发世界的通道,也为经验丰富的程序员提供了更多的工具和框架选择。在线开放课程作为一种灵活的学习方式,正日益受到全球学习者的欢迎。...
1. **C#基础** - C#的基础包括变量、数据类型、运算符、控制结构(如if语句、for循环和while循环)、函数等。理解这些概念是学习任何编程语言的基石。 - 推荐书籍:《C#编程指南》(C# Programming Guide)提供了...
欢迎来到GitHub Pages ,,,, ...加入jenkins经验 加入sdn项目 简历git版本管理 当地乳胶环境 Java学习 Java IO看黑马 Java并发看黑马 Java Casting...。有关重载和覆盖的更多详细信息 [Java
在“YYL资料收集”中可能包含了一系列介绍常用开发环境(如Eclipse、Visual Studio Code)、版本控制系统(Git)、调试器以及自动化工具(如Jenkins、Docker)的资料。例如,掌握版本控制系统能够帮助开发者有效地...
(集成:Java+Testng+Maven+Jenkins+ExtentReports+Retrofit2+Git) 前戏叨逼叨: 测试多年工作经验,很少有写文章、博客之类的东西。 其实我这人不爱去写博客之类的东西,更多的是靠脑子的总结。不是脑子好用,其实...