ant脚本-自动发布版本包
先简单说一下这个脚本的作用吧,脚本的作用为自动shutdown服务、自动备份项目到指定的目录、自动备份上次上传的版本包、自动将新的版本包上传到服务器上、自动解压、自动重启服务。脚本的所有参数都是在ant.properties中配置的,所以脚本非常灵活,如果要上传其他项目的版本包,只需要在配置文件中更改相应的目录即可。
ant.properties文件包含了以下属性:ftp.server(服务器IP)、ftp.username(登录名)、ftp.password(登录密码)和ftp.dir(需要操作的目录)。
ant脚本的具体内容如下:
<?xml version="1.0" encoding="UTF-8" ?>
<!-- ===================================================================================================
运行脚本前在本地随意找一个目录,在目录下新建一个totalpackage 文件夹,将全量zip包放到文件夹下,
运行脚本即可,运行脚本前会先备份服务器上的webapps下的mer到ftp的comversion目录下,
然后备份上次上传的mer版本包名称为mercomversion_时间戳.zip
=================================================================================================== -->
<project name="将mer包上传到服务器上" default="remote-tomcat-start">
<!-- 引入自定义属性配置文件,定义svn、ftp常用信息-->
<property file="ant.properties" />
<!-- totalpackage变量存放最新版本包路径 -->
<property name="package" value="${basedir}\totalpackage\"/>
<!-- tomcat.home变量存放服务器上tomcat路径 -->
<property name="tomcat.home" value="${ftp.dir}/tomcat8"/>
<!-- sleep.time休眠时间 -->
<property name="sleep.time" value="3"/>
<target name="testdir">
<echo>第一步测试属性配置文件中的字段是否引入成功</echo>
<echo>[SYSTEM INFO]ftp.username====${ftp.username}</echo>
<echo>[SYSTEM INFO]ftp.password====${ftp.password}</echo>
<echo>[SYSTEM INFO] ftp.server====${ftp.server}</echo>
<echo>[SYSTEM INFO]ftp.dir====${ftp.dir}</echo>
<echo message="=================>>echo===>>testdir end" />
</target>
<!--将mer包上传到服务器上-->
<target name="ftp.upload" depends="mer.backup">
<echo>第四步备份全量包后上传新的全量包</echo>
<!--将mer包通过ssh/sftp上传到服务器上-->
<echo>上传mer到${ftp.dir}目录</echo>
<scp file="${package}\${webapp.name}.zip" todir="${ftp.username}:${ftp.password}@${ftp.server}:${ftp.dir}" password="${ftp.password}" trust="true"/>
</target>
<!-- ===================================================================================================
SFTP UPLOAD mer END
=================================================================================================== -->
<!-- ===================================================================================================
DEPLOY mer BEGIN
=================================================================================================== -->
<!--使用ant sshexec命令直接执行linux常用命令-->
<target name="exec.deploy" depends="ftp.upload">
<echo>第五步将mer包部署在服务器tomcat上</echo>
<!--使用ant sshexec命令执行启动tomcat命令-->
<echo>发布mer服务</echo>
<sshexec host="${ftp.server}" username="${ftp.username}" password="${ftp.password}" trust="true"
command="
cd ${ftp.dir};
ls;
unzip -o -d tomcat8/webapps/${webapp.name} ${webapp.name}.zip;
"
/>
</target>
<target name="remote-tomcat-start" depends="exec.deploy">
<echo>第六步将mer包部署在服务器tomcat上,并启动该tomcat</echo>
<sshexec host="${ftp.server}" username="${ftp.username}" password="${ftp.password}" command="${tomcat.home}/bin/startup.sh" trust="true"/>
</target>
<target name="remote-tomcat-stop" depends="testdir">
<echo>第二步在做所有的操作之前先停止tomcat</echo>
<sshexec host="${ftp.server}" username="${ftp.username}" password="${ftp.password}" command="${tomcat.home}/bin/shutdown.sh" trust="true"/>
<sleep seconds="${sleep.time}" />
</target>
<target name="mer.backup" depends="remote-tomcat-stop">
<echo>第三步停止tomcat之后备份增量包和全量包到指定的backup目录</echo>
<!--使用ant sshexec命令执行启动tomcat命令-->
<echo>备份增量包和全量包到指定的目录</echo>
<sshexec host="${ftp.server}" username="${ftp.username}" password="${ftp.password}" trust="true"
command="
cd ${ftp.dir};
mv mer.zip mercomversion_`date +%y%m%d%H%M%S`.zip;
cd ${tomcat.home}/webapps;
tar -zcvf mer_`date +%y%m%d%H%M%S`.tar.gz mer;
ls;
mv ${tomcat.home}/webapps/mer*.tar.gz ${ftp.dir}/comversion;
"
/>
</target>
<!-- ===================================================================================================
DEPLOY mer END
=================================================================================================== -->
</project>