Jenkins部署码云SpringBoot项目到远程服务器

本文是上一篇文章的后续,上一篇只是利用Jenkins部署项目到本地,并启动,本文是将项目部署到远程服务器并执行。

1.环境准备

1.1 安装插件

上一篇文章已经介绍了需要安装的应用及插件,这一篇还需要2个插件,分别是如下插件:

  • Git Parameter Plug-In :这个插件用于获取git上信息,如分支和标签
  • Publish Over SSH :这个插件用于将本地文件发送到远程服务器

1.2 环境配置

这里需要在 系统管理->系统设置->Publish over SSH配置远程部署的服务器,如图:

其中参数配置如下:

  • Passphrase :远程服务器密码
  • Name :这个就是给远程连接起个名
  • Hostname :远程服务器地址
  • Username :远程服务器用户名
  • Remote Directory :上传文件路径

都配置完成后可以点击下面Test Configuration进行测试,如果提示Success则证明配置成功。

2.项目配置

这里大致分为四个部分

2.1 参数

首先是参数,基本上和上一篇差不多,新增了几个,有一个和之前的不一样,使用的Git Parameter,这里选择的分支(branch),如下图:

2.2 Git

git没什么好说的,和之前一样,见下图。

2.3 Build Environment

这里配置了要传到对应服务器的东西,以及需要使用的脚本,见下图。

Exec command脚本代码如下,这里也没什么好说的,进入对应目录,将脚本赋予权限,然后执行。

cd ${jar_path}/${project_name}/;
chmod 777 start_${project_name}.sh;
./start_${project_name}.sh ${jar_path} ${jar_name} ${spring_profile} ${check_url} ${project_name} ${jdk_path}

2.4 Build

这里就是将项目打包,然后把服务器上shell脚本复制到打包后文件夹,代码如下:

mvn clean install -Dmaven.test.skip=true;
cp /usr/local/shell/start_jar.sh start_${project_name}.sh;

如图

3.测试运行

运行前,展示一下远程上传的脚本,脚本内容并非本人自己写的,借鉴了其他组的脚本:

#!/bin/bash

#export BUILD_ID=dontKillMe这一句很重要,这样指定了,项目启动之后才不会被Jenkins杀掉。
export BUILD_ID=dontKillMe

jar_path=${1}
jar_name=${2}
spring_profile=${3}
check_url=${4}
project_name=${5}
jdk_path=${6}

if  [ ! -n "${jar_path}" ] ;then
    echo "参数 1. jar_path 为空"
    exit 1
fi
if  [ ! -n "${jar_name}" ] ;then
    echo "参数 2. jar_name 为空"
    exit 1
fi

if  [ ! -n "${spring_profile}" ] ;then
    echo "参数 3. spring_profile 为空"
    exit 1
fi
if  [ ! -n "${check_url}" ] ;then
    echo "参数 4. check_url 为空"
    exit 1
fi
if  [ ! -n "${project_name}" ] ;then
    echo "参数 5. project_name 为空"
    exit 1
fi
if  [ ! -n "${jdk_path}" ] ;then
    echo "参数 6. jdk_path 为空"
    exit 1
fi

#Jenkins中编译好的jar位置
deploy_path=${jar_path}/${project_name}/

#服务检查
check_attempts=20
check_timeout=6

#进入工作目录,log会打在该目录下
cd ${deploy_path}

echo ‘deploy_path‘ ${deploy_path}
#获取运行编译好的进程ID,便于我们在重新部署项目的时候先杀掉以前的进程
pid=$(cat ${deploy_path}/pid)

#杀掉以前可能启动的项目进程
kill -9 ${pid}

#启动jar,指定SpringBoot的profiles为test,后台启动
nohup ${jdk_path} -jar -Xms256m -Xmx256m -XX:-HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=./logs -Dspring.profiles.active=${spring_profile} ${deploy_path}/${jar_name} >/dev/null &

#将进程ID存入到pid文件中
echo $! > ${deploy_path}/pid

#服务启动检测
online=false
echo "检测服务启动状态"
for (( i=1; i<=${check_attempts}; i++ ))
do
  code=`curl -sL --connect-timeout 20 --max-time 30 -w "%{http_code}\\n" "${check_url}" -o /dev/null`
  echo "服务检测返回结果:$code"
  if [ "${code}" = "200" ]; then
    echo "已检测到服务:${check_url}"
    sleep 10
    online=true
    break
  else
    echo "未检测到服务,等待 ${check_timeout} 秒后重试"
    sleep ${check_timeout}
  fi
done
if $online; then
  echo "服务检查结束,服务启动正常"
  exit 0
else
  echo "服务检查结束,服务启动失败"
  exit 1
fi

在jenkins部署项目,如下图,对应参数,分支只有一个master。这里的测试地址我选择的是项目首页,如下:

点击Build按钮后,等待处理即可,可能由于两个服务器间传输文件比较慢的原因相对时间不是很快。执行结束后见下图:

然后访问http://47.98.109.195:8888/可以看到下图:

4.总结

总体感觉jenkins使用就是一个熟悉了就感觉没那么难了,个人感觉这个工具就是需要慢慢熟悉,一开始是最难入手的。

原文地址:https://www.cnblogs.com/dalaoyang/p/9924613.html

时间: 2024-10-08 10:04:23

Jenkins部署码云SpringBoot项目到远程服务器的相关文章

在云服务器上部署自己的SpringBoot项目

在云服务器上部署自己的SpringBoot项目 因为正在开发一个个人的微信小程序项目,所以开始学习如何部署SpringBoot服务器,之前完全没有接触过部署服务器相关,只能从0开始摸索,网上各种文章杂乱得很,而且大多都语焉不详,完全跟不上作者的脑回路,所以摸索得非常痛苦! 所幸最后成功了,记录一下完整的步骤,造福后来的跟我一样的小白们. 部署步骤 云服务器的购买和配置 安装JDK 安装Tomcat 安装svn 安装Maven 打包SpringBoot项目 设置安全组 安装MySQL 服务器的代码

2017 年度码云新增项目排行榜 TOP 50,为它们打“call”

2017 年度码云新增项目排行榜 TOP 50 正式出炉 !2017 结束了,我们来关注一下这一年里码云上新增的最热门的开源项目吧.此榜单根据 2017 年在码云上新增开源项目的 Watch.Star.Fork 数量以及其他角度进行统计,从而得出前 50 名最热门的开源项目. 码云发展至今,越来越多的开源作者选择在上面开源自己的作品,通过这份 2017 码云新增项目 TOP 50 榜单,希望大家可以了解到 2017 年里国内开源的现状,也能在其中找到自己需要的项目. 1.guns Guns 基于

码云Android项目构建注意事项(转载)

1.ant项目 build.xml必须位于项目根目录. 2.maven项目 pom.xml必须位于项目根目录. 3.gradle项目 由于gradle的配置灵活,我们做了一些规范,并且增加了一下机制来处理签名问题. 二.码云Android项目构建示例 android-app 项目目录结构(以osc/android-app为例) gradle 需要的配置和脚本有: gradlew/gradlew.bat/build.gradle => 构建脚本. settings.gradle => 子项目.

部署项目到远程服务器

JavaWeb 甚至 Html 都还没开始学,我就鼓捣着部署到服务器的活,是不是有点装逼嫌疑? 其实,学习 JavaWeb 纯属于个人兴趣,兴趣的起源就是搭建自己的网站,所以在一开始写 HelloWorld 的时候,就把它打包部署到远程服务器上,让任何人都可通过浏览器进行访问(虽然并没有人)我的 HelloWorld 页面,这可以大大激发我的积极性. 前期准备: 首先我们得有一个云主机才行,露珠的是在腾讯云租的最低配置的 centos7 服务器,在校大学生有优惠,一个月一块钱. 在 centos

幸运飞艇源码出售Android jitpick github 码云 创建自己的远程依赖库

远程幸运飞艇源码出售论坛:haozbbs.com Q1446595067依赖 今天说一下最容易的方式 使用jitpack.io进行操作 首先先看一下效果 这里写图片描述 compile'com.xxx' 诸如此类 好 开始我们的show (我不姓陈) 第一步 在码云 或gtihub 上 创建一个仓库 这里写图片描述 然后 使用 git clone 到本地 并在这个路径下 创建项目 第二步 创建工程 目录结构如下 这里写图片描述 第三步 工程下创建一个module 选择 library 如图 这里

通过git从码云克隆项目到本地

Git从码云或者Github 克隆代码到本地 1.下载安装Git,傻瓜式下一步下一步即可... 2.配置Git: 2.1.选择你要clone到本地的路径:右键--->$ Git Bash Here,弹出Linux命令窗口:$ cd ~直接回退到当前盘符下,再输入:$ cd E:\Code 就可以进入你自己的目录: 2.2.$ git config --global user.name "你自己的用户名"    注意空格,换成自己的用户名Github或者码云(克隆哪个的就用对应的用

idea中git从码云克隆项目到本地

1.首先需要在操作系统上安装Git分布式管理系统 此处自行百度............. 2.在Intellij IDEA中配置Git 打开Settings(File-->Settings) --> 在搜索栏内输入git,回车跳转到Git配置页面 --> 将git的运行路径填入Path to Git executable一栏(一般IDEA会自动定位),其他配置选项按默认即可 --> 点击Test进行测试,配置成功将显示如下界面 同理,配置GitHub也是一样(没有GitHub帐号的

更新码云上项目

我之前一直想更新码云上的一个项目,总是报错,最后用克隆的方法更新成功了.报错的图片我没有保存,上网搜了一个,一直报这个错误 先在任意一个文件夹右键,点击Git Bash Here 例如在E盘下面右键点击Git Bash Here 然后复制码云上的项目地址,使用clone语句,此时,E盘就会多了一个ClothesShopPOS的文件夹(ClothesShopPOS是我项目的名字),是从码云上下载来的. 将需要替换的文件复制替换到E:/ClothesShopPOS目录下 然后再此目录下(E:/Clo

上传springboot项目到远程docker

昨天在云服务器上配置了docker环境,正好手边有个springboot的项目.今天研究一下如何将一个springboot项目打包到docker容器,然后通过运行一个镜像来启动项目. 1.打开docker允许远程访问docker的功能 选“E”继续 添加红框内容 -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock 配置完成后保存退出,然后重启docker systemctl daemon-reload service docker resta