标签: phing

如何在phing中迭代(循环)目录?

我想为一些插件创建phing任务,所以目录结构是这样的

root
  - plugin1
    - index.php
  - plugin2
    - index.php
Run Code Online (Sandbox Code Playgroud)

等等..

我想在每个子目录上运行相同的任务 - 例如

  1. 为plugin1生成doc
  2. 运行plugin1的单元测试
  3. 在某处部署plugin1
  4. 为plugnin2生成doc ...

这可能吗?我需要类似的东西

<foreach param="filename" absparam="absfilename" target="subtask">
  <fileset dir=".">
    <include name="*.php"/>
  </fileset>
</foreach>
Run Code Online (Sandbox Code Playgroud)

但对于目录.

或者我是否必须为每个插件独立编写build.xml?

非常感谢.

phing

4
推荐指数
1
解决办法
3763
查看次数

属性文件中的Phing属性应包含多个值

据我所知,在属性文件中有一个值数组是不可能的.在属性中存储多个值的最佳解决方案是什么?

例如属性文件的一部分

# directory definitions 
# containing e.g. CSS, Javascript, ...
project.dirname_css = css
project.dirname_js = javascript
Run Code Online (Sandbox Code Playgroud)

我想要的是一系列属性,如:

# directory definitions 
# containing e.g. CSS, Javascript, ...
project.dirname_css = [css,portal_specific]
project.dirname_js = [javascript,portal_specific]
Run Code Online (Sandbox Code Playgroud)

在build.xml中循环它们
任何建议如何做到这一点?
我可以想象通过以下方式划分价值; 并在build.xml中爆炸它们.有更好的建议吗?

php phing

4
推荐指数
1
解决办法
2401
查看次数

使用phing部署不同的环境

我们使用phing来部署我们的php应用程序,我们在部署环境时遇到了一个小问题.

我们有2个不同的生产环境(每个环境都有不同的配置文件)和一个单独的测试环境.我们在测试环境中没有问题,因为我们在测试环境中有一个不同的分支.问题是我们在生产环境中使用相同的分支.

有人建议我们如何使用不同的配置/设置文件部署到我们的生产环境中?我们宁愿将生产分支保留为单个分支,但不知何故将配置文件分开.我们使用zend框架,我知道配置文件中可以有的不同部分,但我们也有一个用于phing的设置文件.

我环顾四周,但似乎无法找到将命令行参数传递给phing的方法.这样的东西真的很有用:

  phing -f build.xml production_live1
Run Code Online (Sandbox Code Playgroud)

php phing deployment zend-framework

4
推荐指数
1
解决办法
1365
查看次数

如何在phing build.xml中使用现有的phpunit.xml?

我有一个phpunit.xml(phpunit的配置文件),如下所示:

<phpunit backupGlobals="false"
    backupStaticAttributes="false"
    bootstrap="./tests/bootstrap.php"
    convertErrorsToExceptions="true"
    convertNoticesToExceptions="true"
    convertWarningsToExceptions="true"
    strict="true" 
    verbose="true"
    colors="true">

    <testsuites>
        <testsuite name="My Tests">
            <directory>./tests</directory>
        </testsuite>
</testsuites>
</phpunit>
Run Code Online (Sandbox Code Playgroud)

正如DRY所说,我不想简单地将phpunit.xml的内容复制并粘贴到我的build.xml中以运行具有相同配置的phpunit.

我在Phing的build.xml中的目标如下所示:

<target name="unit-test">
    <phpunit printsummary="true" />
</target>
Run Code Online (Sandbox Code Playgroud)

即使那个phpunit应该自动找到phpunit.xml(当我手动启动它就像输入"phpunit"到我的终端并按下输入,它工作)并使用它,在phing的情况下,输出看起来像这样:

[phpunit] Total tests run: 0, Failures: 0, Errors: 0, Incomplete: 0, Skipped: 0, Time elapsed: 0.00122 s
Run Code Online (Sandbox Code Playgroud)

那么有什么方法,如何达到描述的行为?

php phing phpunit

4
推荐指数
1
解决办法
3270
查看次数

Phing文件夹的复制内容

我正在尝试将文件夹的内容移动到Phing中的另一个目的地.我不能直接从SVN下载内容,因为它们是拉链的.解压缩文件后,我想移动内容.

我发现了这种语法,但它不起作用: 使用phing复制整个目录

谢谢!

php phing build-script

4
推荐指数
1
解决办法
2323
查看次数

如何使用phing命令行参数

phing是否可以根据命令行实现一些任务?

例如:

phing install tag = 1.0 dest =/tmp/1.0

我实际上只看到3种方法

  • phing install -Dtag = 1.0 -Ddest =/tmp/1.0
  • 使用提示(有类似PromptTask的东西)
  • 实现我的任务并玩$ argv(全局)

从命令行调用phing目标时,其他命令行参数是否无用?

phing command-line target

4
推荐指数
1
解决办法
3590
查看次数

exec任务中的`<`字符打破了我的Phing构建脚本

我正在尝试在Phing中设置一个mysql导入脚本,但"<"导致XML错误.有任何想法吗?

<exec command="mysql -u${mysql.username} -p${mysql.password} -h ${mysql.server} ${mysql.database} < ${sql.file}" />
Run Code Online (Sandbox Code Playgroud)

我正在考虑让dbDeploy这样做,但如果有一个简单的方法可以工作(单行命令与dbDeploy的多行设置),那就太棒了

mysql phing

3
推荐指数
1
解决办法
1909
查看次数

检查SVN/subversion中是否存在某个修订版(或标记)

我正在构建一个phing部署脚本,我首先要求用户输入要从svn部署的修订版/标记.

当用户输入例如0.1时,我想检查(使用linux脚本或从svn本身)如果这个0.1版本确实存在.如果它不存在,我想打印错误并停止.

非常感谢您分享您的专业知识!

svn phing

3
推荐指数
1
解决办法
5169
查看次数

为什么要使用PHP项目和phing的"build /"文件夹

使用"build /"文件夹可以放置和"构建"所有源代码有什么好处?

也许这是一个愚蠢的问题,但我正在尝试理解与PHP的持续集成.用于phing的build.xml的任何示例都使用这样的构建/文件夹,但是对于PHP来说有一点意义,其中签出的项目不需要编译,只需要基本配置.复制所有到构建/只会复杂的事情,因为你已经翻番文件和文件夹+1到Web根路径(如果你想有web用户界面来运行Selenium测试)

特别是我需要phing两种情况:
1)让新用户设置他的第一次安装(或更新旧),正确的工作副本
2)运行unit/func-tests,phpcc,phpcs,phpdoc等(通常在CI服务器上) )

我应该为第二项任务"建立/"吗?PHP的最佳实践是什么?

php phing continuous-integration phpundercontrol

2
推荐指数
1
解决办法
576
查看次数

Phing - 从Github存储库中提取

我正在尝试使用Phing来调用git并拉出一个远程私有存储库,但它不起作用.

这是我的Phing代码:

<project name="test" default="main">
    <!-- Get User Variables -->
    <property file="build.properties" />

    <!-- Declare Variables -->
    <property name="base.dir" value="../" />
    <property name="git.repository" value="git@github.com:test/test.git" />

    <!-- Pull Git Release -->
    <target name="git.pull">
        <gitpull 
            repository="${git.repository}" 
            source="origin" 
            refspec="${git.release}"
        />
    </target>

    <target name="main" depends="git.pull">
    </target>
</project>
Run Code Online (Sandbox Code Playgroud)

但是当我跑步时我得到这个错误:

You must specify readable directory as repository.
Run Code Online (Sandbox Code Playgroud)

有谁知道如何做到这一点?还是有一个有效的例子?

phing github

2
推荐指数
1
解决办法
2849
查看次数