利用SVN进行项目自动化部署_以Resin容
【摘要】 一、 背景交待:最近负责将公司OA团队的开发上线流程进行了规范化管理,以往是开发测试上线,都是一个同事在做,这样的方式快捷,但容易出现问题,开发测试上线都可能是同一个人。现在,我将所有流程分开,开发、测试、上线、验收都由不同的同事进行负责。这里,我的任务是进行线上部署。一开始,我们的工作是上传需要上线的代码到svn,测试通过后,再将这批需要上线的代码放至正式进行部署更新。原来的方...
一、 背景交待:
最近负责将公司OA团队的开发上线流程进行了规范化管理,以往是开发测试上线,都是一个同事在做,这样的方式快捷,但容易出现问题,开发测试上线都可能是同一个人。现在,我将所有流程分开,开发、测试、上线、验收都由不同的同事进行负责。这里,我的任务是进行线上部署。一开始,我们的工作是上传需要上线的代码到svn,测试通过后,再将这批需要上线的代码放至正式进行部署更新。原来的方式,是用FTP上传代码再更新,也没有备份,现在我想将流程一次过搞定,并且有原来代码的备份。
二、 代码流程
啥也先不说,直接上shell代码autoDeploy.sh:
#!/bin/bash #第一步,下载svn文件并备份原系统文件 if [ -z "$1" ];then echo "请输入需要部署的SVN路径" exit fi DIR_NAME=$(date +%Y%m%d) if [ ! -n "$2" ];then echo "指定文件夹参数为空" else DIR_NAME=$2 fi SVN_URL=$1 #从svn下载 rm -rf /tmp/upload/$DIR_NAME mkdir -p /tmp/upload/$DIR_NAME cd /tmp/upload/$DIR_NAME svn checkout $SVN_URL . --username xxxx --password xxxx find . -type d -name ".svn"|xargs rm -rf #echo "svn获取:svn checkout $SVN_URL --username xxx--password xxx" #执行java程序进行备份 APP_HOME=/data/fileback APP_CLASSPATH=$APP_HOME/bin jarList=$(ls $APP_HOME/lib|grep jar) #echo $jarList for i in $jarList do APP_CLASSPATH="$APP_HOME/lib/$i":$APP_CLASSPATH done #echo $APP_CLASSPATH export CLASSPATH=$CLASSPATH:$APP_CLASSPATH #echo $CLASSPATH echo 备份文件开始 java -Xms50m -Xmx250m cn.qtone.Main $DIR_NAME echo 备份文件结束 #第二步停止程序 ppPID=0 getAppPID(){ pidInfo=`ps aux|grep java|grep -E "web-a"|grep -v grep` if [ -n "$pidInfo" ]; then appPID=`echo $pidInfo | awk '{print $2}'` else appPID=0 fi } shutdown(){ getAppPID echo "==============================关闭程序开始========================================================" if [ $appPID -ne 0 ]; then cd /usr/local/resin-pro-3.1.6/bin/ ./stop.sh sleep 5 #等5秒后执行下一条 if [ $? -eq 0 ]; then echo "[=============================关闭程序结束===============================]" else echo "[失败,重新尝试……]" fi getAppPID if [ $appPID -ne 0 ]; then shutdown fi else echo "=========================未找到相关程序=============================" fi } shutdown #第三步复制文件 echo "开始复制文件" \cp -rfv /tmp/upload/$DIR_NAME/* /web/ echo "结束复制文件" #第四步重启程序 cd /usr/local/resin-pro-3.1.6/bin/ ./start.sh echo "成功进行部署更新:" exit
一、 特别说明
上述的shell代码,相信玩过linux的都能看明白;其中第一步的备份文件,由于自己写shell的功底不怎么样,所以选择了使用java的方式实现;具体的思路是这样:
1) 根据从svn下载下来的文夹列表,在实际项目中也将相同目录下的文件(如果存在)进行备份;
2) 将备份文件输出到指定的备份文件夹下,每一次的自动化部署执行,会生成一个版本号文件夹;
具体java代码看这里:代码链接
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)