springBoot 项目 Jenkins+svn 集成部署

摘要:
持续集成工具Jenkins持续部署、持续集成和持续交付Jenkins和Hudson都是持续集成和自动部署工具。Jenkins主要用于1.持续自动地构建/测试软件项目2.监控Jenkins和Hudson之间的关系,以执行一些定期执行的任务。2009年,Oracle收购了Sun并整合了Hudson代码库。

持续集成工具Jenkins
持续部署、持续集成、持续交付
Jenkins 和 Hudson 都是一款持续集成及自动化部署工具。
Jenkins 解决了什么问题:
Jenkins 的主要目标是监控软件开发流程,快速显示问题。所以能保证开发人员以及相
关人员省时省力提高开发效率。
解决了传统的打包、部署枯燥过程。

Jenkins 主要用于
1.持续、自动地构建/测试软件项目
2. 监控一些定时执行的任务

Jenkins 历史
Jenkins 和 Hudson 之间的关系,2009年,甲骨文收购了sun公司并集成了Hudson代码库。在2011年年初,甲骨文和开源社区之间关系破裂,该项目分为两个独立的项目。
Jenkins: 由大部分原始开发人员组成
Hudson:由甲骨文公司继续管理
所以 Jenkins 和 Hudson 是两款非常相似的产品

流程图
springBoot 项目 Jenkins+svn 集成部署第1张

Red hat 安装Jenkins
jenkins下载 https://pkg.jenkins.io/redhat-stable/
下载rpm包到本地
sudo rpm -ih jenkins-2.222.3-1.1.noarch.rpm

springBoot 项目 Jenkins+svn 集成部署第2张


自动安装完成之后:
/usr/lib/jenkins/jenkins.war WAR包
/etc/sysconfig/jenkins 配置文件
/var/lib/jenkins/ 默认的JENKINS_HOME目录
/var/log/jenkins/jenkins.log Jenkins日志文件

安装完成之后启动jenkins, 可能报这个错误,这是由于没有配置java环境,先检查一下java虚拟机有没有安装,如果没有就安装

springBoot 项目 Jenkins+svn 集成部署第3张


解决办法在 vim /etc/init.d/jenkins
在第一行添加java环境,红色框中为自己的路径
springBoot 项目 Jenkins+svn 集成部署第4张


为了避免jenkins默认端口冲突,修改enkins默认端口
执行 vi /etc/sysconfig/jenkins
找到 JENKINS_PORT="8080" 此端口不冲突可以不修改
修改jenkins默认的操作用户,linux下jenkins默认使用jenkins用户进行脚本和文件的操作,如果不修改,在部署项目时需要调整涉及到的文件和目录的操作权限,可以调整jenkins配置文件,将用户修改为root用户。
将JENKINS_USER="jenkins"调整为JENKINS_USER="root"
然后执行启动命令
sudo service jenkins start

springBoot 项目 Jenkins+svn 集成部署第5张


然后访问:http://ip/8081
如果访问不到,检查服务器的防火墙是否关闭。
springBoot 项目 Jenkins+svn 集成部署第6张


接着 :cd /var/lib/jenkins/secrets

springBoot 项目 Jenkins+svn 集成部署第7张

springBoot 项目 Jenkins+svn 集成部署第8张


进入此页面后,需要配置一下允许用户注册,Configure Global Security ,勾选此处,保存。

springBoot 项目 Jenkins+svn 集成部署第9张


接着配置jdk 、maven、及setting.xml
springBoot 项目 Jenkins+svn 集成部署第10张


需要安装 Subversion 和 Deploy to container 插件,如果无法安装提示Update information obtained: 不可用 ago;
其原因是无法上网,可检查 ping www.baidu.com 如果无法ping通,需要设置DNS
命令: vim /etc/resolv.conf 修改文件中nameserver为 8.8.8.8 和 8.8.4.4 保存退出 :wq

springBoot 项目 Jenkins+svn 集成部署第11张


再次检查 ping www.baidu.com
开始构建部署springboot的jar项目

  1. 回到jenkins主页面,点击新建Item
    springBoot 项目 Jenkins+svn 集成部署第12张

springBoot 项目 Jenkins+svn 集成部署第13张

springBoot 项目 Jenkins+svn 集成部署第14张

springBoot 项目 Jenkins+svn 集成部署第15张


-Dmaven.test.skip=true 忽略测试
然后点击页面下方的应用,并保存。接着设置全局配置进入jekins 主页面,点击左侧 Manage Jenkins进入页面后点击Configure System 系统配置
再次操作之前,需要安装 Publish over SSH 插件,
springBoot 项目 Jenkins+svn 集成部署第16张


点击高级 勾选
springBoot 项目 Jenkins+svn 集成部署第17张


以上配置完后,点击Test Configuretion 测试一下

springBoot 项目 Jenkins+svn 集成部署第18张

之后我们去job中配置一下ssh,

springBoot 项目 Jenkins+svn 集成部署第19张


springBoot 项目 Jenkins+svn 集成部署第20张


此处的顺序需要注意一下,shell 脚本需要放在下面。
shell 脚本内容:

#!/bin/sh
#Copy jar to target path
BUILD_ID=DONTKILLME #后台执行
pid=$(ps -ef|grep ene-center.jar|grep -v grep | awk '{print $2}')
#copy jar 到启动目录
#cp -r /var/lib/jenkins/workspace/ene-center/target/ene-center.jar  /data/test/em
# 关闭已经启动的jar进程
function stop(){
if [ -n "$pid" ]
  then
        echo "pid进程 :$pid"
        kill -9 $pid
 else
    echo "进程没有启动"
fi
}
stop
sleep 5s
#发布jar服务
function start(){
  cd /data/test/em
  nohup java -jar ene-center.jar --server.port=5010 >center.log 2>&1 &
}
start

然后,应用并保存,在jenkins 任务列表页面点击构建,
springBoot 项目 Jenkins+svn 集成部署第21张

前后端shell 脚本

  • 后端脚本
#!/bin/bash

root="/data/test/ene"
for project in {"ene-center","ene-auth","ene-gateway","ene-basic","ene-sys"}
do
	echo
	echo
	echo
	echo $project"开始部署..."



	BUILD_ID=DONTKILLME
	
	pid=$(ps -ef|grep $project.jar|grep -v grep | awk '{print $2}')
	
	
	
	
	function stop(){
	if [ -n "$pid" ]
	  then
	        echo "关闭进程pid=:$pid"
	        kill -9 $pid
	
	 else
	    echo "未启动,不需要kill"
	fi
	}

	file="${root}/$project/target/${project}.jar"
	if [ -e $file ]
	then 
		echo "原始文件路径:${root}/$project/target/${project}.jar...已找到"
	else 
		echo "原始位置 ${root}/$project/target/${project}.jar...不存在,停止部署!"
		continue
	fi
	echo "移动jar到 ${root}/_jar/$project.jar"
	mv -f ${root}/$project/target/${project}.jar ${root}/_jar 


	function start(){
	  cd $root
	  echo "开始启动..."
	  nohup java -jar _jar/$project.jar > _jar/$project.log 2>&1 &
	}
	
	stop
	
	sleep 3s
	
	
	start


done

echo "脚本执行完毕!!!!!!"
echo 
echo 
echo 

  • 前端脚本
#!/bin/bash

BUILD_ID=DONTKILLME
cd /var/lib/jenkins/workspace/ene-vue/ene-vue
npm install
npm install script-ext-html-webpack-plugin
npm run build:prod
rm -rf /data/test/dist
rm -rf /data/test/ene-vue
mv /var/lib/jenkins/workspace/ene-vue/ene-vue/dist /data/test
cd /data/test
mv dist ene-vue


免责声明:文章转载自《springBoot 项目 Jenkins+svn 集成部署》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇protobuf 无proto 解码 decode 语言 java pythonLinux中查看CPU信息【转】下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Jenkins + NuGet + MSBuild

Jenkins + NuGet + MSBuild 背景 项目上需要做UWP的自动安装包,在以前的公司接触的是TFS来做自动build。 公司要求用Jenkins 来做,别笑话我,之前还真不晓得这个东西。 会的同学请看一下指出错误,不会的同学请先自行脑补,我们一步一步的来。 首先我们准备2个安装包,Jenkins,NuGet 都下载最新的好了。 1. 安...

windows环境下简单Jenkins持续集成搭建

Jenkins是基于Java开发的持续集成工具,所以在安装Jenkins之前我们要确定电脑上已经安装了Java JDK并且环境变量配置正确,否则在启动使用java -jar Jenkins.war启动jenkins时,由于没有Java环境,将提示java非内部命令,无法启动。 java版本:jdk-8u162-windows-i586 jenkins版本:...

jenkins启动appium服务

想在jenkins中,自动定时启动appium服务,shell命令已准备如下: BUILD_ID=dontKillMe ps -ef |grep appium |grep -v grep |awk '{print $2}' |xargs kill -9 echo "" > appium.log nohup appium --address 1...

Jenkins中shell-script执行报错sh: line 2: npm: command not found

<1>本地执行npm run build--正常 <2>查看环境变量--正常 [root@localhost bin]# echo $PATH /usr/local/node/bin:/usr/local/nginx/sbin:/usr/local/node/bin: <3>将shell中的script的npm comm...

Jenkins之定时构建

1. 操作环境 1. Jenkins Jenkins 2.75 2. 定时构建 1. 定时构建语法: * * * * * 第一个*表示分钟,取值0~59 第二个*表示小时,取值0~23 第三个*表示一个月的第几天,取值1~31 第四个*表示第几月,取值1~12 第五个*表示一周中的第几天,取值0~7,其中0和7代表的都是周日 2. 常用定时构建举例:...

使用HttpRunner3+Allure+Jenkins实现Web接口自动化测试

陆续给不同项目做了Web接口自动化测试,在尝试不同方法的同时会有新的体会。最近用到了HttpRunner3,本文将记录使用HttpRunner3+Allure+Jenkins在项目中快速实现Web接口自动化测试的过程。 HttpRunner3 安装 安装HttpRunner3:pip install httprunner 脚手架 使用HttpRunner提...