不积跬步 ,无以至千里
本文是原创持续连载发布,这篇主要是承接(Jenkins自动化部署篇一)的内容,亲手搭建使用Publish Over SSH插件构建项目实现远程自动化部署。如有文中有书写或部署问题,请留言指导修正,互相交流,共同进步,本人QQ:417213902。
一、使用Publish Over SSH插件构建项目
1、原理说明
使用Publish Over SSH插件在Jenkins上发布,应该适用于大部分环境,比如多工程同时发布、多服务器同时发布等场景。其原理是Jenkins集成了Git、Maven将项目检出、打包到Jenkins宿主服务器的工作空间中,再将需要发布的war包发布到应用服务的临时目录下,然后通过该插件远程调用应用服务器上的发布脚本,将临时目录下的war替换容器下的文件,从而达到自动化发布的效果。
2、原理实施
-
第一步 安装Publish Over SSH插件
打开Jenkins页面,点击【系统管理】-【管理插件】-【已安装】下搜索 关键字ssh,出现下图,表示已经安装,若未出现,则去下载Publish Over SSH插件
再去【高级】中上传插件。
-
第二步 配置服务器间的秘钥认证
目的是Jenkins服务器与应用服务器间通信时不需要再次输入密码
⑴ 在Jenkins服务器上生成密钥对,使用ssh-keygen -t rsa命令
# cd ~
# ssh-keygen -t rsa 直接回车
# cd ~/.ssh/
# ll
出现id_rsa 和 id_rsa.pub 这两个文件表示成功
⑵把生成的 id_rsa.pub 文件复制到应用服务器上
# scp id_rsa.pub root@192.168.1.110:~/.ssh/
需要输入110服务器的root密码
文件复制成功
⑶验证是否成功
# ssh root@192.168.1.110
应该是无秘自动登录,表示成功,否则请重新检查配置步骤 第三步 写发布脚本
这是根据个人经验写的简单发布脚本,可以优化的空间很大,但是也是可以实现完整的发布流程
#! /bin/bash
TOMCAT_HOME=/opt/soft/apache-tomcat-7.0.82
JAVA_HOME=/opt/soft/jdk1.8.0_112
TOMCAT_PORT=8080
WAR_HOME=/tmp/*.war
tomcat_pid=`ps -ef | grep 'tomcat' |grep -v 'grep' |awk '{print $2}'`
if [ -n "$tomcat_pid" ];
then
echo "tomcat pid now :" $tomcat_pid
$TOMCAT_HOME/bin/shutdown.sh
sleep 5
fi
#while [ -n "$tomcat_pid" ]
#do
# kill -9 $tomcat_pid
# sleep 5
# tomcat_pid="ps -ef | grep 'tomcat' |grep -v 'grep' |awk '{print $2}'"
# echo "scan tomcat pid :" $tomcat_pid
#done
echo "kill tomcat success !!!"
function fcopyFile(){
if [ -f "$1" ];then
echo "$1 exist"
cp -R $1 $TOMCAT_HOME/webapps
else
echo "$1 not exist"
fi
}
echo "deploy war to tomcat start !!!"
#ls "$WAR_HOME" >> $(date +%Y%m%d%H%M)_deploy_warName.text
fcopyFile "/tmp/dubbo-service.war"
fcopyFile "/tmp/dubbo-web.war"
echo "deploy war to tomcat end !!!"
$TOMCAT_HOME/bin/startup.sh
sleep 5
tomcat_pid=`ps -ef | grep 'tomcat' |grep -v 'grep' |awk '{print $2}'`
if [ ! -n "$tomcat_pid" ];
then
echo "start tomcat failed"
else
echo "start tomcat success"
fi
- 第四步 配置Jenkins
点击【系统管理】-【系统设置】向下翻动找到【Publish over SSH】
配置如下,可指定多台SSH Server
配置完成后,点击 【Test Configuration】,出现success表示成功
-
第五步 构建项目
点击 【新建】选择【构建一个自由风格的软件项目】
配置源码管理
配置Maven 构建
配置构建后操作(重点)
点击 【增加构建后操作步骤】选择【Send build artifacts over SSH】
保存,点击【立即构建】
应用服务器上的临时目录
tomcat下的webapps目录,已发布成功
好了,基于Publish Over SSH插件自动化发布已经搭建好了,我想有了这个例子作为前期辅助,大家脑洞应该可以大开了吧!!!
其实Jenkins发布的方式有很多,大家还是要选择适合自己项目、公司的发布流程去搭建,祝大家学习愉快,天天进步!!!
PS:本来准备这一版,是开始解决架构过程中的单点问题的,但是后来发现Jenkins篇一过于简单,日常场景很多都不实用,所以决定写了这篇。
后面还想再进一步学习下Jenkins结合Ansible实现自动化部署和回滚,日常工作比较忙,还是得看时间咯!!!
2017-11-09 22:41:00