在上一家公司工作时,深受手动发布之苦,一直想花点时间学习一下自动发布和程序构建等技术。发现其实只要自己花点时间,都能让自己减少很多重复的劳动。会偷懒的程序员才是好程序员!
如果是在测试、开发环境 可以使用maven的upload plugin结合脚本的方式实现自动发布,当然更规范的流程是搭建一个jenkins环境来做持续集成。线上环境无法用upload插件直接上传war包、执行脚本,因此写了个小脚本,其实也非常简单。虽然简陋,但是还挺实用的。
#!/bin/bash
echo "===============begin publish ddbao-mobile================"
tomcatId=$(jps -lmv|grep 'ddbao-mobile'|awk '{print $2}')
startTomcatPath=/data0/java/ddbao-mobile/apache-tomcat-7.0.59/bin/startup.sh
tomcatLog=/data0/java/ddbao-mobile/apache-tomcat-7.0.59/logs/catalina.out
fileName='ddbao-mobile.war.'$(date +%s)
echo "ddbao-mobile tomcatId:$tomcatId"
echo "kill ddbao-mobile"
kill -9 $tomcatId
sleep 1
echo "backup ddbao-mobile.war"
cp /data0/java/ddbao-mobile/apache-tomcat-7.0.59/webapps/ddbao-mobile.war /data0/java/publish/backup/ddbao-mobile/$fileName
echo "delete ddbao-mobile webapp"
rm -rf /data0/java/ddbao-mobile/apache-tomcat-7.0.59/webapps/ddbao-mobile /data0/java/ddbao-mobile/apache-tomcat-7.0.59/webapps/ddbao-mobile.war
echo "copy ddbao-mobile.war to webapp"
cp /data0/java/publish/ddbao-mobile.war /data0/java/ddbao-mobile/apache-tomcat-7.0.59/webapps/ddbao-mobile.war
echo "restart ddbao-mobile"
sh $startTomcatPath
tail -f $tomcatLog