前言
主流的开发模式都是采用前后端分离的方式,我们作为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
本文介绍如何使用Jenkins配合SVN及Maven实现自动化的持续集成与部署流程,包括安装配置Jenkins、配置系统及项目,以及通过SVN钩子脚本实现代码提交后的自动构建与部署。
916

被折叠的 条评论
为什么被折叠?



