在idea中编写自动拉取、编译、启动springboot项目的shell脚本

idea 开发环境搭建

idea中安装shell开发插件

服务器具备的条件

  1. 已经安装 lsof(用于检查端口占用)
  2. 已安装 git
  3. 安装 maven
  4. 有 java 环境

背景

代码提交到仓库后,需要在服务器上重新部署 springboot 的代码,每次自己打jar包上传到服务器步骤太繁琐,考虑把要使用的命令放在脚本中

初始化拉取指定分支的代码

blog_int.sh

#!/usr/bin/env bash

cd /data/code/
git clone -b V3.0.0 [email protected]:daleyzou/blog.git

部署的代码

deplog.sh

#!/usr/bin/env bash

cd /data/code/blog
echo '自动部署Springboot项目脚本...'
echo '1. 拉取代码...'
git pull
echo '2. 检查8000端口是否被占用...'
pid_blog=`lsof -i :8000|grep -v "PID"|awk '{print $2}'`
if [ "$pid_blog" != "" ];
then
    echo '8000端口被占用'
    echo $pid_blog
    kill -9 "$pid_blog"
    echo $pid_blog '进程已被杀死'
else
    echo "端口未被占用"
fi
echo '3. 删除已有jar包...'
if [ ! -f "/data/jarDir/blog-1.0.1-SNAPSHOT.jar" ];then
echo "文件不存在"
else
rm -f /data/jarDir/blog-1.0.1-SNAPSHOT.jar
fi
echo '4. 清理原有项目...'
/data/usr/local/apache-maven/bin/mvn clean
echo '5. 打包...'
/data/usr/local/apache-maven/bin/mvn clean package -Dmaven.test.skip=true
echo '6. 将打包后的 jar 文件移动到指定目录...'
mv /data/code/blog/target/blog-1.0.1-SNAPSHOT.jar /data/jarDir
echo '7. 后台运行jar包...'
nohup java -jar /data/jarDir/blog-1.0.1-SNAPSHOT.jar > /data/jarDir/log.out 2>&1 &
以后当代码提交到仓库后,直接执行 deploy.sh 就可以完成代码的重新拉取、编译、启动操作

原文地址:https://www.cnblogs.com/daleyzou/p/springbootAutoDeploy.html

时间: 2024-11-03 20:57:28

在idea中编写自动拉取、编译、启动springboot项目的shell脚本的相关文章

python自动拉取备份压缩包并删除3天前的旧备份

业务场景,异地机房自动拉取已备份好的tar.gz数据库压缩包,并且只保留3天内的压缩包文件,用python实现 #!/usr/bin/env python import requests,time,os,datetime,platform from threading import Thread #cd backup dir if platform.system() == 'Windows': os.chdir('D:\python\mysqlbackup_all') elif platform

SpringBoot项目执行脚本, 自动拉取最新代码并重启

gitPullThenRestart.sh # 日期: 20191230 # 作者: 何鹏举 # 说明: 项目部署在阿里云上, 每次编译打包上传比较麻烦, 因此编写此脚本, 用于应用内可以点击按钮进行自动重启. # 备注: 1) 阿里云的插件也是需要每次上传到OSS再启动, 上传的jar包比较大(大部分是第三方依赖), 感觉不好 # 2) 使用jenkins, 就一个项目再去搭建一套jenkins, 必要性也不是很大 # 以下代码中 /root/hekele 为git clone的项目路径, /

Spark Streaming中向flume拉取数据

在这里看到的解决方法 https://issues.apache.org/jira/browse/SPARK-1729 请是个人理解,有问题请大家留言. 其实本身flume是不支持像KAFKA一样的发布/订阅功能的,也就是说无法让spark去flume拉取数据,所以老外就想了个取巧的办法. 在flume中其实sinks是向channel主动拿数据的,那么就让就自定义sinks进行自监听,然后使sparkstreaming先和sinks连接在一起, 让streaming来决定是否拿数据及拿数据的频

Window中的Docker 拉取Mysql镜像 并在本地Navicate链接

首先本地   拉取mysql镜像 以下是所有mysql镜像 我自己下载的为5.6   下面 以5.6为例:(拉取mysql5.6镜像) docker pull mysql:5.6 创建一个容器 docker run --name "mysql" -p 3307:3306 -e MYSQL_ROOT_PASSWORD=自己的数据库密码 -d mysql:5.6 --name    容器的名称 -p       本地(宿主机)端口:容器端口 -e MYSQL_ROOT_PASSWORD=*

Dockerfile 构建后端springboot应用并用shell脚本实现jenkins自动构建

Dockerfile 文件构建docker镜像 FROM centos MAINTAINER zh*****eng "z*******ch.cn" ENV LANG en_US.UTF-8 RUN /bin/cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo 'Asia/Shanghai' >/etc/timezone WORKDIR /home RUN mkdir JDK COPY jdk-8u

ansible自动安装并配置ssh免密环境shell脚本

#!/bin/bash clearUSER=rootPASSWD=amunlinuxPUBDIR=/root/.sshcat > ~/prompt-ans.txt << EOF 如果需要配置服务器数量过多,最好在外部保存到ip-list文件内,易于美观 如果.ssh/ 下存在文件,需要删除后再次执行脚本,不想删除注释关键字即可 服务器密码需要统一 EOFcat ~/prompt-ans.txtsleep 4syum -y install ansible expect* which exp

Jenkins拉取github库代码执行构建

前言 上篇文章写了关于定时构建,以及构建后发送邮件的内容,但是构建时运行的代码是我们手动添加到Jenkins工作空间的.这篇文章我们说一说自动从GitHub远程库拉取代码,执行构建,废话不多说,开始!(开始之前,我们需要安装GitHub插件:GitHub plugin 如何安装自行百度吧) 新建项目 仍然和上一篇文章一样,我们新建一个自由风格的项目(我这里就不新建了 我直接在原有的项目基础上配置) 获取GitHub地址 我们项目所在路径的地址 项目配置 General 输入项目描述, 勾选Git

K8s 从懵圈到熟练 – 镜像拉取这件小事

作者 | 声东 阿里云售后技术专家 导读:相比 K8s 集群的其他功能,私有镜像的自动拉取,看起来可能是比较简单的.而镜像拉取失败,大多数情况下都和权限有关.所以,在处理相关问题的时候,我们往往会轻松的说:这问题很简单,肯定是权限问题.但实际的情况是,我们经常为一个问题,花了多个人的时间却找不到原因.这主要还是我们对镜像拉取,特别是私有镜像自动拉取的原理理解不深.这篇文章,作者将带领大家讨论下相关原理. 顺序上来说,私有镜像自动拉取会首先通过阿里云 Acr credential helper 组

网页滚动到底部,拉取数据

网页滚动模式 //滚到到底部自动拉取数据 //页面滚到底部异步加载下一页数据 $(window).scroll(function () { //已经滚动到上面的页面高度 var scrollTop = parseFloat($(this).scrollTop()), //页面高度 scrollHeight = $(document).height(), //浏览器窗口高度 windowHeight = parseFloat($(this).height()), totalHeight = scr