文档章节

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

l
 linjin200
发布于 01/17 16:26
字数 1695
阅读 12
收藏 5

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

2018年06月08日 11:30:23 止步前行 阅读数:2932

 版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zxd1435513775/article/details/80618640

一、引言

在日常的开发过程中,发布版本的流程一般都是手动部署,具体如下图所示:
这里写图片描述

我们需要把代码提交到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
  • 1
  • 2
  • 3
  • 4

2、在安装使用Jenkins之前,还有知道环境的配置信息
(1)设置并记录一下版本库(SVN)的访问账号密码
这里写图片描述
这里写图片描述
这里写图片描述
特别提示:svnserve.conf 文件中anon-access 一定要打开注释并设置为none
(2)设置并记录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" />
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

3、安装步骤
(1)Jenkins主体程序安装配置

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

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

(2)Jenkins安装
这里写图片描述
依照提示,查看/root/.jenkins/secrets/initialAdminPassword 文件内容,填入文本框,这里填入的密文同时也是admin账号的密码。
这里写图片描述
选择哪种方式都不会对后续操作有太大影响,因为有需要的插件我们可以在后续有针对性的安装,在这里选择“安装推荐的插件”。
这里写图片描述
打×的插件是由于网络传输导致的安装失败,后面再重新安装即可。注意:这个步骤中如果选择了安装插件则系统必须能够联网。
这里写图片描述
可以选择使用admin账户继续,后面有需要仍然有机会注册新账户。
这里写图片描述
开始使用Jenkins,gogogo~
这里写图片描述
点击系统管理。
这里写图片描述
这里写图片描述
点保存,继续配置。
这里写图片描述
这里写图片描述
这里写图片描述
点保存,继续配置。
这里写图片描述
这里写图片描述
这里写图片描述
安装插件时受到网络状况的影响有可能会失败,不要紧,多试几次,直到成功。
(3)Jenkins配置项目
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
特别注意:这里指定的URL地址必须恰好定位到pom.xml文件的上一级,因为Jenkins就是到项目根目录下查询pom.xml。
这里写图片描述
指定SVN的账户密码,要去前面配置的一致!!!设置完,一定要点add,再选一次。配置好的效果,如下图:
这里写图片描述
注意:此时Jenkins 的工作区中还没有代码,需要执行一次构建操作之后Jenkins 才会下载代码。
这里写图片描述
这里写图片描述
点击保存,指定构建操作。
这里写图片描述
这里写图片描述
这里写图片描述
说明:
1)WAR/EAR files:war包以项目根目录为基准的相对路径;
2)Context path:浏览器访问项目时使用的项目名;
3)Containers:选择与服务器想符合的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扩展名则钩子程序无法正常工作。
2)记得使用chmod 命令设置为可执行权限,把原有内容注释,加入curl命令
  • 1
  • 2

这里写图片描述

四、测试

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

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

© 著作权归作者所有

共有 人打赏支持
l
粉丝 17
博文 603
码字总数 657596
作品 0
福州
程序员
私信 提问
每日备份JENKINS_HOME至SVN

每日备份JENKINS_HOME至版本控制系统SVN Jenkins是一个可扩展的开源的持续集成工具,也是当下最流行的持续集成工具。 易于安装(Easy installation) 易于配置(Easy configuration) 变更集支持...

donhui
2015/04/06
0
0
Linux上快速搭建Jenkins服务器 实现持续集成开发

简介: 持续集成是一种软件开发实践,对于提高软件开发效率并保障软件开发质量提供了理论基础。Jenkins 是一个开源软件项目,旨在提供一个开放易用的软件平台,使持续集成变成可能。本文正是...

long0419
2013/12/11
0
0
Jenkins 持续化部署实例

开始本篇章之前介绍一个写笔记的方法:康奈尔笔记法(新学的,很实用) 在此之前老大让它们弄一个web端更新的界面系统,本来我也打算用django+bootstrap+python实现,但是此时python和boots...

滕先生
2018/06/27
0
0
简析Jenkins的SVN插件未更新到最新代码

在使用Jenkins做持续集成时,遇到Jenkins的SVN插件没有更新到最新的代码的情况。 例如,在代码提交之后就立即使用Jenkins更新代码,结果刚提交的代码没有被更新到,更新到的代码是旧版本的。...

donhui
2015/08/10
0
4
jenkins和docker实现自动化构建部署

应用场景 程序员开发应用,开发后需要提交svn,然后从svn拉取代码,进行构建,发布到tomcat中,发布,然后看呈现效果,这样的工作是频繁反复的在进行的,浪费了程序员的大量时间,那么能不能...

wsc449
2017/12/06
0
0

没有更多内容

加载失败,请刷新页面

加载更多

.net Int16 、(int Int32)、 Int64 的区别

.net Int16 、(int Int32)、 Int64 的区别 easonjim 2015-09-25 01:41:00 浏览129 评论0 Framework html 存储 数据类型 摘要: 关于什么是16位整数,32位整数,64位整数,请看这里:http://ww...

linjin200
19分钟前
0
0
jsch密钥连接远程Linux报错com.jcraft.jsch.JSchException: invalid privatekey: [B@277050dc

jsch密钥连接远程Linux报错,信息如下: Exception in thread "main" com.jcraft.jsch.JSchException: invalid privatekey: [B@277050dcat com.jcraft.jsch.KeyPair.load(KeyPair.java:6......

尚浩宇
20分钟前
0
0
做JAVA开发的同学一定遇到过的爆表问题,看这里解决

背景:Java线上服务运行一周后,某个周六晚上CPU使用率突然持续99%,Java进程处于假死状态,不响应请求。秉着先恢复服务再排查问题的原则,在我连接VPN采用重启大法后,CPU使用率恢复正常,服...

编程SHA
22分钟前
1
0
知乎大佬推荐的4个高质量的微信小程序,每一个都让你用的放心!

很多时候身边的朋友总是见我手机都是很简洁,没有过多的APP去填充,这时他们都会问我,为什么我的手机上软件这么少,够用吗?而我的回答就是,够用,软件不在于多,而在于好用,当然我手机上...

架构师springboot
23分钟前
0
0
初学数据结构--跳跃表

Skip List的工作原理 Skip List(跳跃表)是一种支持快速查找的数据结构,插入、查找和删除操作都仅仅只需要O(log n)对数级别的时间复杂度,它的效率甚至可以与红黑树等二叉平衡树相提并论,...

loubobooo
27分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部