说明:部署springboot项目的jar

前提(参考:https://www.cnblogs.com/myitnews/p/11493779.html):

  • 全局安全配置(前面配置过)
  • 全局工具配置(前面配置过)
  • 管理插件(根据需要安装插件,前面配置过)
  • 已将项目代码提交到SVN仓库。

1. 创建任务

2. 配置项目

(1) General

勾选丢弃旧的构建,选择是否备份被替换的旧包。我这里选择备份最近的10个。

(2) 源码管理

(3) 构建环境

代码构建的过程中会将日志打印出来。

(3) Build

clean install -Dmaven.test.skip=true -Ptest

(4) Post Steps

#!/bin/bash
# /opt/jenkins/deploy/是新建的目录
# 大致意思就是进入目录,stop.sh:停止应用; replace.sh:拷贝应用jar; startup.sh:运行jar
cd /opt/jenkins/deploy/
./stop.sh
./replace.sh
echo "Execute shell Finish" BUILD_ID=dontKillMe nohup /opt/jenkins/deploy/startup.sh &

在/opt/jenkins/deploy/目录下创建startup.sh、stop.sh、replace.sh。

stop.sh、replace.sh和startup.sh内容如下:

stop.sh

#!/bin/bash
# stop.sh
# shelloworld-0.0.1-SNAPSHOT.jar是生成的jar包名称
echo "Stopping SpringBoot"
pid=`ps -ef | grep shelloworld-0.0.1-SNAPSHOT.jar | grep -v grep | awk '{print $2}'`
if ["$pid" == ""]
then
echo "helloboot is already stop!"
else
echo "kill -9 的pid:"+$pid
kill -9 $pid
fi

replace.sh

#!/bin/bash
# replace.sh
# HelloWorld 是在Jenkins中创建的任务名称
# /opt/jenkins/project 是新建存放jar包的目录,将Jenkins生成的jar包拷贝到这个目录下
cp /root/.jenkins/workspace/HelloWorld/target/shelloworld-0.0.1-SNAPSHOT.jar /opt/jenkins/project

startup.sh

#!/bin/bash
# startup.sh
java -jar /opt/jenkins/project/shelloworld-0.0.1-SNAPSHOT.jar>log.file 2>&1&

3. 立即构建,查看控制台输出,成功后,浏览器访问。

jenkins+maven+svn实现springboot项目的自动化部署过程的更多相关文章

  1. Jenkins+maven+SVN构建java项目中遇到的问题及解决

    [ERROR] No goals have been specified for this build. You must specify a valid lifecycle phase or a g ...

  2. Jenkins+Maven+Git搭建持续集成和自动化部署的配置手记

    前言    持续集成这个概念已经成为软件开发的主流,可以更频繁的进行测试,尽早发现问题并提示.自动化部署就更不用说了,可以加快部署速度,并可以有效减少人为操作的失误.之前一直没有把这个做起来,最近的新 ...

  3. Jenkins学习总结(3)——Jenkins+Maven+Git搭建持续集成和自动化部署的

    前言 持续集成这个概念已经成为软件开发的主流,可以更频繁的进行测试,尽早发现问题并提示.自动化部署就更不用说了,可以加快部署速度,并可以有效减少人为操作的失误.之前一直没有把这个做起来,最近的新项目正 ...

  4. 利用PowerShell+Jenkins,实现项目的自动化部署

    当项目越来越庞大,部署环境越来越多以后,就会越来越依赖于自动化.比如本人公司的项目,目前有6个web和4个windows service,同时本地有两套环境:开发自测试环境和QA测试环境.每次版本发布 ...

  5. Docker+Jenkins+Maven+SVN搭建持续集成环境

    Docker+Jenkins+Maven+SVN搭建持续集成环境 环境拓扑图(实验项目使用PHP环境) 发布流程图 环境说明 系统:Centos 7.4 x64 Docker版本:18.09.0 Ma ...

  6. 利用Jenkins实现JavaWeb项目的自动化部署

    修改代码,打包,上传,重启... 大把的时间花费在这些重复无味的工作上.笔者与当前主流的价值观保持一致:我们应该把时间花费在更有意义的事情上.我们可以尝试借助一些工具,让这些重复机械的工作交给计算机去 ...

  7. 基于Maven的SpringBoot项目实现热部署的两种方式

    转载:http://blog.csdn.net/tengxing007/article/details/72675168 前言 JRebel是JavaEE中比较流行的热部署插件,可快速实现热部署,节省 ...

  8. (四)创建基于maven的javaFX+springboot项目,用户界面与后台逻辑分离方式

    下面来介绍创建maven的javaFX+springboot项目,基于用户界面与后天逻辑分离的方式,用户界面使用fxml文件来常见,类似于jsp,可以引入css文件修饰界面 maven依赖 <d ...

  9. (三)创建基于maven的javaFX+springboot项目创建

    创建基于maven的javaFx+springboot项目有两种方式,第一种为通过非编码的方式来设计UI集成springboot:第二种为分离用户界面(UI)和后端逻辑集成springboot,其中用 ...

随机推荐

  1. json去除value值的前后空格

    /** * @Title: JsonStrTrim * @author : jsw * @date : 2012-12-7 * @time : 上午09:19:18 * @Description: 传 ...

  2. golang基础之第一个go程序

    编写 Hello World 创建文件 hello.go,不写入任何内容.按照如下的命令尝试进行编译 $ go run hello.go 将会打印出如下错误: package main: hello. ...

  3. Java连载20-复习、switch语句

    一.复习 1.标识符(自己定义的,下划线.美元符号) 2.驼峰命名(变量名,方法名首字母小写) 3.关键字(就是固定的那几个) 4.字面值(数据.有类型.八种基本类型从小到大,byte\char=sh ...

  4. PDF文件添加二维码水印教程

    maven配置iText的jar,主要不是所有私服都有iText的jar,maven仓库没有的,可以去https://mvnrepository.com/artifact/com.itextpdf/i ...

  5. python threading Semaphore

    #Semaphore 是用于控制进入数量的锁,控制同时进行的线程,内部是基于Condition来进行实现的 #文件, 读.写, 写一般只是用于一个线程写,读可以允许有多个 #做爬虫 import th ...

  6. Entity Framework 6 中如何获取 EntityTypeConfiguration 的 Edm 信息?(四)

    经过上一篇,里面有测试代码,循环60万次,耗时14秒.本次我们增加缓存来优化它. DbContextExtensions.cs using System; using System.Collectio ...

  7. 你不得不知的Golang线程模型 [转载]

    原著:翟陆续(加多) 资深Java , 著Java并发编程之美 一.前言 本节我们来探讨Go的线程模型,首先我们先来回顾下常见的三种线程模型,然后在介绍Go中独特的线程模型. 二.三种线程模型 线程的 ...

  8. 大一结业项目之一(C#晨曦超市管理系统 )

                                             C#晨曦超市管理系统                            我现是湖南工程职业技术学院大一的学生,很快 ...

  9. 十三道Python练习题

    一.完美立方 编写一个程序,对任给的正整数N (N≤100),寻找所有的四元组(a, b, c, d),使得a^3= b^3 + c^3 + d^3,其中a,b,c,d 大于 1, 小于等于N. 输入 ...

  10. Java自学-集合框架 遍历

    遍历ArrayList的三种方法 步骤 1 : 用for循环遍历 通过前面的学习,知道了可以用size()和get()分别得到大小,和获取指定位置的元素,结合for循环就可以遍历出ArrayList的 ...