`

shell从svn远程打包部署工程

 
阅读更多

    通过SVN的分支功能,实现同套代码进行测试和上线,有效提高开发自动化和上线质量。

    qa在客户端执行部署脚本(xxx.sh tagxxx),部署脚本能够执行中间机上的远程脚本实现从SVN下载指定分支代码,编译,打包,发送部署包到本地,然后在本地部署,重启服务器。

 

1客户端执行的shell脚本

 

#!/bin/sh

#set dir [index $argv 0]

#中间机密码

passwd="xxxx"

passwd2="xxxx"

passwd1="xxxx"

#TAG号

tag=$1

#远程执行中间机上的脚本

expect <<EOF

set timeout 100

 

spawn ssh user@ip "bash /home/work/xxx/xxx_test.sh $tag"

expect {

        "*yes/no" { send "yes\r" }

        "*password:" { send "123\r"

                expect "*Permission denied, please try again.*" {send "$passwd1\r"

                                expect "*Permission denied, please try again.*" {send "$passwd2\r"

                                }

                        }

                }

        }

expect eof

EOF

#路径

BACKUP_PATH="/home/work/xxx/backup"

#resin服务war包文件名

WEB_FILE="xxx.war"

#日期

time=`date +%Y-%m-%d-%H-%M-%S`

#生成备份路径

function getbackupdir(){

        if [ ! -d ${BACKUP_PATH} ]

        then

                mkdir ${BACKUP_PATH}

        fi

 

        if [ ! -d ${BACKUP_PATH}${time} ]

        then

                mkdir ${BACKUP_PATH}${time}

        fi

        echo ${BACKUP_PATH}${time}

}

 

if [ -e $WEB_FILE ]

then

        mv union `getbackupdir`

        unzip -oq $WEB_FILE -d union

        rm -f $WEB_FILE

        echo "-----redeploy $WEB_FILE finished----"

else

        echo "$WEB_FILE not found!"

        exit 0

fi

 

xxx_httpd.sh restart

 

exit 0

 

2部署中间机执行的shell脚本

 

#!/bin/sh

SVNLOCATION="2015021314"

#export mvn "/home/work/opt/apache-maven-3.2.2-bin/apache-maven-3.2.2/bin"

if [ $# -gt 0 ]

then

SVNLOCATION=$1

SOURCE_LOCATION="/home/work/xxx/test"

sleep 1s

else

echo "warning:参数不能为空,请输入准确的tag号!!!"

exit 1

fi

rm -rf $SOURCE_LOCATION

mkdir $SOURCE_LOCATION

echo "删除旧版本代码成功。。。"

echo "svn地址 tag号:"$SVNLOCATION

expect <<EOF

set timeout 60

spawn svn --username xxx --password xxx checkout http://xxx/svn/trunk/xxx-tag/$SVNLOCATION $SOURCE_LOCATION

expect {"*yes/no" 

{send "yes\r"}}

expect eof

EOF

#if [[ $? -eq 0 ]]

#then echo "源码下载成功" 

#else echo "源码下载失败"

#exit 1

#fi

sleep 1s

cd $SOURCE_LOCATION

#打包

/home/work/opt/apache-maven-3.2.2-bin/apache-maven-3.2.2/bin/mvn clean

/home/work/opt/apache-maven-3.2.2-bin/apache-maven-3.2.2/bin/mvn install -Ptest -Dmaven.test.skip=true

if [[ $? -eq 0 ]]

then echo "打包成功"

else echo "打包失败"

exit 1

fi

#修改安装包包名称

/home/work/rsync/bin/rsync -vzrtopg --progress --delete  --password-file=/home/work/rsync/rsync.pas --port=3334 $SOURCE_LOCATION/xxx.war work@ip::xxx/xxx.war

echo "xxx"

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics