jenkins + svn + maven +svn 实现当SVN提交代码后自动触发打包部署
主流的开发模式都是采用前后端分离的方式,我们作为coder在功能开发初期需要不断的迭代代码与前端进行联调,提供在容器中最新代码,虽然可以通过在编译器中打完包后在放到容器运行,但是显然这种方式是既不方便的,那么能不能呢使用更加便捷的方式来构建发布程序呢?当然jenkins的出世让我只需要关注代码,当通过svn或git提交新代码后会自动触发部署更新
前言
主流的开发模式都是采用前后端分离的方式,我们作为coder在功能开发初期需要不断的迭代代码与前端进行联调,提供在容器中最新代码,虽然可以通过在编译器中打完包后在放到容器运行,但是显然这种方式是既不方便的,那么能不能呢使用更加便捷的方式来构建发布程序呢?
正文
JENKINS
Jenkins是一个开源的、可扩展的持续集成、交付、部署的基于
web
界面的平台。允许持续集成和持续交付项目,无论用的是什么平台,可以处理任何类型的构建或持续集成。
- 持续集成指的是,频繁地(一天多次)将代码集成到主干。将软件个人研发的部分向软件整体部分交付,频繁进行集成以便更快地发现其中的错误。
- 持续交付指的是,频繁地将软件的新版本,交付给质量团队或者用户,以供评审。如果评审通过,代码就进入生产阶段。
- 持续部署是持续交付的下一步,指的是代码通过评审以后,自动部署到生产环境。持续部署的目标是,代码在任何时刻都是可部署的,可以进入生产阶段。
使用jenkins + SVN + maven 来构建
一、安装jenkins 2.361.1
官方下载地址:https://www.jenkins.io/download/
官网提供多种下载方式,推荐下载war包(jenkins.war)
安装jenkins必要的运行环境
1、安装java17
jenkins 官网说明后续版本将只支持java11和java17,更推荐使用17,安装配置不做赘述
2、安装maven3.8x
maven 的安装配置也很简单,同样不做赘述
3、安装启动jenkins
将下载好的jenkins.war 包上传到你的服务器(如果是本地请忽略)/usr/local/jenkins
目录下,使用下面命令启动
nohup java -jar jenkins.war &
二、配置jenkins服务
打开浏览器,输入IP:8080进入web配置管理页(jenkins默认端口8080)
1、根据提示获得admin的初始密码
2、安装推荐插件,第一个为默认安装,第二个为手动。推荐直接选择默认安装
2、配置一个用户
三、下载安装svn、ssh插件
按照下图方式,分别安装下面三个插件
- Publish Over SSh (通过ssh方式远程连接服务器)
- Subversion (svn连接插件)
- Deploy to container Plugin (将构建好的war包发布到远程WEB容器)
可用插件里搜不到是因为我已经安装了;
插件安装完成后需要重启jenkins服务
四、配置系统配置
Manage Jenkins → System Configuration → 系统配置
在系统配置中找到Publish Over SSH然后点击新增,这里增加的就是你的服务要部署的远程服务器
点击高级设置远程服务器认证方式
密码输入后直接点击 Test Configuration 测试ssh远程连接是否成功
五、全局工具配置
Manage Jenkins → System Configuration → 全局工具配置
配置全局Maven
配置全局JDK
全局安全配置
六、新建一个maven项目
新建item→构建一个maven项目
七、项目配置
General
源码管理,选择svn
构建触发器
build
Post Steps
构建后操作
贴出简单的start.sh 和 stop.sh 脚本,注意远程执行java命令时需要全路径使用
start.sh
#!/bin/bash
echo "server starting..."
cd /home/licc/testjenkins
nohup /usr/module/jdk1.8.0_181/bin/java -jar server-management-0.0.1-SNAPSHOT.jar 2>&1 &
echo "Start SUCCESS"
stop.sh
#!/bin/bash
echo "server starting..."
cd /home/licc/testjenkins
nohup /usr/module/jdk1.8.0_181/bin/java -jar server-management-0.0.1-SNAPSHOT.jar 2>&1 &
echo "Start SUCCESS"
[root@localhost testjenkins]# cat stop.sh
#!/bin/bash
echo "Stop Procedure : server-management-0.0.1-SNAPSHOT.jar"
pid=`ps -ef |grep java|grep server-management-0.0.1-SNAPSHOT.jar|awk '{print $2}'`
echo 'old Procedure pid:'$pid
if [ -n "$pid" ]
then
kill -9 $pid
fi
完成以上配置就可以进行构建测试了,点击立即构建,查看控制台输出
此时我们算是完成了一个springboot后台项目的自动发布,但需要手动触发,我们想要的结果是,当我更新代码提交svn服务器后,自动完成发布,重启操作,需要实现这个功能我们只需借助svn的钩子脚本就可以。
八、配置SVN 钩子脚本
SVN的钩子分为客户端和服务端,我们使用客户端来完成(本地源码位置),打开TortoiseSVN的设置,新增一个钩子脚本
rebuild.bat 脚本如下,curl后面的地址就是我们第七步中构建触发器所配置的回调地址
#!/bin/bash
curl http://192.168.*.*:8080/job/servier_manage/build?token=token_manage
至此大功告成,以后我们每次提交完代码,都会自动打包并发布到远程服务器进程更新部署 nice
更多推荐
所有评论(0)