使用jenkins持续化集成springboot

举报
小鲍侃java 发表于 2021/10/24 09:42:48 2021/10/24
【摘要】 ​在开发环境中,打版部署是一件非常麻烦的事情,所以持续化集成能够大大减少运维的工作量,此篇文章将介绍如何持续化部署springboot项目。 1.jenkens持续化部署的原理持续化部署的原理很简单,就是首先到你提供的svn/git上下载代码,然后获取配置的打包语句,打成jar包。然后使用ssh连接上需要发布的服务器,并执行你提供的启动语法。 2.安装 2.安装jdk 3.安装maven 4...


在开发环境中,打版部署是一件非常麻烦的事情,所以持续化集成能够大大减少运维的工作量,此篇文章将介绍如何持续化部署springboot项目。

1.jenkens持续化部署的原理

持续化部署的原理很简单,就是首先到你提供的svn/git上下载代码,然后获取配置的打包语句,打成jar包。然后使用ssh连接上需要发布的服务器,并执行你提供的启动语法。

2.安装

2.安装jdk

3.安装maven

4.配置jdk与maven

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

*_HOME与环境变量一致

5.其他配置

修改ssh配置。
在这里插入图片描述
配置远程地址,也就是运行项目服务器。
在这里插入图片描述
修改端口号。
在这里插入图片描述

6.安装插件

安装Maven Integration,Publish Over SSH,使用ssh工具连接运行jar包的服务器。
在这里插入图片描述
在这里插入图片描述

7.新建运行空间

在这里插入图片描述
在这里插入图片描述

  1. 1处:为新建空间名称
  2. 2处:需要下载前文的maven插件

8.配置

1.配置保留的jar包数

在这里插入图片描述

这里红圈的意思表示,只保留最新打版的3个jar包。否则jenkens服务器会因为内存不足而崩溃。

2.配置svn地址

在这里插入图片描述
1处填写svn的地址,点击3处会弹出以下页面。需要填写以上svn的账号密码。然后在2处选择3处填写好的信息。
在这里插入图片描述

3.设置打版频率

以下设置为每一次提交都打版。
在这里插入图片描述
此处也可以定时构建。配置如下。
在这里插入图片描述

4.此处添加日志输出

在这里插入图片描述

5.打包命令

在这里插入图片描述

6.配置ssh命令

在这里插入图片描述
以上表示只有在打包成功情况下执行下文流程。
在这里插入图片描述

  • 1处:前面配置运行文件服务器的配置 。
  • 2处:jenkins服务器本地发布jar包的路径 + jar包名称 可以填写 target/*.jar
  • 3处:打包路径 可以填写 target
  • 4处:ssh 发送jar包的路径
  • 5处:ssh的命令

部署原理是,jenkin把代码拉到本地,然后打成jar包到2位置处 ,然后在jar包发到服务器4的路径下,然后使用SSH执行5处脚本。

5处的命令。

cd /usr/local/*
./*.sh stop
./*.sh start

另提供服务器上启动脚本 。

#替换这里jar包的路径,其它代码无需更改
APP_NAME=/usr/local/jar/*.jar
#使用说明,用来提示输入参数
usage() {
    echo "Usage: sh item.sh [start|stop|restart|status]"
    exit 1
}

#检查程序是否在运行
is_exist(){
  pid=`ps -ef|grep $APP_NAME|grep -v grep|awk '{print $2}'`
  #如果不存在返回1,存在返回0     
  if [ -z "${pid}" ]; then
   return 1
  else
    return 0
  fi
}

#启动方法
start(){
  is_exist
  if [ $? -eq 0 ]; then
    echo "${APP_NAME} is already running. pid=${pid}"
  else
    nohup  /usr/local/jdk/jdk1.8.0_231/bin/java -jar ${APP_NAME} > earlywarning.out 2>&1 &
    echo "
           ===============
            程序成功启动!
           ==============="	   
  fi
}

#停止方法
stop(){
  is_exist
  if [ $? -eq "0" ]; then
    kill -9 $pid
   echo "
         ==============
         程序成功关闭!
         =============="
  else
    echo "${APP_NAME} is not running"
  fi  
}

#输出运行状态
status(){
  is_exist
  if [ $? -eq "0" ]; then
    echo "${APP_NAME} is running. Pid is ${pid}"
  else
    echo "${APP_NAME} is NOT running."
  fi
}

#重启
restart(){
  stop
  sleep 5
  start
}

#根据输入参数,选择执行对应方法,不输入则执行使用说明
case "$1" in
  "start")
    start
    ;;
  "stop")
    stop
    ;;
  "status")
    status
    ;;
  "restart")
    restart
    ;;
  *)
    usage
    ;;
esac

以上脚本有个坑,启动时需要填写jdk绝对路径,网上说的什么杀掉进程都不对。

nohup  /usr/local/jdk/jdk1.8.0_231/bin/java -jar ${APP_NAME} > earlywarning.out 2>&1 &

3.启动与关闭命令

后台启动
nohup java -jar jenkins.war
关闭Jenkins
http://localhost:8080/jenkins/exit
重启Jenkies
http://localhost:8080/jenkins/restart
重新加载配置信息
http://localhost:8080/jenkins/reload

4.问题

1.问题一

Jenkins 启动一直显示 Jenkins正在启动,请稍后…

见:https://blog.csdn.net/heatdeath/article/details/79733611。

需要你进入jenkins的工作目录,打开
hudson.model.UpdateCenter.xml
把
http://updates.jenkins-ci.org/update-center.json
改成
http://mirror.xmission.com/jenkins/updates/update-center.json

2.问题二

解决nohup: 忽略输入并把输出追加到"nohup.out"或者nohup: 忽略输入重定向错误到标准输出端。

见:http://www.yayihouse.com/yayishuwu/chapter/1656

执行nohup java -jar do_iptable.jar & 运行jar会提示:nohup: 忽略输入并把输出追加到"nohup.out"
 
执行nohup java -jar do_iptable.jar >/dev/null  & 运行jar会提示:nohup: 忽略输入重定向错误到标准输出端
 
修改运行方式为nohup java -jar do_iptable.jar >/dev/null 2>&1 &即可。

这里有个坑:当自定义start版本号不改变但是内容改变,jenkin不会从新拉取jar包。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。