使用Phing进行自动构建使部署到服务器变得轻松而轻松,如果您使用SVN作为源代码控制系统,则可以轻松地从存储库直接部署到Web服务器。
要允许Phing利用SVN服务器,必须首先安装VersionControl_SVN pear库。尽管这是Alpha版本,但我已经使用了很多,没有任何问题。唯一的事情是,如果要安装它,则需要指定pear的版本号,如下所示:
pear install VersionControl_SVN-0.3.4
要使Phing从SVN存储库中导出,可以使用svnexport任务。以下构建文件设置了一些参数(供此任务使用),运行一个目标以删除现有的导出,然后运行一个目标,该目标从我们已设置的SVN存储库中导出。
<?xml version="1.0"?> <project name="build" default="main"> <property name="exportdir" value="./svn_export/" /> <property name="svnpath" value="/usr/bin/svn" /> <property name="username" value="username" /> <property name="password" value="password" /> <property name="repo" value="http://www.yoursvnserver.com/yoursvnrepo" /> <property name="revision" value="HEAD" /> <target name="main"> <phingcall target="svnexport" /> </target> <target name="clean"> <delete dir="${exportdir}"/> </target> <target name="svnexport" depends="clean"> <svnexport repositoryurl="${repo}" todir="${exportdir}" svnpath="${svnpath}" username="${username}" password="${password}" nocache="true" revision="${revision}" /> </target> </project>
如果保存此构建文件,则svnexport.xml可以使用以下命令运行它:
phing -f svnexport.xml
svnexport任务可用的大多数参数都是自解释性的。Nocahce是唯一可能不会立即显而易见的,它将缓存请求之间的连接凭据。另外,如果要使用匿名SVN服务器,则只需忽略用户名和密码参数即可。在Phing站点上svnexport上有可用的文档。
如果您发现(像我一样)该脚本存在并且给出了一个错误,该错误说明了不存在的svnexport任务,请确保您的Phing版本是最新的,并且应该可以解决该问题。这可以通过运行pear升级或pear升级phing来完成。
对于奖励积分,我们可以仅提取所需的修订,而不必总是使用HEAD进行默认设置或每次我们要更改构建文件时都必须对其进行编辑。这可以通过在运行时将参数传递给Phing来完成,也可以通过在运行构建文件时使用propertyprompt任务向用户询问修订号来完成。
您可以在运行时通过调用Phing时使用-D标志来更改修订版参数。以下将版本参数设置为2。
phing -Drevision=2 -f svnexport.xml
然后,您可以在构建文件中添加echo语句,以便打印出从命令行接收到的修订。
<target name="main"> <echo>Extracting revision ${revision}</echo> <phingcall target="svnexport" /> </target>
要使用propertyprompt任务,只需将其添加到svnexport任务上方。在下面的示例中,我更改了我的主要目标,以在运行其他任何操作之前添加propertyprompt任务。
<target name="main"> <propertyprompt propertyName="revision" defaultValue="HEAD" promptText="Enter revision number" /> <echo>Extracting revision ${revision}</echo> <phingcall target="svnexport" /> </target>
当您像以前一样运行构建文件时,脚本将停止,并在屏幕上显示提示,询问您要提取的修订号。
Enter revision number [HEAD] ?
导出后,您可以运行其他目标以将其移至FTP服务器或使用它进行任何操作,完成操作后甚至可以清理导出目录。在构建的应用程序中放置一个包含修订信息的小文件也是一个想法,这样您就可以检查用于制作该应用程序的修订版本。
Phing还可以使用其他版本控制系统(例如CVS和Git),因此,如果您不使用SVN,则始终可以修改脚本以包括您选择的存储库系统。