CentOS Jenkins安装与使用
jenkins是一个广泛用于持续构建的可视化web工具,持续构建说得更直白点,就是各种项目的"自动化"编译、打包、分发部署。jenkins可以很好的支持各种语言(比如:java, c#, php等)的项目构建,也完全兼容ant、maven、gradle等多种第三方构建工具,同时跟svn、git能无缝集成,也支持直接与知名源代码托管网站,比如github、bitbucket直接集成。jenk
·
jenkins是一个广泛用于持续构建的可视化web工具,持续构建说得更直白点,就是各种项目的"自动化"编译、打包、分发部署。jenkins可以很好的支持各种语言(比如:java, c#, php等)的项目构建,也完全兼容ant、maven、gradle等多种第三方构建工具,同时跟svn、git能无缝集成,也支持直接与知名源代码托管网站,比如github、bitbucket直接集成。
保存后,jenkins右上角会有一个注册链接,点击进去,注册一个用户,参考下图:
就会强制只能登录用户才能使用了。
到目前为止,1个简单的自动构建环境就搭建好了,很简单吧。
jenkins本身是用java语言开发的,所以安装jenkins的机器至少要有jdk,另外建议git、ant、maven、gradle、groovy等工具也一并安装好,方便与这些构建工具集成。
1、安装及启动
直接从
http://mirrors.jenkins-ci.org/war/latest/jenkins.war下载最新的war包,通过FTP工具将jenkins.war放到tomcat的webapps目录下,
进入到tomcat的bin目录下,启动tomcat
启动成功后,浏览http://192.168.71.128:8080/jenkins/,弹出如下页面,说明安装已经成功了,是不是很简单啊!
2、安全设置
默认情况下,jenkins允许匿名用户做任何事情,这也就意味着谁都可以使用jenkins进行发布,这显然不够安全,jenkins支持多种安全认证机制,下面演示最传统的用户名/密码模式如何设置:
参考下图,进入Configure Global Security界面
参考下图设置,上面的设置大概意思为采用jenkins内置的用户名、密码认证机制,同时允许用户注册,匿名用户有管理权(首次配置时,建议允许匿名用户有管理权限,以避免操作错误后,无法正常进入jenkins管理界面,等其它用户权限都设置好以后,再去掉匿名用户的管理权)。
保存后,jenkins右上角会有一个注册链接,点击进去,注册一个用户,参考下图:
注册用户,如下图
然后再进入Configure Global Security界面:
可以看到,用户列表多了一个jay的用户,而且有管理权限,可以尝试用jay的用户名登录一下,如果ok,就可以去掉匿名用户的管理权限了,一般情况下,个人建议去掉允许用户注册的勾选(实际应用中,一般都是提前建好所有用户名,很少允许发布系统随意注册),保存后,再次访问jenkins。
可以看到,用户列表多了一个jay的用户,而且有管理权限,可以尝试用jay的用户名登录一下,如果ok,就可以去掉匿名用户的管理权限了,一般情况下,个人建议去掉允许用户注册的勾选(实际应用中,一般都是提前建好所有用户名,很少允许发布系统随意注册),保存后,再次访问jenkins。
就会强制只能登录用户才能使用了。
3、系统配置
第一次进入里面没有数据,我们需要创建job,点击左上角的new job,在new job页面需要选择job的类型,Jenkins支持几种类型,我们选择“构建一个maven项目”,Job名为:pos-web,如图所示:
点击OK按钮后,进会进入详细配置界面,详细配置界面的配置项很多,不过不用怕,大部分使用默认配置就可以了,下面就说说我们需要修改的几个地方:
A、源码管理
因为我们使用SVN管理源码,所以这里选择Subversion,并在Repository URL中输入我们的SVN地址:https://xxx.xxx.xxx.xxx:xxxx/svn/POSCCSProj/trunk
输入SVN库的URL地址后,Jenkins会自动验证地址,并给予提示。
A、源码管理
因为我们使用SVN管理源码,所以这里选择Subversion,并在Repository URL中输入我们的SVN地址:https://xxx.xxx.xxx.xxx:xxxx/svn/POSCCSProj/trunk
输入SVN库的URL地址后,Jenkins会自动验证地址,并给予提示。
点击红色字体部分的enter credential链接,进入如下页面:
设置好访问SVN库的用户名和密码后,点击OK按钮,显示:
说明设置成功。点击Close按钮,返回之前的Source Code Management页面。此时不再有红色警告信息了。
B、Build
配置到这里,可能有人发现在Build配置节点,有红色错误信息,提示
Jenkins needs to know where your Maven2 is installed.
Please do so from the system configuration.
Jenkins needs to know where your Maven2 is installed.
Please do so from the system configuration.
如图所示:
(补充Goals and options :
clean install)
这是因为Jenkins找不到maven的原因,点击"system configuration",是system configuration的maven配置中添加maven目录就OK,如下图:
点击左下角的SAVE按钮,保存设置。
保存好所有配置后,我们第1个job就算是完成了。
保存好所有配置后,我们第1个job就算是完成了。
4、手动构建
在经过上面的配置后,回到Jenkins首页,在首页可以看到刚才添加的1个job,如下图:
点击某1个job后后面的"Schedule a build"图片手动构建,点击完后,会在左边的Build Queue或者Build Executor Status 显示正在构建的任务,在自动构建完后,刷新页面,就可以看到构建结果了,如何某个项目构建失败,点击项目后面的构建数字(从1开始递增)进入项目的"Console Output "可以查看项目构建失败的原因。当然我们也可以配置把构建失败的结果发到邮箱。
查询构建输出日记,点击如下图标出的“Console Output”
点击某1个job后后面的"Schedule a build"图片手动构建,点击完后,会在左边的Build Queue或者Build Executor Status 显示正在构建的任务,在自动构建完后,刷新页面,就可以看到构建结果了,如何某个项目构建失败,点击项目后面的构建数字(从1开始递增)进入项目的"Console Output "可以查看项目构建失败的原因。当然我们也可以配置把构建失败的结果发到邮箱。
查询构建输出日记,点击如下图标出的“Console Output”
输出结果如下
到目前为止,1个简单的自动构建环境就搭建好了,很简单吧。
5、自动部署
看完上面发现Jenkins配置真的很简单,几分钟就搭建好自动构建环境,但环境搭建好后发现1个问题,现在是能自动构建了,但是构建好的web.war都还是在Jenkins目录下,并没有发布到tomcat中,还需要手动copy过去?
这是个问题,不过别急,要达到自动部署的目的,需要安装1个Jenkins的部署插件。选择“系统管理”菜单的“管理插件”:
这是个问题,不过别急,要达到自动部署的目的,需要安装1个Jenkins的部署插件。选择“系统管理”菜单的“管理插件”:
选择“可选插件”,右上角搜索Deploy Plugin插件,点击下图中圈出的Deploy Plugin
点击最新版本
选择最新版本1.10,进行下载
在jenkins中安装Deploy Plugin插件,系统管理–>插件管理–>高级,上传插件中选择deploy.hpi进行上传
上传完成之后,自动进行安装
安装完成
安装完成之后,勾选“安装完成后重启Jenkins”,系统自动重启
此时,在插件管理的“已安装”Tab页,可以看到部署插件已安装完毕。
重新进入web的configure 配置界面,在最下面的“构建后操作”选择"Deploy war/ear to a container"选项
war file使用的是Jenkinsworkspace的相对目录,远程容器需要输入url、用户名、密码。
如果你部署的是集群环境那么可以添加多个容器来部署应用。
此时只要我们运行我们的任务即可将我们的应用发布到tomcat,记住这里要把应用服务器的防火墙关闭。
此时只要我们运行我们的任务即可将我们的应用发布到tomcat,记住这里要把应用服务器的防火墙关闭。
登录用户需要具备manager-script角色,否则会报“The username you provided is not allowed to use the text-based Tomcat Manager (error 403)”错误,则参考上一篇博文“
The username you provided is not allowed to use the text-based Tomcat Manager (error 403)”,则可能成功解决该问题。
WAR/EAR files:war文件的存放位置,如:target/test.war 注意:相对路径,target前是没有/的。
Context path:访问时需要输入的内容,如ofCard访问时如下:http://192.168.x.x:8080/ofCard/如果为空,默认是war包的名字。
Container:选择你的web容器,如tomca 6.x
Manager user name:填入tomcat-users.xml配置的username内容
Manager password:填入tomcat-users.xml配置的password内容
Tomcat URL:填入http://192.168.x.x:8080/
Deploy on failure:构建失败依然部署,一般不选择
注意:虽然这种部署方法可能会导致tomcat加载时出现卡死的现象。但是也是最简单的部署方式。如果卡死了重启下就好了,将tomcat的java内存参数调高可以解决这个问题。
最后不要忘记点击保存喔。
Context path:访问时需要输入的内容,如ofCard访问时如下:http://192.168.x.x:8080/ofCard/如果为空,默认是war包的名字。
Container:选择你的web容器,如tomca 6.x
Manager user name:填入tomcat-users.xml配置的username内容
Manager password:填入tomcat-users.xml配置的password内容
Tomcat URL:填入http://192.168.x.x:8080/
Deploy on failure:构建失败依然部署,一般不选择
注意:虽然这种部署方法可能会导致tomcat加载时出现卡死的现象。但是也是最简单的部署方式。如果卡死了重启下就好了,将tomcat的java内存参数调高可以解决这个问题。
最后不要忘记点击保存喔。
现在我们重新手动构建
构建成功后,查看输出日记,自动部署成功
打开远程tomcat服务器的webapps目录,发现war包已经过来了,但是不知道为什么war包名字是ROOT.war,而不是pos.war,很是奇怪,待这问题解决完成了再来更新。
以上方法虽然简单,但是实际项目中,我们不这么使用,我们经常使用Excete shell或者Send files or execute commands over SSH
下面代码是我们一个测试库的shell,仅供参考
pid_value=`netstat -nlp | grep :9999 | awk '{print $7}'| awk 'BEGIN{FS="/"}{print $1}'`
if [ ! $pid_value ]; then
echo "PID IS NULL"
else
echo "PID NOT NULL"
kill -9 $pid_value
fi
cd /app/pos/apache-tomcat-7.0.68/bin/
rm -rf catalina.out nohup.out
cd /app/pos/apache-tomcat-7.0.68/webapps/
rm -rf pos pos.war
mv /home/jay/.jenkins/workspace/pos/pos-web/target/pos.war /app/pos/apache-tomcat-7.0.68/webapps/pos.war
sleep 3
/app/pos/apache-tomcat-7.0.68/bin/startup.sh
6、邮件通知设置
在Recipients中输入收件人邮件地址,如果用多个收件人用“,”英文逗号隔开
更多推荐
已为社区贡献3条内容
所有评论(0)