Apache Ant, резервное копирование и длинные пути файлов в Zend Framework
Очень часто перед очередным развертыванием веб-приложения встает задача по резервному копированию старой версии (на случай падения), чтобы если что, можно было бы откатиться до неё. Если для развертывания вы используете Apache Ant, то можно создать для него цель (target) и для резервирования данных.
В примерах чаще всего предлагают следующий код:
<target name=”prepare”>
<tstamp>
<format property=”timestamp” pattern=”dd-MM-yyy-HH-mm”/>
</tstamp>
</target>
<target name=”backup” depends=”prepare”>
<tar destfile=”/opt/teamcity/backups/${timestamp}.tar.gz” compression=”gzip”>
<tarfileset dir=”/opt/teamcity/projects/myproject”>
</tarfileset>
</tar>
</target>
Однако, если вы попробуете сделать бекап проекта на ZendFramework таким образом, вы словите много ошибок, типа вот этих:
[20:47:02]: [tar] Entry: vendors/Zend/Service/DeveloperGarden/Request/ConferenceCall/AddConferenceTemplateParticipantRequest.php longer than 100 characters.[20:47:02]: [tar] Resulting tar file can only be processed successfully by GNU compatible tar commands[20:47:02]: [tar] Entry: vendors/Zend/Service/DeveloperGarden/Request/ConferenceCall/GetConferenceTemplateParticipantRequest.php longer than 100 characters.[20:47:02]: [tar] Entry: vendors/Zend/Service/DeveloperGarden/Request/ConferenceCall/RemoveConferenceTemplateParticipantRequest.php longer than 100 characters.[20:47:02]: [tar] Entry: vendors/Zend/Service/DeveloperGarden/Request/ConferenceCall/UpdateConferenceTemplateParticipantRequest.php longer than 100 characters.[20:47:02]: [tar] Entry: vendors/Zend/Service/DeveloperGarden/Response/ConferenceCall/AddConferenceTemplateParticipantResponse.php longer than 100 characters.[20:47:02]: [tar] Entry: vendors/Zend/Service/DeveloperGarden/Response/ConferenceCall/AddConferenceTemplateParticipantResponseType.php longer than 100 characters.[20:47:02]: [tar] Entry: vendors/Zend/Service/DeveloperGarden/Response/ConferenceCall/CreateConferenceTemplateResponseType.php longer than 100 characters.[20:47:02]: [tar] Entry: vendors/Zend/Service/DeveloperGarden/Response/ConferenceCall/GetConferenceTemplateListResponseType.php longer than 100 characters.[20:47:02]: [tar] Entry: vendors/Zend/Service/DeveloperGarden/Response/ConferenceCall/GetConferenceTemplateParticipantResponse.php longer than 100 characters.[20:47:02]: [tar] Entry: vendors/Zend/Service/DeveloperGarden/Response/ConferenceCall/GetConferenceTemplateParticipantResponseType.php longer than 100 characters.[20:47:02]: [tar] Entry: vendors/Zend/Service/DeveloperGarden/Response/ConferenceCall/RemoveConferenceTemplateParticipantResponse.php longer than 100 characters.[20:47:02]: [tar] Entry: vendors/Zend/Service/DeveloperGarden/Response/ConferenceCall/UpdateConferenceTemplateParticipantResponse.php longer than 100 characters.
<target name=”prepare”>
<tstamp>
<format property=”timestamp” pattern=”dd-MM-yyy-HH-mm”/>
</tstamp>
</target><target name=”backup” depends=”prepare”>
<zip destfile=”/opt/teamcity/backups/${timestamp}.zip” update=”true”>
<zipfileset dir=”/opt/teamcity/projects/myproject”>
</zipfileset>
</zip>
</target>
Не пользуетесь симлинками при развертывании?
P. S.
“Дальше планирую опубликовать большую статью по развертыванию реального приложения с помощью TeamCity вместе с архивированием и всякими там анализаторами исходного кода.” Очень интересен материал, так же могу поделиться своим скромным опытом использования TeamCity для ZF проекта.
Симлинками не пользуемся. По поводу будущий статьи, в связи с переездами сервера, пока руки не дошли. Сделал только деплой и бекап. Очень интересен ваш опыт по TeamCity, даавйте спишемся по мылу или скайпу. Буду ждать письма или сообщения)