Phing 部署脚本

phing 脚本手册 http://www.phing.info/docs/guide/current/

Phing 使用了 XML 格式的配置文件来定义部署脚本,从中可以获得工程信息,定义操作组(target)。作为示例,我们将会创建一个基本的 Phing 部署脚本,其中定义了4个目标:通过分析脚本来加深堆phing 的学习,build.xml 脚本内容如下

    phing" basedir="." default="install">

     
     
     

     
     
     
     
       
     

     
     
     
     
       
       
     

     
     
     
     
       
     

     
     
     
     
       
         
           
             
           

         

       

     

     
     
     
     
       
         
       

       
     

   


注解说明

 1,工程(project)

定义工程名字,是 build.xml 文件的最外层标签。比如:

     

 name定义工程名称,还可以定义 basedir 等属性。default 表示,当在命令行下运行 phing.exe 文件时,若不带参数指定“目标”(Target),则以default的值指定的目标作为默认值。

 2,目标(target)

 build.xml 文件是以目标作为分组的,phing 命令也以目标作为部署脚本执行的起点。目标的定义标签:
   
    目标之间可以互相依赖(depends),被依赖的目标会先被执行。当一个目标依赖多个目标的时候,目标名之间以英文半角逗号分隔。

 3,任务(task)

任务即脚本的行为或动作,有许多标签来定义。例如:
      显示提示信息
      拷贝文件夹或文件
      创建文件夹
      删除文件夹
      执行外部脚本命令
      、执行PHPUnit单元测试
      操作SVN版本控制服务

  4,其它

   属性(property):
   

    数据类型(Types):
    除过 strings, integer, booleans等,还有:

    定义文件集:
   
    dir 的值中,使用**表示递归包含,而单个*则表示不是递归包含的。这样便创建了文件的一种数组,它们可以在被其它任务,比如复制任务所使用。

    定义文件列表:
   
   

    Phing 有些特性需要操作系统的支持,比如文件的打包和压缩任务,只能在 Unix/Linux 下运行:
   
     
       
     
   

5 build.xml 分析

在以上 build.xml 部署脚本文件中,定义了 4 个目标:

    - prepare 目标做一些初始准备工作,创建一个文件夹;
    - get 目标将从Subversion存储库中导出最新版本的文件;
    - phpunit 目标将执行单元测试,它会从 tests 文件夹寻找与 *Test.php 文件名匹配的文件,调用 phpunit 进行单元测试。自然需要首先安装了 PHPUnit 相关类库;
    - install 目标将会把文件安装到指定文件夹(例如网站的跟文件夹),本例是拷贝到 install 文件夹。还可以拷贝单个文件;

    其中,install 是默认执行的目标,它依赖 phpunit 和 prepare 两个目标。目标 phpunit 没有依赖别的目标。目标 get 没有被任何目标依赖,所以除过在 phing 命令行后指定,它不会自动被别的目标调用执行。

6 运行phing

  在 DOS 命令行或 Linux 的 Shell 下执行 Phing 命令,格式:

    phing [目标名]

    不指定目标名时,会执行工程中指定的默认目标。

    默认地,Phing 会在当前路径下查找一个名叫 build.xml 的 XML 文件。

    本例中,运行 phing 或 phing install 命令,会把 id 等于“codefiles”的 fileset 下定义的所有文件,根据 todir 的值,拷贝到指定文件夹下。

    C:/Program Files/Zend/Apache2/htdocs/phing>phing install
    Buildfile: C:/Program Files/Zend/Apache2/htdocs/phing/build.xml

    BUILD FAILED
    Error reading project file [wrapped: C:/Program Files/Zend/Apache2/htdocs/phing/build.xml:13:18: No memory]
    Total time: 0.4898 seconds

    运行以上命令,并没有成功,报告“…… No memory”错误,即内存不足。需要内存大小,是根据 build.xml 文件的大小来确定的。

    解决内存不足的问题,可以修改 php.ini 中的 memory_limit 的值:

    memory_limit = 128M  ;Maximum amount of memory a script may consume (128MB)

    改为 memory_limit = 256M,重启 Web 服务。再次运行 phing 命令:

    C:/Program Files/Zend/Apache2/htdocs/phing>phing
    Buildfile: C:/Program Files/Zend/Apache2/htdocs/phing/build.xml

    MyPhingPrj > phpunit:
      [phpunit] Tests run: 2, Failures: 0, Errors: 0, Incomplete: 0, Skipped: 0, Time elapsed: 0.07960 s

    MyPhingPrj > prepare:
        [echo] Making directory install
        [mkdir] Created dir: C:/Program Files/Zend/Apache2/htdocs/phing/install

    MyPhingPrj > install:
         [copy] Created 2 empty directories in C:/Program Files/Zend/Apache2/htdocs/phing/install
         [copy] Copying 5 files to C:/Program Files/Zend/Apache2/htdocs/phing/install
         [copy] Copying 1 file to C:/Program Files/Zend/Apache2/htdocs/phing/install

    BUILD FINISHED
    Total time: 1.4857 second



你可能感兴趣的:(持续集成工具)