需要三台不同环境的服务器,SVN、Jenkins、Tomcat

1.SVN搭建

   1.Subversion服务器(SVN服务器)

   2.项目对应的版本库

   3.版本库中钩子程序(用于触发构建命令)

  在我以前的博文中有介绍这里不多BB,注意以下几点

  1.记住配置账号密码文件 passwd中版本库的访问账号密码(Jenkins从SVN上下载源码需要用到)

  2.配置 SVN 服务综合配置文件 svnserve.conf中,anon-access = none,关闭SVN的匿名访问。

2.Tomcat

  用于跑最终项目的服务器上的Tomcat,需要给Tomcat设置一个账号密码。

  Windows的在这里C:\Program Files\Apache Software Foundation\Tomcat 9.0\conf\tomcat-users.xml。

  Linux的没怎么关注,改天研究到了再补充。

  在用户配置文件(tomcat-users.xml)中添加以下内容

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

  *Jenkins通过自身的Maven插件把从SVN上拿到的源码打成WAR包部署到Tomcat上,当Jenkins程序去访问Tomcat时,Tomcat为了防止非授权的访问需要应用提供账号密码。

  上面的配置中我们新建了一个用户,并继承了Tomcat的四个管理角色,因此,我们拥有强大的权限去访问Tomcat。

  在服务配置文件(server.xml)中添加以下内容

    <Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" URIEncoding="UTF-8"/>

  *主要解决Tomcat URL编码的问题

  查看Tomcat日志使用命令:tail -f /opt/tomcat/logs/catalina.out

⒊Jenkins

  1.安装

  Jenkins有很多种安装形式,在我的文章中也有提及,这里也就不多BB了。

  2.配置

  Manage Jenkins(系统管理) => Configure Global Security(全局安全配置) => 安全域 => 勾选"允许用户注册"(万一忘记用户名密码还可以进行其他操作)

  Manage Jenkins(系统管理) => Configure Global Security(全局安全配置) => 授权策略 =>选中" Anyone can do anything" (任何用户可以做任何事-没有任何限制)(学的时候操作方便一些,生产环境慎重操作)

  Manage Jenkins(系统管理)  => Global Tool Configuration(全局工具配置) => Maven 配置 =>"默认 settings 提供"修改为"文件系统中的settings文件",并指定本机的Maven配置文件地址,可以使用echo $MAVEN_HOME命令查看后修改填入(/opt/apache-maven-3.6.1/conf/settings.xml)

  Manage Jenkins(系统管理)  => Global Tool Configuration(全局工具配置) => Maven 配置 =>"默认全局 settings 提供"修改为"文件系统中的settings文件",并指定本机的Maven配置文件地址,可以使用echo $MAVEN_HOME命令查看后修改填入(/opt/apache-maven-3.6.1/conf/settings.xml)

  Manage Jenkins(系统管理)  => Global Tool Configuration(全局工具配置) => JDK => JDK安装 => 新增JDK => 别名:MyJDK(随意) ,取消自动安装的勾选并指定本地的JAVA_HOME地址,可以使用echo $JAVA_HOME命令查看后直接填入(opt/jdk1.8.0_222)

  Manage Jenkins(系统管理)  => Global Tool Configuration(全局工具配置) => Maven => Maven安装 => 新增JMaven=> Name:MyMaven(随意) ,取消自动安装的勾选并指定本地的MAVEN_HOME地址,可以使用echo $MAVEN_HOME命令查看后直接填入(/opt/apache-maven-3.6.1/bin)

  你也可以配置你的Git什么的,有啥就配置啥就可以了。

  因为我们要和SVN做集合,所以需要安装一些SVN的插件。SVN的插件如果选择推荐的插件进行安装的话,一般是默认装上了,插件名:Subversion Plug-in,还需要安装一些其他的SVN需要的插件,Deploy to container等。

  Manage Jenkins(系统管理)  => Manage Plugins(管理插件) => 可选插件 =》 Ctrl + F搜索Deploy to container,勾选后选择"直接安装"。

⒋创建Maven项目及在MVN上创建版本库(使用svnadmin create命令,配置库权限等操作),然后将Maven项目上传到MVN。

⒌创建Jenkins任务

  在Jenkins首页点击"开始创建一个新任务" => 输入任意的任务名称 => 选择"Freestyle project"(构建一个自由风格的软件项目) ,点击确定=>源码管理(就是指在那里把源代码下载下载) ,选择Subversion(SVN)=> 在”Repository URL“输入MVN仓库地址+项目名称(注意要加项目名称),例如mvn://192.168.227.128/coreqi/coreqi_pc_server(注意,受服务器时间影响,Jenkins可能拿不到SVN的最新代码,可以在URL后追加@HEAD拿到最新源码,上面的例子为mvn://192.168.227.128/coreqi/coreqi_pc_server@HEAD) =>在”Credentials“点击添加,Jenkins然后SVN的账号及密码(注意添加完还要在下拉列表选择一下),源码管理配置完成。

  在构建,单击”增加构建步骤“,选择”Invoke top-level Maven targets“(调用顶层Meven目标),在”Maven Version“选择我们步骤2中配置的Maven,在”Goals“中输入”clean install“命令,即执行清理安装命令,构建配置完成。点击保存。

  返回任务列表,点击我们刚刚添加的任务,点击”立即构建“。(可以在Build History查看构建历史,点击构建任务,选择控制台输入即可查看打印信息)

⒍自动部署到Tomcat上

  在Jenkins的工程配置中点击我们新增的任务 => 构建后操作,点击“增加构建后操作步骤”,选中"Deploy war/ear to a container"(注意:这一项一定要有步骤3中我们安装的Deploy to container插件,没有安装的话是没有这个选项的) => 在“WAR/EAR files”中填入war包路径(这里是以工作区为根目录的一个相对路径,例如:target/Coreqi-0.0.1-SNAPSHOT.war)=> 在“Context Path”中填入"coreqi"(指在浏览器中访问项目的名称,此示例为coreqi) => 在"Containers"点击“Add Container”选中"Tomcat 9.x",在“Credentials”点击“Add”选中"Jenkins"输入我们在步骤2Tomcat中配置的用户名密码(注意,添加完还需要选择一些我们刚添加的用户名密码),在"Tomcat URL"中填入“http://192.168.227.128:8080”后点击保存。再次点击“立即构建”进行测试。

⒎配置SVN钩子程序,一旦有新代码提交,自动执行Jenkins“立即构建”命令

  在Jenkins的工程配置中点击我们新增的任务 =>构建触发器,勾选“触发远程构建(例如,使用脚本)”,在“身份验证令牌”中填入一个指定的Token指,当我们访问Jenkins特定的URL地址再加上我们指定的Token的时候,Jenkins将自动触发该任务的“立即构建”命令,例如,我们在“身份验证令牌”中填入“Coreqi_token”,当我们在浏览器中访问http://192.168.227.128:8080/jenkins/job/coreqi/build?token=Coreqi_token,Jenkins将自动执行coreqi任务的“立即构建”命令。

  ****Jenkins默认开启了防止跨站点请求伪造

  在Manage Jenkins(系统管理) => Configure Global Security(全局安全配置) => CSRF Protection => 默认是勾选了“防止跨站点请求伪造”。则当我们向Jenkins发送请求时需要带上Crumbs的值。

  如何获取Crumbs的值?

  官网中有说明:https://wiki.jenkins.io/display/JENKINS/Remote+access+API

  我们访问http://192.168.227.128:8080/crumbIssuer/api/xml拿到Crumbs的值

  我们将利用SVN的Hooks(钩子程序)中的post-commit(提交之后)来触发以上操作

  在SVN的版本库/项目名称/hooks下新建post-commit文件(注意没有扩展名),将shell命令复制进去保存即可。

curl -X post -v -u fanqi:admin -H "Jenkins-Crumb:6023e1d965a7c88eb38d7567ce9f123a" http://192.168.227.128:8080/jenkins/job/coreqi/build?token=Coreqi_token

  保存后修改权限为755

chmod 755 post-commit

  curl命令介绍:

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

⒏测试

  请自行测试

  

  

Jenkins+SVN持续环境搭建的更多相关文章

  1. Jenkins+Github持续环境搭建

    ⒈前提要求 Jenkins与Github配合实现持续集成需要注意以下几点: 1.Jenkins需要部署在外网上,因为内网地址是无法访问Github的.这一点可以通过租用阿里云.腾讯云等云平台提供的云服 ...

  2. 使用Maven+Nexus+Jenkins+Svn+Tomcat+Sonar搭建持续集成环境(二)

    前言     上一篇随笔Maven+Nexus+Jenkins+Svn+Tomcat+Sonar搭建持续集成环境(一)介绍maven和nexus的环境搭建,以及如何使用maven和nexus统一管理库 ...

  3. Maven+Nexus+Jenkins+Svn+Tomcat+Sonar搭建持续集成环境(二)

    上一篇随笔Maven+Nexus+Jenkins+Svn+Tomcat+Sonar搭建持续集成环境(一)介绍maven和nexus的环境搭建,以及如何使用maven和nexus统一管理库文件和版本,以 ...

  4. 使用Maven+Nexus+Jenkins+Svn+Tomcat+Sonar搭建持续集成环境

    前言 但凡一个略有规模的项目都需要一个持续集成环境的支撑,为什么需要持续集成环境,我们来看一个例子.假如一个项目,由A.B两位程序员来协作开发,A负责前端模块,B负责后端模块,前端依赖后端.A和B都习 ...

  5. Maven+Nexus+Jenkins+Svn+Tomcat+Sonar搭建持续集成环境

    使用Maven+Nexus+Jenkins+Svn+Tomcat+Sonar搭建持续集成环境(一) 2015-01-14 20:28 by 飘扬的红领巾, 4322 阅读, 5 评论, 收藏, 编辑 ...

  6. 使用Maven+Nexus+Jenkins+Svn+Tomcat+Sonar搭建持续集成环境(一)

    前言     但凡一个略有规模的项目都需要一个持续集成环境的支撑,为什么需要持续集成环境,我们来看一个例子.假如一个项目,由A.B两位程序员来协作开发,A负责前端模块,B负责后端模块,前端依赖后端.A ...

  7. 持续集成-jenkins介绍与环境搭建

    什么是持续集成? 转自:https://blog.csdn.net/tanshizhen119/article/details/80328523 持续集成,俗称CI, 大师Martin Fowler对 ...

  8. jmeter + ant + jenkins 自动化集成环境搭建

    所需工具 一.jmeter 工具下载 https://jmeter.apache.org/  配置环境JDK等及各种插件 二.Ant安装(http://ant.apache.org/) 安装Ant是为 ...

  9. jenkins安装及环境搭建

    Jenkins 是基于Java开发的一种持续集成工具,所以,Jenkins需要Java环境. Jenkins版本是: JAVA版本是: Tomcat版本是: 或者 Jenkins版本是:2.10.2 ...

随机推荐

  1. 洛谷P2789 直线交点数 [数论,递归]

    题目传送门 题目描述 平面上有N条直线,且无三线共点,那么这些直线能有多少不同的交点数? 输入格式 一个正整数N 输出格式 一个整数表示方案总数 输入输出样例 输入 #1 4 输出 #1 5 说明/提 ...

  2. Python回归分析五部曲(二)—多重线性回归

    基础铺垫 多重线性回归(Multiple Linear Regression) 研究一个因变量与多个自变量间线性关系的方法 在实际工作中,因变量的变化往往受几个重要因素的影响,此时就需要用2个或2个以 ...

  3. golang——写文件和读文件

    之前聊过,操作文件——读写文件,直接调用接口即可. 如果是一直写入操作,写入操作一直进行的,免不了会有,有时一大批数据过来,有时没有一条数据. 鉴于此场景,选择用select....channel 的 ...

  4. 第11组 Alpha冲刺(3/6)

    第11组 Alpha冲刺(3/6)   队名 不知道叫什么团队 组长博客 https://www.cnblogs.com/xxylac/p/11872098.html 作业博客 https://edu ...

  5. phpstorm clone 码云项目到本地 Version Control 不显示

    最近在用码云作为代码仓库,但是建了仓库,也填加了 SSH,把项目利用 phpstorm  VCS --> checkout from version control --> git 克隆到 ...

  6. Laravel 代码开发最佳实践

    我们这里要讨论的并不是 Laravel 版的 SOLID 原则(想要了解更多 SOLID 原则细节查看这篇文章)亦或是设计模式,而是 Laravel 实际开发中容易被忽略的最佳实践. 内容概览 单一职 ...

  7. CSS3 新特性

    ~平时喜欢逛博客,看别人的学习总结和遇到的问题解决办法,恰好最近在做书签整理,翻到了之前一个前辈移动前端的总结,所以我就按他的总结模块对自己的知识进行了梳理,不过由于都是手写的,为了方便,下面的都是平 ...

  8. 前端知识扫盲-VUE知识篇一(VUE核心知识)

    最近对整个前端的知识做了一次复盘,总结了一些知识点,分享给大家有助于加深印象. 想要更加理解透彻的同学,还需要大家自己去查阅资料或者翻看源码.后面会陆续的更新一些相关注知识点的文章. 文章只提出问题, ...

  9. wpf相关好资源

    Textbox Drag/Drop in WPFhttp://www.codeproject.com/Articles/42696/Textbox-Drag-Drop-in-WPF.aspx Odys ...

  10. 侧方、s弯道、坡起相关

    侧方: 方向盘上端对准路中箭头直行,当前面箭头头部尖角刚刚消失,停车,挂倒档,倒,当箭头尾部快要消失时右打死,侧身看左后视镜(这时可以稍微踩一下离合控制速度为低速),当出现库底角回正,坐直,当左侧第一 ...