Тимлид сказал ознакомиться с системой сборки Phing, уточнив что будем использовать для деплоя и на автотестах. До этого доводилось писать Gruntfile и Gulpfile, а теперь пишу build.xml:
<project name="test" basedir="." default="server">
<target name="archive" depends="">
<echo>Архивируем проект</echo>
<zip destfile="phing.zip">
<fileset dir=".">
<patternset>
<include name="**/**"/>
<exclude name="vendor/**"/>
<exclude name="tests/**"/>
<exclude name="composer.*"/>
<exclude name="adminer-*"/>
<exclude name="codeception.*"/>
<exclude name="build.xml"/>
</patternset>
</fileset>
</zip>
</target>
<property name="uname" value="" override="false"/>
<property name="pwd" value="" override="false"/>
<property name="host" value="" override="false"/>
<property name="todir" value="" override="false"/>
<target name="build" depends="archive">
<echo>Отправляем на сервер</echo>
<scp username="${uname}" password="${pwd}" host="${host}"
fetch="false" file="phing.zip" todir="${todir}"/>
<echo>Удаляем архив с локали</echo>
<delete file="phing.zip" />
<echo>Подготавливаем директорию на сервере</echo>
<ssh username="${uname}" password="${pwd}" host="${host}"
command="rm -rf ${todir}/www"/>
<echo>Разархивируем на сервере</echo>
<ssh username="${uname}" password="${pwd}" host="${host}"
command="unzip -o -q ${todir}/phing.zip -d ${todir}/www"/>
<ssh username="${uname}" password="${pwd}" host="${host}"
command="chmod -R 777 ${todir}/www/templates/{cache,compiled}"/>
</target>
</project>
На ваш взгляд, приемлимо ли писать build.xml в таком же ключе как Gruntfile или Gulpfile? То есть по другому,-
Можно ли думать что Phing это PHP аналог GruntJS(GulpJS)? Есть ответ?
Ведь если это так(Phing есть налог), то Phing должен уметь принимать значения из командной сторки в свои задачи. Например, хочу чтоб Phing запускал мне девелопмент -сервер на локалхосте с портом 8080, я бы мог написать задачу в build.xml:
<target name="server">
<exec command="php -S localhost:8080 -t ."/>
</target>
Но есть одно но, если я запущу, а 8080 порт будет занят, Phing мне не скажет об этом. Далее уже думать о методе предовращения подобных ситуаций. Одним из таких методов будет являться указания домена и порта при запуске, -что то типа этого:
$ php vendor/bin/phing server
$ Укажите домен и порт на котором вы хотите запустить сервер: [localhost:8080]
Хочу спросить: способен ли Phing быть под стать таким системам сборки GruntJS и GulpJS?