jenkins publish over ssh插件

publish over ssh插件能够容许jenkins经过ssh登陆服务器传输文件并执行脚原本执行发布操做。java

安装配置publish over ssh插件

1.安装插件,略web

2.使用ssh-keygen为jenkins单独生成一个证书,将公钥放到须要发布应用服务器上,我生成在了jenkins的data目录下,以避免和root用户默认的证书冲突 注意:必定要在jenkins服务器上以jenkins的tomcat的启动用户去ssh username@ip ,当问到是否加入指纹时选yes,把指纹加进known_hosts,否则jenkins使用publish over ssh时会一直超时tomcat

3.配置插件,进入 系统管理 -》 系统设置 里的 Publish over SSH 添加证书信息:需填写生成私钥的密码,可填写私钥文件的路径或填写私钥文件的内容 添加服务器: 不用多说了,最后test configuration看是否成功ssh服务器

输入图片说明

配置job使用publish over ssh发布应用

1.在job中点击 Post Steps -》 Add post-build step,选中Send files or execute commands over SSHapp

输入图片说明

2.配置传输的文件及执行的命令 Name:选择你要发布的服务器 source files:填写要传输的文件,当前路径为workspace,点右边问号看还支持通配符 remove prefix:移除目录 remote directory:测试下来写绝对路径没用,要是想放到非用户home目录下的话去系统设置里改remote directoryssh

输入图片说明

exec commands单独说 无非就是几个过程curl

  • 初始化变量
  • 关闭tomcat
  • 把传过来的包备份下,防止往后用来回滚
  • 删除tomcat下的war包和解压出来的目录,用新打出来的war包替换
  • 启动tomcat
  • 检查下tomcat起来没
source /etc/profile        #java环境变量
time=`date +%Y-%m-%d-%H:%M:%S`
warname="ROOT.war"
tomcatdir="/data/app/tomcat7"      
wardir=$tomcatdir/webapps

pid=`ps aux|grep "\-Dcatalina.home=$tomcatdir" | grep -v grep |awk -F' ' '{print $2}'`
echo "tomcat pid:$pid"
$tomcatdir/bin/shutdown.sh
sleep 5
ps -p $pid && kill -9 $pid

mkdir -p /data/packages/esb/
\cp -f /root/esb/${package_name}  /data/packages/esb/${package_name}.$time
rm -rf $wardir/*
\cp -f /data/packages/esb/${package_name}.$time   $wardir/$warname

$tomcatdir/bin/startup.sh && sleep 5 
pid=`ps aux|grep "\-Dcatalina.home=$tomcatdir"|grep -v grep |awk -F' ' '{print $2}'`
echo "new tomcat pid: $pid"

curl http://127.0.0.1:8080/index.jsp || exit 1
相关文章
相关标签/搜索