jenkins实现linux项目的自动化打包部署(三)实现部署

一、新建一个自由风格的项目,并实现部署
要实现部署,首先需要将打包好的文件上传到服务器上,在项目已经能实现打包的基础上(关于打包的配置,可参考我上一篇文章),在“构建”处,新增send files or execute commands over SSH
在这里插入图片描述
然后进行如下配置:
Source files:想要上传的文件路径(路径要从项目名称的下一级开始写起)
例如我的项目名称为test-1,想要上传target文件夹下的全部jar包,那么这里要写的路径就是\stiffness\stiffness-main\target*.jar
在这里插入图片描述
Remove prefix:删除前缀(针对上面的source files目录,会移除全部匹配的目录)
关于如何匹配删除前缀,可参考以下网址
https://wiki.jenkins.io/display/JENKINS/Publish+Over#PublishOver-transfer
Remote directory:远程目录(要上传到服务器的具体目录地址)
例如我要把文件上传到/usr/djp/stiffness下面,这里需要写/usr/djp/stiffness/,最后一定要有反斜杠,表示定位到stiffness目录下
Exec command:远程服务器执行的命令
在这里插入图片描述
配置完后,点击应用保存,然后构建项目,控制台出现如下信息即说明文件上传成功了,也可以去服务器上验证是否已经上传。
在这里插入图片描述
在保证文件上传成功的前提下,我们就可以写一些命令,让项目启动起来,在“构建环境”处勾选Execute shell script on remote host using ssh,然后可以写构建前/构建后需要执行的命令,这里的第一行一定要写上source /etc/profile,否则无法执行下面的命令,而且有了这句,启动的命令不能直接用nohup java -jar -Xms512m -Xmx1024m XXX.jar &,这样jenkins控制台会一直打印日志信息,可以用nohup java -jar -Xms512m -Xmx1024m XXX.jar > /dev/null 2>&1 &,具体的命令根据项目需要进行编写。
下图中我写的构建前脚本,是把服务停止;构建后脚本,是启动服务(deploy.sh是启动停止服务的脚本,上传到文档最后,可进行参考)
在这里插入图片描述
还可以在“构建后操作”处,新增e-mail notification,构建有报错时,会发送邮件进行相关人员的提醒。
在这里插入图片描述
到此,一个项目完成的打包-上传-启动就配置完成了!快去构建试试吧!
二、新建一个maven项目,并实现部署
只有页签名称的不同,配置是完全一样的
在配置好打包的基础上(关于打包的配置,可参考我上一篇文章),在“Post Steps”处,添加send files or execute commands over SSH
在这里插入图片描述
接下来配置SSH,配置构建后操作,此处省略,与上文中第一步一致,只是页签的名称有了变化。

三、文章中提到的deploy.sh脚本代码如下,大家可进行参考:
#!/bin/bash
#这里可替换为你自己的执行程序,其他代码无需更改
APP_NAME=hold-steady.jar

#使用说明,用来提示输入参数
usage() {
echo “Usage: sh deploy.sh [start|stop|restart|status]”
exit 1
}

#检查程序是否在运行
is_exist() {
pid=ps -ef | grep $APP_NAME | grep -v grep | awk '{print $2}'
#如果不存在返回1,存在返回0
if [ -z “${pid}” ]; then
return 1
else
return 0
fi
}

#启动方法
start() {
is_exist
if [ ? e q " 0 " ] ; t h e n e c h o " ? -eq "0" ]; then echo " {APP_NAME} is already running. pid=${pid} ."
else
nohup java -jar -Xms512m -Xmx1024m $APP_NAME > /dev/null 2>&1 &

fi
}

#停止方法
stop() {
is_exist
if [ $? -eq “0” ]; then
kill -9 p i d e l s e e c h o " pid else echo " {APP_NAME} is not running"
fi
}

#输出运行状态
status() {
is_exist
if [ ? e q " 0 " ] ; t h e n e c h o " ? -eq "0" ]; then echo " {APP_NAME} is running. Pid is p i d " e l s e e c h o " {pid}" else echo " {APP_NAME} is not running."
fi
}

#重启
restart() {
stop
start
}

#根据输入参数,选择执行对应方法,不输入则执行使用说明
case “$1” in
“start”)
start
;;
“stop”)
stop
;;
“status”)
status
;;
“restart”)
restart
;;
*)
usage
;;
esac

猜你喜欢

转载自blog.csdn.net/haiou24/article/details/92830720