说明:v2.0实现拉取远程git项目自动打包部署到远程服务器上,由于项目git需要专用域网络才能访问,远程服务器安装jenkins无法连接到git地址,所以,此文中jenkins安装在本地。
由于本人也不是很熟,如果文中有错误的地方,也希望大家指正。
一、jenkins安装
1.下载
地址:https://jenkins.io/zh/download/
2.安装
由于图片的复制挺麻烦,所以安装直接参考我前一篇文档,这是Windows版本,linux版本大家可以查看其它资料安装,已安装的可以直接跳过这里,地址:https://blog.csdn.net/weixin_44251399/article/details/88660019
二、Jenkins使用
1.全局设置。
(1)系统设置-插件管理-可选插件里面搜索安装Publish over SSH,Maven Integration plugin两个插件,安装了插件之后,在全局设置里面设置,其他设置默认就行。
(2)配置jdk、git、maven,jdk不选自动安装,git、maven没安装可以选自动安装。
2.创建任务
拉取git上面的项目并打包部署方式
(1)新建任务
复制已有的任务的话,下方会有一个选项可以直接复制已有任务的配置。
任务配置(一次性部署工程下所有服务)
(2)任务配置页需要选择的地方
clean package
cd /data/apps/api-service
./start.sh
任务配置(用于部署工程下部分服务,额外新建任务)
其他设置不变,更改两处设置。
clean
compile
package
-Dmaven.test.skip=true
(3)设置完成之后,点击应用就可以。
直接上传部署本地jar包的方式(不推荐,不如直接上传jar包到服务器上,然后运行脚本算了)
需要设置的地方(描述)
3.运行任务
(1)主页面可以看到创建的任务,点击创建按钮就可以
(2)任务详情页
(3)点击开始创建,左下角点击可以看到输出日志,显示success之后,服务就启动成功了,可以去start.sh脚本对应的输出日志里面查看启动日志。
4.脚本内容(start.sh),记得赋予脚本权限。
chmod 755 start.sh
#脚本存放在服务器/data/apps/api-service目录下
#说明:
#(1)本地jar包存放在D:\develop\jenkins\workspace\ceshi007(这是jenkins建立的任务名)\target目录下
#(2)jenkins上传jar包存放在服务器/data/apps/api-service/tmp/目录下
#(3)新增服务上传的时候在下方按照格式新增即可,会自动部署上传的jar包服务
#(4)新增后,把本业内容全选-复制,粘贴至/data/apps/api-service/start.sh中;
#或者在linux上执行 dos2unix 脚本名(推荐)。
#(win下的换行是回车符+换行符,也就是\r\n,而unix下是换行符\n。linux下不识别\r为回车符,是脚本编码的问题。)
#(5)如果上传的jar包没有在这里配置条件判断,就不会执行部署,只会上传到指定位置而已。
#刷新配置文件
source /etc/profile
#1
#demo.jar服务条件判断部署
#判断指定位置是否存在文件demo.jar(即是否重新上传了jar包来更新服务)
if [ -f “/data/apps/api-service/tmp/demo.jar” ];
then
#获取服务的pid
jar1=demo.jar
pids1=$(ps -ef | grep $jar1 | awk ‘{print $2}’)
#移动旧版本到bak
mv $jar1 bak/
#移动新版本到/data/apps/api-service目录下
cd tmp/
mv /data/apps/api-service/tmp/demo.jar /data/apps/api-service
#关闭服务
kill -9 $pids1
#返回/data/apps/api-service目录下
cd …
#重新运行服务,输出日志
BUILD_ID=dontKillMe
nohup java -jar $jar1 >…/…/logs/demo.log &
#根据日志判断是否启动成功并输出到jenkins控制台显示
echo $jar1"starting service…"
sleep 1
while true;do
#如果日志文件中存在started字段,则代表启动成功(不严谨,应该使用started 具体
#的application好些,由于有些application没有写具体服务名,这里偷懒统一用started了)
tail -1 /data/logs/demo.log |grep “Started " >> /dev/null
if [ $? -eq “0” ];then
echo $jar1"启动成功 !”
break
fi
tail -1 /data/logs/demo.log |grep “ERROR " >> /dev/null
if [ $? -eq “0” ];then
echo $jar1"启动报错 !”
break
fi
done
#条件判断结束
fi
(添加其他服务格式如上)