我在Ant中运行任务,作为构建事件的CI链的一部分,我是新手。我使用教程来创建用于测试/ linting / etc PHP应用程序的文件。
build.xml中的第一个重要指令是:
<property name="phpmd" value="phpmd"/>
<property name="phpunit" value="phpunit"/>
这样可以正常工作,假设phpmd / phpunit在路径上,并且使用phpunit作为进一步的示例,则在以下目标下运行:
<target name="phpunit" unless="phpunit.done" depends="prepare" description="Run unit tests with PHPUnit">
<exec executable="${phpunit}" resultproperty="result.phpunit" taskname="phpunit">
<arg value="--configuration"/>
<arg path="${basedir}/phpunit.xml"/>
</exec>
<property name="phpunit.done" value="true"/>
</target>
所有这一切都很好 - 但我想从现在开始使用docker,我希望这只是意味着将<property name="phpunit" value="phpunit"/>
更改为<property name="phpunit" value="docker-compose run php phpunit"/>
,但这会给我以下错误:< / p>
Execute failed: java.io.IOException: Cannot run program "docker-compose run -w /var/www/src php phpunit" (in directory "/var/lib/jenkins/jobs/Blah blah blah/workspace/src"): error=2, No such file or directory
我知道您通常会向目标添加额外的<arg/>
个节点,但是根本不可能在初始<property>
上提供带有内联参数的完整命令吗?
Ant显然在抱怨,因为与这些内联参数一起,可执行文件不存在。我是否必须使用arg节点并更新每个目标?
单独使用docker-compose
工作正常,但我需要args用于正确的容器和工作目录 - 最好是内联,否则我必须插入许多arg节点。
答案 0 :(得分:1)
最后,我刚刚为phpunit参数创建了一个property
,然后使用<args line="${phpunitArgs}">
添加了它。
绝对不理想,但至少它做到了它应该做的事情。我当然更喜欢使用Gulp!对于构建系统来说,XML感觉不错。