centos7.6+jenkins.war+subversion(svn)+eclipse实现持续部署

centos7.6+jenkins.war+subversion(svn)+eclipse实现持续部署

一、环境及工具准备

1.操作系统版本:cnetos7.6.1810

2.IDE工具:eclipse(版本: 2020-12 (4.18.0))

3.虚拟机工具:Vmware 15

4.远程连接和传输工具:Xshell 6、FlashFXP

5.jenkins.war包:2.273
下载地址:https://mirrors.tuna.tsinghua.edu.cn/jenkins/war/2.273/jenkins.war

二、环境搭建

1.准备3台centos

三台centos作用如下:
主机A:部署subversion服务
主机B:部署jenkins程序
主机C:部署应用

PS:3台主机要网络互通

2.关闭3台主机防火墙

systemctl start firewalld.service

可通过查看防火墙状态检验

firewall-cmd --state

3.主机A部署subversion服务器

3.1安装subversion

yum install -y subversion

3.2创建具体的版本库

svnadmin create /myutil/svn/repository/jenkins
  • svnadmin:命令
  • create:创建
  • /myutil/svn/repository/demo:版本库位置

3.3进入版本库,设置权限

cd /myutil/svn/repository/jenkins/conf

修改配置文件

vim svnserve.conf

在这里插入图片描述

  • 将第 19 行# auth-access = write 注释打开,设置匿名用户操作为none
  • 将第 20 行# auth-access = write 注释打开:auth-access = write,表明该版本库不接受匿名访问
  • 将第 27 行注释打开:password-db = passwd,表明使用同目录下的 passwd 文件保存用户信息
  • 将第 34 行注释打开:authz-db = authz,表明使用同目录下的 authz 文件保存权限信息设置用户密码

添加用户

vim passwd
svnuser = 123456

在这里插入图片描述

PS:添加版本库帐号svnuser,密码为123456

设置用户权限

vim authz
[/]
svnuser = rw
* = 

在这里插入图片描述

PS:表示在jenkins版本库的根目录下,svnuser用户允许读写,其他用户没有任何权限

3.4启动subversion(svn)服务

svnserve -d -r /myutil/svn/repository
  • svnserve:svn服务命令
  • -d:后台运行
  • -r:指定服务根目录
  • /myutil/svn/repository:svn服务根目录

3.5查看svnserve服务进程

netstat -lnpt|grep svnserve

4.主机B、主机C安装jdk、tomcat

参考网址:
(1)安装jdk:https://blog.csdn.net/weixin_43824267/article/details/110385122
(2)安装tomcat:https://blog.csdn.net/weixin_43824267/article/details/112170091

5.主机B安装maven

参考网址:https://blog.csdn.net/weixin_43824267/article/details/112168050

6.修改主机B的tomcat配置

6.1进入tomcat解压目录的server.xml

vim /myutil/tomcat/tomcat8080/conf/server.xml

6.2修改 URL 地址的编码解码字符集

 URIEncoding="UTF-8"

在这里插入图片描述

7.主机C设置tomcat用户

因为自动化部署后,是由程序来访问tomcat,所以要设置个tomcat用户

7.1进入到主机C的tomcat的用户角色配置文件

vim /myutil/tomcat/tomcat8080/conf/tomcat-users.xml

7.2将以下内容追加到tomcat-users跟标签内

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

PS:表示添加了tomcatuser用户,密码为123456,拥有的角色是manager-gui,manager-script,manager-jmx,manager-status

7.3修改IP限制

修改两处配置文件的IP限制,对IP放开

vim /myutil/tomcat/tomcat8080/webapps/host-manager/META-INF/context.xml

将第20行的allow=“127.\d+.\d+.\d+|::1|0:0:0:0:0:0:0:1"修改为allow=”^.*$"
在这里插入图片描述

vim /myutil/tomcat/tomcat8080/webapps/manager/META-INF/context.xml

同理,将第20行的allow=“127.\d+.\d+.\d+|::1|0:0:0:0:0:0:0:1"修改为allow=”^.*$"

7.4启动tomcat,测试用户

/myutil/tomcat/tomcat8080/bin/startup.sh

稍等一会,tomcat启动后,在浏览器地址栏输入:

http://192.168.1.115:8080/

PS:192.168.1.115是主机C的IP,8080是tomcat服务器端口。要注意关闭好主机C的tomcat

点击测试刚才创建的用户密码
在这里插入图片描述
在这里插入图片描述
看到下面页面,说明设置成功
在这里插入图片描述

8.eclipse创建项目

打开IDE工具eclipse,创建好准备持续部署的样例项目demo
参考网址:https://blog.csdn.net/weixin_43824267/article/details/112172100

8.1创建Apple.java(注意包名)

package com.atguigu.ci.entities;

public class Apple {
	
	private String appName = "Good Apple";

	public String getAppName() {
		return appName;
	}

	public void setAppName(String appName) {
		this.appName = appName;
	}

}

8.2添加pom依赖

<dependency>
	<groupId>javax.servlet</groupId>
	<artifactId>javax.servlet-api</artifactId>
	<version>4.0.0</version>
</dependency>
<dependency>
	<groupId>javax.servlet</groupId>
	<artifactId>servlet-api</artifactId>
	<version>2.5</version>
</dependency>

8.3添加首页index.jsp

<%@page import="com.atguigu.ci.entities.Apple" %>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
我是小赖同志
<%= new Apple().getAppName() %>
</body>
</html>

9.分享demo项目到svn仓库

在eclipse,右击项目–》Team–》Share Project
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • svn://:固定格式
  • 192.168.1.108:搭建subversion服务的主机A的IP地址
  • jenkins:主机A创建的版本库

输入主机A设置的svn版本库的账户和密码
在这里插入图片描述

10.将demo项目提交到svn仓库

自行百度参考svn相关教程,过程略

11.主机B上部署jenkins程序

11.1将jenkins.war包放到主机B的tomcat的webapp下

在这里插入图片描述

11.2启动tomcat

/myutil/tomcat/tomcat8080/bin/startup.sh

11.3访问jenkins服务

在浏览器地址栏输入:

http://192.168.1.111:8080/jenkins

PS:192.168.1.111是主机B的IP地址

11.4进入jenkins

在这里插入图片描述
查看密码

cat /root/.jenkins/secrets/initialAdminPassword
  • 进入到自定义jenkins页面。这里选择安装插件的话会联网下载一些插件,小编这里选择“安装推荐的插件”
  • 第一次安装可能因为网络问题安装失败,重试几次一般就能下载好
  • 也可以去jenkins官网里下载插件,然后在jenkins插件管理页面上传插件
  • 上传插件也会检查依赖插件去下载一堆插件,不代表下载好的插件,上传就不需要网络
  • 总结:jenkins装插件对网路要求很高

在这里插入图片描述
下载安装插件中…
在这里插入图片描述

安装失败可能是网络问题,可以多重试几次。

PS:小编发现个别插件多次重试仍无法下载,就不管了

在这里插入图片描述

开始使用jenkins
在这里插入图片描述
在这里插入图片描述

12.初始化jenkins

12.1修改admin密码

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

12.2修改插件升级站点(有无均可,可自选)

在这里插入图片描述
在这里插入图片描述
将升级站点修改成

http://mirror.esuni.jp/jenkins/updates/update-center.json

在这里插入图片描述
多提供几个升级站点(自己尝试):

jenkins插件升级站点
https://updates.jenkins.io/update-center.json(默认)
http://updates.jenkins.io/update-center.json(去掉s)
http://mirror.esuni.jp/jenkins/updates/update-center.json
https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json
https://mirror.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json
http://mirror.xmission.com/jenkins/updates/current/update-center.json
https://mirror.xmission.com/jenkins/updates/update-center.json

12.3下载jenkins插件

去jenkins官网下载两个jenkins插件
subversion、deploy to container

PS:如果之前已经选择“安装推荐的插件”,可能已经安装好了,就不用重新下载上传

官网下载地址:https://plugins.jenkins.io/
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
同理,下载deploy to container
在这里插入图片描述

12.4上传插件方法

在这里插入图片描述
在这里插入图片描述

PS:安装插件可能因为网络原因出现连接超时,安装过程比较缓慢,耐心等待。安装失败就多上传几次

13修改jenkins配置

13.1修改安全设置

在这里插入图片描述
在这里插入图片描述

13.2全局工具安装

PS:根据先前安装的jdk、maven来配置

在这里插入图片描述

maven配置文件设置

/myutil/maven/maven-3.6.1/conf/settings.xml

在这里插入图片描述

JDK配置

/myutil/jdk/jdk1.8.0_271/

在这里插入图片描述
删除多余工具
在这里插入图片描述

maven配置

/myutil/maven/maven-3.6.1/

在这里插入图片描述

14.启动主机C的tomcat

/myutil/tomcat/tomcat8080/bin/startup.sh

15.创建jenkins工程

15.1选择“新建Item”

在这里插入图片描述

15.2创建一个空项目

在这里插入图片描述

15.3配置源码管理

在这里插入图片描述

  • svn://192.168.1.112/jenkins/demo
  • svn://:固定协议格式
  • 192.168.1.112:SVN服务器IP,这里即是主机A的IP
  • jenkins:SVN服务器根目录下的一个具体的版本库
  • demo:版本库里面的一个maven工程,这里要注意,指定的demo根下有pom.xml文件才行

添加svn用户
在这里插入图片描述
在这里插入图片描述

15.4配置构建触发器

在这里插入图片描述

15.5配置构建

在这里插入图片描述
在这里插入图片描述

15.6配置构建后操作

在这里插入图片描述

PS:这一步要安装好之前说的deploy插件,因为构建后要自动部署,所以这里选择了发布war包到一个容器上(这里用的是tomcat容器)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
一切配置填好,点击保存即可
在这里插入图片描述

16.配置远程触发构建

原理:

  • 实现自动化部署,首先eclipse实现提交操作之后,svn版本库收到提交请求
  • 要在svn服务器上配置“提交”操作的钩子程序(一旦发现提交操作就触发的shell程序脚本)
  • 钩子程序(即shell程序)执行命令,来通知jenkins去执行构建操作

大致原理图:
在这里插入图片描述
所以,在此,还需要配置钩子程序(提交操作触发的shell脚本)

16.1进入到主机A(SVN服务器)的jenkins版本库的hooks文件夹

PS:这个文件夹下放着一堆钩子程序的样例脚本,但默认不生效,钩子程序脚本有规定文件名且没有后缀名

cd /myutil/svn/repository/jenkins/hooks/

16.2编写钩子程序

vim post-commit

将以下命令复制到里面,保存退出

#!/bin/sh
curl -X post -v -u admin:123456 http://192.168.1.107:8080/jenkins/job/demo/build?token=LGQ_TOKEN
  • curl:Linux用来发送http请求的命令
  • -X:指定请求方式
  • post:post请求方式
  • -u:携带用户名/密码
  • admin:123456 :jenkins的用户密码(登录jenkins用的那个)
  • http://192.168.1.107:8080/jenkins:jenkins的网页访问路径(在主机B的tomcat上跑着)
  • job:固定写法
  • demo:jenkins工程名
  • build:固定写法
  • token=LGQ_TOKEN:之前配置的构建触发器自定义的身份令牌

16.3修改钩子程序权限

chmod 755 post-commit #赋予可执行权限

17.在eclipse测试提交

来到celipse,测试提交代码,在网页即可查看到最新提交内容(自己测,过程略)

注意:

  • 个别时候会发现提交后虽然可以自动部署,但部署上去的版本比自己eclipse的当前版本落后一个版本。
  • 这时解决的方法是:把15.3步骤的svn版本库地址改为svn://192.168.1.112/jenkins/demo@HEAD
  • 在末尾追加@HEAD强制指定部署最新版本
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

强强爱java

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值