如何使用Jenkins的public over SSH插件连接应用服务器

来源:互联网 发布:mac 内录 编辑:程序博客网 时间:2024/06/15 00:27

前提:Jenkins所在服务器linuxA、应用服务器LinuxB

目的:解决从Jenkins所在的服务器A向服务器B传输文件

第一步:

服务器A,生成一个密钥对

命令:ssh-keygen -t rsa

[root@test .ssh]$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): (直接回车)
Created directory '/root/.ssh'.
Enter passphrase (empty for no passphrase): (直接回车,无需设置密码)
Enter same passphrase again: (直接回车,无需设置密码)
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
f8:b0:f1:a4:b3:d3:dd:99:b7:f2:a0:dd:e5:97:08:b9 localhost@test

id_rsa=私钥   id_rsa.pub=公钥

 

第二步:

服务器B,在/root/.ssh路径下建立authorized_keys文件

将服务器A生成的id_rsa.pub(公钥)内容复制到authorized_keys文件下(注意,是文件,不文件夹)

重启服务器B的SSH,命令:service sshd restart

 

第三步:

打开Jenkins-系统管理-系统配置


 

配置完成后,点击【Test Configuration】

提示Success,则表示配置成功


Passphrase:密码(key的密码,如果你设置了)
Path to key:key文件(私钥)的路径
SSH Server Name:标识的名字(随便你取什么)
Hostname:需要连接ssh的主机名或ip地址,此处填写应用服务器IP(建议ip)
Username:用户名
Remote Directory:远程目录(根据需要填写文件传到此目录下)
“Use password authentication, or use a different key”:使用密码验证(这里使用了密钥认证所以不开启)


第四步:集成项目中配置

选择需要上传到的服务器(只配置了1个应用服务器)


PS:使用过程中,一直传输文件为0个

Source Files:填写 **/*.war(可以写**/aa.war,但是写绝对路径或者相对路径都拿不到文件,奇怪?)

Remove prefix:移除目录(只能指定Transfer Set Source files中的目录,先试了一次,不写移除目录,看了一次传输过来的文件是什么路径,才确认移除的目录从哪里开始)

Remote directory:上传至文件的路径,由于在public over SSH中配置了“/”(根目录),这里就从配置的根目录下开始写

Exec Command:传输完成后,执行重启的命令。


重启tomcat的shell脚本:

Jenkins和应用服务器在一台机子,使用复制,不在一台服务器用传输


#!/bin/sh
#重启tomcat
#source /etc/profile

export JAVA_HOME=/home/opt/jdk1.7.0_79
export LANG="zh_CN.UTF-8"

tomcatpath="/home/opt/tomcat_yzpm/"
tomcatstart=$tomcatpath/bin/startup.sh
backupdir=/home/opt/tomcat_yzpm/webapps/backup
jenkins="/home/opt/tomcat_jenkins/webapps/jenkins/workspace/"


#查询进程
tomcat_pid=`ps -ef | grep /home/opt/tomcat_yzpm/ | grep -v grep | awk '{print $2}'`

#打印进程ID
echo $tomcat_pid

#结束进程
if [ "$tomcat_pid" != "" ];then
echo "close tomcat....."
kill -9 $tomcat_pid
fi

#清楚日志
rm -rf $tomcatpath/logs/*
#清楚缓存
rm -rf $tomcatpath/work/*

#web端部署
if [ -d $tomcatpath/webapps/ROOT ];then
echo "ROOT文件夹存在"
cd $tomcatpath/webapps/
rm -rf ROOT/
else
echo "ROOT文件夹不存在"
fi

if [ -d $tomcatpath/webapps/yzpm ];then
echo "yzpm文件夹存在"
cd $tomcatpath/webapps/
rm -rf yzpm/
else
echo "yzpm文件夹不存在"
fi

#删除war
if [ -f "$mywar" ];then
echo "ROOT.war文件存在,并删除ROOT.war"
cd $tomcatpath/webapps/
rm -rf ROOT.war
echo "ROOT.war文件删除成功"
#else
#echo "ROOT.war文件不存在"
fi

#if [ -f "$mywar" ];then
#echo "ROOT.war文件存在"
#cd $tomcatpath/webapps/
#rm -rf yzpm.war
#echo "yzpm.war文件删除成功"
#else
#echo "yzpm.war文件不存在"
#fi


#复制war
#cp $jenkins/yzpm/yz_pm/target/yzpm.war $tomcatpath/webapps/


#重命名文件
cd $tomcatpath/webapps/
mv yzpm.war ROOT.war
echo "修改名称成功"

#重启tomcat
sleep 3
echo "重启tomcat"
$tomcatstart

原创粉丝点击