前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Jenkins部署码云SpringBoot项目到远程服务器

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

作者头像
dalaoyang
发布2018-12-10 09:53:58
4.4K0
发布2018-12-10 09:53:58
举报
文章被收录于专栏:dalaoyang

本文是上一篇文章的后续,上一篇只是利用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脚本代码如下,这里也没什么好说的,进入对应目录,将脚本赋予权限,然后执行。

代码语言:javascript
复制
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脚本复制到打包后文件夹,代码如下:

代码语言:javascript
复制
mvn clean install -Dmaven.test.skip=true;
cp /usr/local/shell/start_jar.sh start_${project_name}.sh;

如图

3.测试运行

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

代码语言:javascript
复制
#!/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使用就是一个熟悉了就感觉没那么难了,个人感觉这个工具就是需要慢慢熟悉,一开始是最难入手的。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018-11-07 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.环境准备
    • 1.1 安装插件
      • 1.2 环境配置
      • 2.项目配置
        • 2.1 参数
          • 2.2 Git
            • 2.3 Build Environment
              • 2.4 Build
              • 3.测试运行
              • 4.总结
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档