【转】持续集成工具Jenkins结合SVN的安装和使用

一、引言

在日常的开发过程中,发布版本的流程一般都是手动部署,具体如下图所示:
在这里插入图片描述
我们需要把代码提交到SVN上,然后再把SVN上每个人提交的最新模块的代码拉下来,然后编译打包,最后手动上传到Tomcat上。这种方式很繁琐,也会浪费时间,如果有测试环境和生产环境,则效率更低。下面介绍一下Jenkins的使用和安装。

二、原理

Jenkins的思想就是自动化部署,“自动化”的具体体现在:当我们向版本库(SVN)提交新的代码后,应用服务器(Tomcat)就会自动从我们的SVN上拉去新的war包,然后重新部署,用户或测试人员看到的就是最新的应用程序。

Jenkins的原理图,如下所示:
在这里插入图片描述
搭建上述持续集成环境可以把整个构建、部署过程自动化,很大程度上减轻工作量。对于我们程序员的日常开发来说不会造成任何额外负担,自己把代码提交上去之后,服务器上运行的马上就是最新版本,一切都发生在无形中,是不是很方便。

三、安装

1、在安装使用Jenkins之前,要说一下所需要的所有开发环境

  • (1)版本控制子系统(SVN):SVN服务器、项目对应版本库、版本库中钩子程序(提交代码后,触发Jenkins自动打包并部署到应用服务器)
  • (2)持续集成子系统(存在Jenkins的服务器):JDK、Tomcat、 Maven
  • (3)Jenkins:主体程序、SVN 插件、Maven 插件、Deploy to Web Container 插件
  • (4)应用发布子系统(项目的运行环境):JDK、Tomcat

2、在安装使用Jenkins之前,还有知道环境的配置信息

  • (1)设置并记录一下版本库(SVN)的访问账号密码
    -
    在这里插入图片描述
    特别提示:svnserve.conf 文件中anon-access 一定要打开注释并设置为none

(2)设置并记录Tomcat 服务器(项目运行环境)的访问账号密码,配置文件位置:

这里要区分一下,一共有两个tomcat 服务器,一个是加载jenkins 的 tomcat 服务器,另外一个是 加载项目的 tomcat服务器,这边修改是运行项目的那个 Tomcat服务器。

tomcat/conf/tomcat-users.xml。

<role rolename="manager-gui"/>
<role rolename="manager-script"/>
<role rolename="manager-jmx"/>
<role rolename="manager-status"/>
<user username="tomcat_user" password="123456"
roles="manager-gui,manager-script,manager-jmx,manager-status" />

3、安装步骤

(1)Jenkins主体程序安装配置

  • 从 jenkins 官网上下载 jenkins.war,把Jenkins.war放在Tomcat解压目录/webapps目录下
  • 打开Tomcat 解压目录/server.xml修改URL地址的编码解码字符集tomcat/conf/server.xml
	<Connector port="8080" protocol="HTTP/1.1"	connectionTimeout="20000" 
		redirectPort="8443"  URIEncoding="UTF-8"/>
  • 启动Tomcat 并通过浏览器访问: http://192.168.222.232:8080/jenkins

注意:此处的Tomcat是运行Jenkins的Tomcat,不一定是项目所运行的Tomcat,这两个肯能不是放在一个Tomcat里。

(2)Jenkins安装
在这里插入图片描述
依照提示,查看 /root/.jenkins/secrets/initialAdminPassword 文件内容,填入文本框,这里填入的密文同时也是admin账号的密码。

在这里插入图片描述
选择哪种方式都不会对后续操作有太大影响,因为有需要的插件我们可以在后续有针对性的安装,在这里选择 “安装推荐的插件”。
在这里插入图片描述
打×的插件是由于网络传输导致的安装失败,后面再重新安装即可。注意:这个步骤中如果选择了安装插件则系统必须能够联网。

在这里插入图片描述
可以选择使用admin账户继续,后面有需要仍然有机会注册新账户。
在这里插入图片描述
开始使用Jenkins
在这里插入图片描述
点击系统管理
在这里插入图片描述
在这里插入图片描述
在自己练习时设置这样,避免自己忘记账号和密码,当然生产环境不能做这个设置,点保存,继续配置。
在这里插入图片描述
给 jenkins 配置 maven 和 JDK
在这里插入图片描述
在这里插入图片描述
点保存,继续配置。如果之前没有为 Jenkins 安装 Git、Subversion(SVN)或 CVS 插件,可以在 “系统管理” -> “管理插件” 中安装。
在这里插入图片描述
这里需要 增加插件 Deploy to container,后面发布时需要用到这个插件
在这里插入图片描述
安装插件时受到网络状况的影响有可能会失败,不要紧,多试几次,直到成功。

(3)Jenkins配置项目

回到主界面,创建一个任务
在这里插入图片描述
在这里插入图片描述
配置项目的 svn 地址和从 svn 拉取代码的 用户名与账号
在这里插入图片描述
特别注意:这里指定的URL地址必须恰好定位到pom.xml文件的上一级,因为Jenkins就是到项目根目录下查询pom.xml。
在这里插入图片描述
添加 svn 的账号和密码
在这里插入图片描述
指定SVN的账户密码,要去前面配置的一致!!!
在这里插入图片描述
设置完,一定要点add,再选一次。配置好的效果,如下图:
在这里插入图片描述
注意:此时Jenkins 的工作区中还没有代码,需要执行一次构建操作之后Jenkins 才会下载代码。

代码构建的配置
在这里插入图片描述
在这里插入图片描述
点击保存,指定构建操作。
在这里插入图片描述
这个时候代码构建好,但还没发布到 tomcat 服务器上,发布到 tomcat 同样需要配置(这里需要前面下载的插件)
在这里插入图片描述
在这里插入图片描述
war包的名字,就是我们平时用 maven 打包后的名字

说明:
1)WAR/EAR files:war包以项目根目录为基准的相对路径;
2)Context path:浏览器访问项目时使用的项目名;
3)Containers:选择与服务器想符合的Tomcat;

这里我们同样需要配置 tomcat的 账号和密码
在这里插入图片描述
在这里插入图片描述
这里的Tomcat指项目运行的Tomcat,用户名密码之前配置过!!!
在这里插入图片描述

(4)配置触发钩子程序,自动构建
在这里插入图片描述
远程触发的基本原理是:SVN服务器给Jenkins项目特定的URL地址发送请求,但必须以请求参数的形式携带一个特定值,这个特定值就是这里的“身份验证令牌”。
比如我们这个项目的地址触发地址是:http://192.168.63.178:8080/jenkins/job/apple/build
身份验证令牌是:APPLE_TOKEN
那么最终的访问地址就是: http://192.168.63.178:8080/jenkins/job/apple/build?token=APPLE_TOKEN
触发访问地址中Jenkins访问地址是根据实际情况改变的,项目名称根据实际情况改变,其他都不变。
在这里插入图片描述
(5)Linux的curl命令
Linux的curl命令:Linux的curl命令用来发送HTT 请求。

-X 参数:指定请求方式
-v 参数:显示响应结果
-u 参数:携带用户名/密码
-H 参数:携带请求消息头信息

在这里插入图片描述
(6)获取crumb 值

这个crumb值也不是必须的,设置该值的步骤如下:
在这里插入图片描述
在这里插入图片描述
下面是如何生成crumb值
在这里插入图片描述
在这里插入图片描述

(7)编辑SVN 版本库中的钩子程序

  • 1)钩子程序由post-commit.tmpl复制得到,这里注意不要使用任何扩展名。如果按照我们习惯的使用.sh扩展名则钩子程序无法正常工作。
    在这里插入图片描述
[root@localhost pro_oa]# cd hooks/
[root@localhost hooks]# ll
总用量 40
-rwxr-xr-x. 1 root root 2075 9月   6 17:25 post-commit
-rw-r--r--. 1 root root 1977 9月   4 15:56 post-commit.tmpl
-rw-r--r--. 1 root root 1638 9月   4 15:56 post-lock.tmpl
-rw-r--r--. 1 root root 2289 9月   4 15:56 post-revprop-change.tmpl
-rw-r--r--. 1 root root 1567 9月   4 15:56 post-unlock.tmpl
-rw-r--r--. 1 root root 3426 9月   4 15:56 pre-commit.tmpl
-rw-r--r--. 1 root root 2434 9月   4 15:56 pre-lock.tmpl
-rw-r--r--. 1 root root 2786 9月   4 15:56 pre-revprop-change.tmpl
-rw-r--r--. 1 root root 2122 9月   4 15:56 pre-unlock.tmpl
-rw-r--r--. 1 root root 2780 9月   4 15:56 start-commit.tmpl
[root@localhost hooks]# 

在这里插入图片描述

  • 2)记得使用chmod 命令设置为可执行权限,把原有内容注释,加入curl命令
chmod 755 post-commit

四、测试

(1)在Eclipse中修改并提交svn,在页面上查看显示内容变化.

(2)如果发生Jenkins服务器从SVN服务器下载代码不是最新版的情况,那么就在SVN服务器的URL地址后面加上@HEAD强制要求下载最新版。

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值