通过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"
相关推荐
svn本地自动部署与远程部署web应用代码方案,post-commit,update.php
点击shell脚本 可自动从svn下载项目并打包生成ipa和plist文件
NULL 博文链接:https://q-wong.iteye.com/blog/665927
SVN 远程 控制 批量权限管理具,需要的可回复我!
SVN远程配置.doc 帮助你配置SVN远程连接.在家工作更加方便.
利用脚本自动获取svn代码,并自动编译代码。提供了自动部署的方案。
svn增量打包小工具,自行配置svn相关的账号、本地代码编译后的路径以及本地svn项目所在的路径。可根据版本号或提交时间查找对于的增量文件,选择性进行增量打包。
NULL 博文链接:https://acooly.iteye.com/blog/1788811
svn+maven+shell自动部署代码,所需软件包、文档,shell脚本都有,实现代码自动化部署,告别繁琐的部署流程
从SVN获取源代码,及使用ANT来构建launchrj来打包工程
根据上传的SVN的情况,自动打包直接更新的java项目,先把改项目部署到你的ide工具中。 1、把更新的文件目录拷贝到war.txt文件中。 2、修改一个PackMain*.java文件,适应war.txt文件中的目录(只需一次,下次不需要...
jenkins+maven+svn+tomcat 持续集成环境快捷部署,实现自动编译打包部署
NULL 博文链接:https://shihuan830619.iteye.com/blog/1820428
SVN安装,部署,服务端,客户端安装详解
svn服务安装和部署
网络上如何进行远程svn备份 首先建立版本库,apache下建立用户。
NULL 博文链接:https://zhaoshijie.iteye.com/blog/842906
svn远程完全增量备份批处理文件。还有相关参考文件。
工作目的:实现自动化部署工作,以期提高开发项目的工作效率; 工作内容:利用开源的可持续集成工具,实现java项目的自动编译、打包、发布等工作流程; 具体工作内容如下: 一、 自动化部署的环境搭建; 二、 Maven...
svn整体部署方案.pdfsvn整体部署方案.pdf