前言

主流的开发模式都是采用前后端分离的方式,我们作为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 $pidfi

完成以上配置就可以进行构建测试了,点击立即构建,查看控制台输出

此时我们算是完成了一个springboot后台项目的自动发布,但需要手动触发,我们想要的结果是,当我更新代码提交svn服务器后,自动完成发布,重启操作,需要实现这个功能我们只需借助svn的钩子脚本就可以。

八、配置SVN 钩子脚本

SVN的钩子分为客户端和服务端,我们使用客户端来完成(本地源码位置),打开TortoiseSVN的设置,新增一个钩子脚本

rebuild.bat 脚本如下,curl后面的地址就是我们第七步中构建触发器所配置的回调地址

#!/bin/bash
curl http://192.168.*.*:8080/job/servier_manage/build?token=token_manage

至此大功告成,以后我们每次提交完代码,都会自动打包并发布到远程服务器进程更新部署 nice

jenkins + svn + maven +svn 实现当SVN提交代码后自动触发打包部署相关推荐

  1. P8-07-23 在 GitLab 提交代码后自动触发 Jenkins 构建;使用禅道进行项目管理

    DevOps 运维开发一体化 持续集成 CI GitLab 用户分组 添加用户 用户权限 访客 开发者 Dev/master主分支 测试 主管 拥有者 里程碑:项目管理与质量管理 禅道(免费开源版本) ...

  2. jenkins与gitlab集成,分支提交代码后自动构建任务(六)

    一.在gitlab中创建token 复制token,此token只显示一次:6SB8y4jt31NnYG5-nWoi 二.在gitlab上为项目创建trunk分支 三.在jenkins中配置gitla ...

  3. 提交github后自动完成habitica habit

    目录 什么是Habitica Habash介绍 结合Habash与Travis-ci自动完成habit 什么是Habitica Habitica 是一个款超赞的游戏化软件,它致力于帮助用户培养习惯和提 ...

  4. 帝国重新生成html,帝国CMS实现提交评论后自动重新生成内容页

    帝国CMS实现提交评论后自动重新生成内容页 发布时间:2020-08-15 16:09:23 来源:亿速云 阅读:88 作者:小新 这篇文章给大家分享的是有关帝国CMS实现提交评论后自动重新生成内容页 ...

  5. SVN提交代码后不刷新状态解决办法

    有时候我们提交代码到SVN上之后,代码文件依然显示红色叹号,怎么办呢? 我们可以打开任务管理器-选中显示所有用户的进程-找到TSVNCache.exe(可能会有多个),将该进程全部结束掉,然后在存放代 ...

  6. jenkins-github上提交代码后构建job(十二)

    当我们有代码提交到代码仓库时,我们希望能自动触发构建任务,这个需求可以用jenkins的"构建触发器"来实现. 一般自己公司有本地的代码参考如gitlab,我这里以github为例 ...

  7. 在 github 上提交代码后,绿格子绿点没有显示

    主要原因是:本地Git的配置邮箱和github上面的邮箱不一致. 如果是用 Sourcetree,可以直接在通用里设置全局的邮箱地址: 如果想要设置某个仓库的邮箱地址,可以打开这个仓库,然后进入设置里 ...

  8. iGerrit提交代码时自动添加Reviewers

    1. 方式1 每次执行push命令时自动添加Reviewer git add . git commimt -m "XX:xxxxxx" # 提交代码到refs分支,并添加了连个Re ...

  9. linux svn提交的时候同时更新web目录文件,linux下svn提交文件后自动更新到web目录中...

    SVN上传时同步到服务器其它目录 svn/examPro/hooks/目录下: 能看到一堆模版钩子文件,我们需要的是post-commit.tmpl, copy一份,命名为post-commit.然后 ...

最新文章

  1. Python+OpenCV实现AI人脸识别身份认证系统(3)—训练人脸识别模型
  2. SQL Server技术问题之视图优缺点
  3. 安装 并且使用_安装密封圈的注意事项
  4. qq动态页面变方格_微信更新“分组显示、群管理”等功能,网友:都是QQ玩剩的姿势...
  5. C# 虚方法(virtual)覆盖(override) - 隐藏(new) - 重载
  6. 51CTO各位博友大家好!
  7. Win Linux 双系统安装指南
  8. python画菱形的代码_python – 使用循环创建菱形图案
  9. Python项目实践:文本词频统计、软文的诗词风
  10. WPF-14:绑定中数据模型必须为public问题
  11. HttpServlet请求重定向
  12. [21] Mesh法线的生成算法
  13. python3安装详细教程
  14. 经典白平衡算法(灰度世界法和完美反射法MATLAB完整代码)
  15. python实现r树存储地理位置_空间索引R树研究_回顾与展望_张明波
  16. SQL Server 无法启动WMI服务
  17. js文本框设置必填项_JS校验表单必填项
  18. 如何用js计算是否为闰年
  19. Vulkan Pipeline
  20. Python+Selenium PO模式Web自动化测试实战

热门文章

  1. 我和 JSRUN 网站的一些故事
  2. Dubbo注解方式与spring的整合原理即@DubboService的机制(2)
  3. Java 之 assert (断言)
  4. 内网搭建Ubuntu(银河麒麟)的apt本地源服务器
  5. 深度解析当贝盒子B3、腾讯极光5S、小米盒子4S之间的区别
  6. Tennessee Eastman(TE过程)简介
  7. 路由之间的转跳及传参
  8. ResNet深度残差网络
  9. [Win32]画笔和规则区域填充
  10. Docker 存储卷