jenkins通过Execute shell中通过scp/ssh命令,将一台机器中项目远程拷贝到另外一台机器,修改文件中内容

1、前置条件

安装expect

yum install expect -y

2、在Execute shell中编写如下命令

在jenkins中执行以下命令的时候,前提条件是现在jenkins机器上手动执行一下ssh,scp下的命令

export BUILD_ID=DONTKILLME
export JAVA_HOME=/usr/local/jdk

expect -c "
spawn scp -r /root/.jenkins/workspace/youprojectPath remoteUsername@remoteip:/usr/local/work/
expect {
\"*assword\" {set timeout 300; send \"youpassword\n\";}
\"yes/no\" {send \"yes\n\"; exp_continue;}
}
expect eof"
export BUILD_ID=DONTKILLME
export JAVA_HOME=/usr/local/jdk


expect -c "
spawn ssh test@ip \"cd /home/test/temp; sh jenkins-test.sh;\"
expect {
    \"*assword\" {set timeout 300; send \"test\n\";}
    \"yes/no\" {send \"yes\r\"; exp_continue;}
      }
expect eof"

export BUILD_ID=DONTKILLME

expect -c "
spawn scp -r /root/.jenkins/workspace/cplan.test.qd-admin-project/youxuan-webapp/target/youxuan_webapp test@ip2:/home/test/apache-tomcat-7.0.85/webapps
expect {
\"*assword\" {set timeout 300; send \"test\n\";}
\"yes/no\" {send \"yes\n\"; exp_continue;}
}
expect eof"

expect -c "
spawn ssh test@ip \"cd /home/test/apache-tomcat-7.0.85/webapps;mv youxuan_webapp qd-admin-project; cd /home/test/apache-tomcat-7.0.85/bin/;export JAVA_HOME=/home/test/jdk1.7.0_80; sh startup.sh;\"
expect {
    \"*assword\" {set timeout 300; send \"test\n\";}
    \"yes/no\" {send \"yes\r\"; exp_continue;}
      }
expect eof"

其中jenkins-test.sh的内容如下:

tomcatPid=`ps -ef | grep apache-tomcat-7.0.85 | grep -v grep | awk '{print $2}'`
kill -9 $tomcatPid

tomcatPid=`ps -ef | grep apache-tomcat-7.0.85 | grep -v grep | awk '{print $2}'`
echo $tomcatPid

cd /home/test/apache-tomcat-7.0.85/webapps
rm -rf qd-admin-project*

参考另外一篇博文:

https://blog.csdn.net/tototuzuoquan/article/details/80290091

修改文件中的内容案例:

sed 's/-developing/-release/g' pom.xml > pom2.xml
rm -rf pom.xml
mv pom2.xml pom.xml

猜你喜欢

转载自blog.csdn.net/toto1297488504/article/details/80291006