小麦是一名开发人员, 每天写完代码后, 都要打包部署到集成环境, 然后等着测试人员测试, 测试人员提出 bug 时, 小麦懊恼的修改着 bug, 然后修改代码, 重新提交 SVN, 重新打包, 上传到集成服务器, 然后重启服务器, 这么重复的工作, 小麦忍不了了, 决定化繁为简.
小麦想着最近自己一直在学 Linux shell 编程, 是时候展示一波真正的技术了. 刚学到新的命令: rz, 小麦跃跃欲试. 小麦一想, 有了 rz 命令, 再也不用点那个该死的 Xftp 了. 但是启停服务器还是得执行两次命令, 这个 xshell 能不能一次两台服务器一起搞啊, 立马百度了下, 还真有发送命令到所有会话, 如图:
小麦立马开工, 同时杀掉两台服务器 Tomcat 进程, 然后 rz 上传最新打的包, 然后重新启动 Tomcat.
小麦边敲代码边想, 这样还是啰嗦, Tomcat 我凭什么执行一次停止, 一次启动, 写一个脚本自停自启好了. 但是停止进程后, 我还需要上传包才行, 怎么办? 忽然测试说, 图片服务器的图片无法展示, 小麦一看, 最新的图片还没上传到图片服务器, 立马将图片上传图片服务器. 突然眼前一亮, 我先把打好的包放到一个路径下, 然后写一个脚本, 停止 Tomcat 进程后, 把最新的包 mv 到指定目录下, 然后重启不就 ok 了, 哈哈, 说干就干.
- # 找到 tomcat 进程 id
- $p_tomcat = jps -v | grep tomcat8.5/ | awk -F '''{printf $1}'
- # 杀死进程
- kill -9 $p_tomcat
- # 上传 war 包目录
- d_xiaomai=/App/xiaomai/
- #tomcat 目录
- tomcat=/App/tomcat8.5
- # 清除 tomcat 项目
- rm -rf $tomcat/webapps/apollo*
- # 移动包到 tomcat 下
- mv $d_xiaomai/apollo.war $tomcat/webapps/apollo.war
- # 重启 tomcat
- $tomcat/bin/startup.sh
小麦现在扔掉了 xftp, 然后同时操作两台服务器, 用脚本重新发布. 试了一下, 没什么问题, 小麦窃喜. 不一会, 测试又来找小麦了, 又发现了一个 bug, 小麦高兴的脸又阴沉下去, 再次回到 idea 修改代码, 然后重新发布. 小麦越想越不爽, 我提交完代码, 测试环境直接更新打包部署就好了, 我为啥还要一次次上传, 本地打好包, 再上传服务器, 服务器自己打包不就好了, 小麦开始盘算怎么再智能一些. 小麦嘴里念叨着: 我需要一个 SVN, 然后再来一个 maven, 完全 ok, 说完立马在测试环境安装了 SVN,maven, 然后修改脚本代码, 再次敲击起键盘.
- #SVN 指定目录
- d_xiaomai=/App/xiaomai/
- # 切换到 SVN 目录
- cd $d_xiaomai
- # 指定 SVN 目录下更新
- SVN up
- echo 'SVN 更新项目完成......'
- #maven 打包
- mvn clean package -Dmaven.test.skip=true
- echo 'Maven 编译打包项目完成......'
小麦高兴的眯着眼, 这回只要本地更新代码测试后, 提交 SVN, 测试环境一个脚本就可以直接重新发布服务了.
来源: http://www.jianshu.com/p/9ff31e30aab5