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使用就是一个熟悉了就感觉没那么难了,个人感觉这个工具就是需要慢慢熟悉,一开始是最难入手的。
Jenkins部署码云SpringBoot项目到远程服务器的更多相关文章
- Jenkins部署码云SpringBoot项目
本文介绍jenkins如何从gitee上clone项目,然后使用maven打包并后台启动. 1.Jenkins介绍 Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续 ...
- 搞定springboot项目连接远程服务器上kafka遇到的坑以及完整的例子
版本 springboot 2.1.5.RELEASE kafka 2.2 遇到的坑 用最新的springboot就要用最新的kafka版本! 当我启动云服务器上的zk后,再启动kafka后台日志也没 ...
- 2017 年度码云新增项目排行榜 TOP 50,为它们打“call”
2017 年度码云新增项目排行榜 TOP 50 正式出炉 !2017 结束了,我们来关注一下这一年里码云上新增的最热门的开源项目吧.此榜单根据 2017 年在码云上新增开源项目的 Watch.Star ...
- Jenkins联动码云自动匹配分支进行构建流水线
一.安装Generic Webhook Trigger插件 二.创建项目 创建项目之前先准备自己的项目,如果没有可以我fork的一个项目.地址是:https://gitee.com/jokerbai/ ...
- 2018 年度码云热门项目排行榜 TOP 10
2016 年度码云热门项目排行榜 TOP 10 是通过开源项目2016年在码云上的 Watch.Star.Fork 数量来评定的榜单.码云平台发展至今,涌现了越来越多优秀的开源项目,越来越多的开源作者 ...
- 使用Git将项目托管到码云及从码云导入项目到本地
前言 码云+Git+IntellJ IDEA 欢迎转载,请注明作者和出处哦☺ Git 的安装及使用的教程 最好不要在官网下载,官网下载要vpn而且速度还很慢 . 推荐在 https://gi ...
- 码云Android项目构建注意事项(转载)
1.ant项目 build.xml必须位于项目根目录. 2.maven项目 pom.xml必须位于项目根目录. 3.gradle项目 由于gradle的配置灵活,我们做了一些规范,并且增加了一下机制来 ...
- IntelliJ IDEA自动部署项目至远程服务器与传统部署项目至远程服务器的区别
每次开发Java项目时,对于所有Java开发人员来说,最枯燥的不是修改代码,而是实时将自己的代码上传至远程服务器,进行测试或者部署,本人最初开发也是这样,通过使用Xshell 5,WinSCP等工具对 ...
- 最新JetBrainsPyCharm自动部署Python(Django,tornado等)项目至远程服务器
每次开发Python项目时,对于所有Python开发人员来说,最枯燥的不是修改代码,而是实时将自己的代码上传至远程服务器,进行测试或者部署,本人最初开发也是这样,通过使用Xshell 5,WinSCP ...
随机推荐
- JS:事件循环机制、调用栈以及任务队列
点击查看原文 写在前面 js里的事件循环机制十分有趣.从很多面试题也可以看出来,考察简单的setTimeout也就是考察这个机制的. 在之前,我只是简单地认为由于函数执行很快,setTimeout执行 ...
- MyEclipes相关配置
0. MyEclipes10 相关下载资源(私人珍藏版) 链接:http://pan.baidu.com/s/1eSIdObS密码:0cjy 1. myEclipes连接Tomcat http://w ...
- AR 前言
LBS 基于位置的服务,是指通过电信移动运营商的无线电通讯网络或外部定位方式,获取移动终端用户的位置信息,在GIS平台的支持下,为用户提供相应服务的一种增值业务. 它包括两层含义:首先是确定移动设备或 ...
- 009-Python-面向对象
1.面向对象: 1.1什么是类? 类:把一类事物的相同的特征和动作整合到一起就是类,类是一个抽象的概念: 1.2什么是对象? 对象:就是基于类而创建的一个具体事物(具体存在的)也是特征和动作整合到一起 ...
- JAVA 数据类型数组
普通int: public class Array { //成员变量 private int[] data; private int size; //构造函数,传入数组的容量capacity构造Arr ...
- MongDb介绍及简单实用
一:介绍 MongoDB是一个高性能,开源,无模式的文档型数据库,是当前NoSql数据库中比较热门的一种.它在许多场景下可用于替代传统的关系型数据库或键/值存储方式.Mongo使用C ...
- ionic2程序调试
新手一枚,之前一直做.net开发,最近接触Ionic2,也没有人带,只能自己一点点抠文档,查资料.一直苦于无法直接调试打包发不好的app,只能在代码里面加上alert一点一点的抛出要看信息,感觉就像瞎 ...
- Flink--sink到kafka
package com.flink.DataStream import java.util.Properties import org.apache.flink.api.common.serializ ...
- 查看windows电脑CPU核心数,线程数
在Windows中,在cmd命令中输入“wmic”,然后在出现的新窗口中输入“cpu get *”即可查看物理CPU数.CPU核心数.线程数.其中, Name:表示物理CPU数 NumberOfC ...
- BZOJ1095 [ZJOI2007]Hide 捉迷藏 动态点分治 堆
原文链接https://www.cnblogs.com/zhouzhendong/p/BZOJ1095.html 题目传送门 - BZOJ1095 题意 有 N 个点,每一个点是黑色或者白色,一开始所 ...