Сборка Symfony2 проектов с использованием Jenkins

в 12:41, , рубрики: Jenkins, pdepend, php, phpcs, phpmd, symfony, symfony2, Веб-разработка, тестирование

Перевод моей статьи о том, как настроить сборку для PHP проектов на базе Symfony2 используя Jenkins. Недавно я столкнулся с задачей такой настройки именно для набора Symfony 2.1+Jenkins+PHPUnit+PHPCodeSniffer+PHPMessDetector+PDepend.

Надеюсь, эта небольшая статья сможет оказаться полезной!


Сегодня я расскажу, как установить и настроить сборку для Symfony2 проектов, используя Jenkins и PHP шаблон для Jenkins проектов, созданный Себастьяном Бергманном.

Конфигурация работает стабильно с Jenkins v.1.480.1 и проектами на базе фреймворка Symfony v.2.1.

Требования

Перед созданием шаблона проекта вам необходимо установить требуемые плагины для Jenkins (Required Jenkins Plugins) и требуемые инструменты PHP (Required PHP Tools).

Использование PHP шаблона для Jenkins проектов

Первые шаги основаны на этой статье, но мы будем использовать config.xml, build.xml, phpunit.xml и дополнительные файлы, взятые с этого источника: github.com/xurumelous/symfony2-jenkins-template.

  1. загрузите jenkins-cli.jar с вашего сервера Jenkins:
    wget http://localhost:8080/jnlpJars/jenkins-cli.jar
  2. загрузите и установите шаблон проекта:
    curl https://github.com/xurumelous/symfony2-jenkins-template/blob/master/config.xml | 
    java -jar jenkins-cli.jar -s http://localhost:8080/jenkins create-job symfony2-php-template

    или добавьте шаблон вручную:

    cd $JENKINS_HOME/jobs
    mkdir symfony2-php-template
    cd symfony2-php-template
    wget https://github.com/xurumelous/symfony2-jenkins-template/blob/master/config.xml
    cd ..
    chown -R jenkins:jenkins symfony2-php-template/

  3. перезагрузите конфигурацию Jenkins, например, используя Jenkins CLI:
    java -jar jenkins-cli.jar -s http://localhost:8080 reload-configuration

  4. нажмите на “New Job” (новый проект);
  5. введите “Job name” (название проекта);
  6. выберите “Copy existing job” (копировать существующий проект) и введите “symfony2-php-template” в поле “Copy from” (копировать из);
  7. нажмите “OK”;
  8. настройте контроль версий в вашем новом проекте и другие необходимые поля/модули.

Конфигурация проекта и устранение проблем

  1. Измените стандартный Jenkins-PHP конфиг согласно Symfony2-Jenkins-PHP, как это описано здесь — github.com/xurumelous/symfony2-jenkins-template:
    • переместите папку с Jenkins в [SYMFONY2_ROOT]/app/Resources/ внутрь вашего Symfony2 проекта;
    • переместите файл build.xml в корень вашего Symfony2 приложения;
    • переместите файл phpunit.xml в папку [SYMFONY2_ROOT]/app или обновите существующий файл. Блок логирования (logging node) необходим, если вы хотите профилировать и логировать отчеты модульного тестирования;

  2. если вы получите ошибоку «PHP Fatal error: Class ‘XSLTProcessor’ not found in /usr/share/php/TheSeer/fXSL/fxsltprocessor.php on line 58», вы можете исправить ее следующим образом:
    sudo apt-get install php5-xsl
  3. вы также можете получить ошибку "PHP Warning: require(/var/lib/jenkins/jobs/TestJob/workspace/app/../vendor/autoload.php): failed to open stream: No such file or directory in /var/lib/jenkins/jobs/TestJob/workspace/app/autoload.php on line 5", т.к. мы используем Symfony v2.1, которой трубется composer. Вы можете устранить ее следующим способом:
    • добавить шаг composer в ваш build.xml. Как это сделать в этой статье;
    • если вы продолжаете получать это сообщение после добавления шага composer, возможно, вам необходимо добавить зависимость для PHPunit от composer: depends=”composer”;

  4. Иногда у вас может возникнуть проблема на шаге “vendors”, при которой вы увидите что-то вроде:
    [exec] The deps file is not valid ini syntax. Perhaps missing a trailing newline?
    [exec] PHP Warning:  parse_ini_file(/var/lib/jenkins/jobs/TestJob/workspace/deps): failed to open stream: No such file or directory in  /var/lib/jenkins/jobs/TestJob/workspace/bin/vendors on line 69

    Вы можете исправить это удалением “vendors” из зависимостей сборки (build dependency) и target-блока “vendors” в скрипте build.xml

  5. если вы получите результат Status: 2 во время выполнения codesniffer шага (phpcs), вам необходимо установить Symfony2 стандарт кодирования, который можно взять на этом ресурсе;
  6. включите опцию “Poll SCM” и впишите ниже: */5 * * * * (включив эту опцию вы даете Jenkins-у инструкцию проверять каждые 5 минут репозиторий проекта на наличие новых комм итов. Если изменения (коммиты) найдены, Jenkins автоматически запускает сборку проекта).

Это всё! Теперь вы готовы к сборке вашего PHP Symfony2 проекта с использованием Jenkins! Если вы найдёте какие-либо ошибки (или исправления), полезные ссылки или если у вас есть другие предложения, оставляйте комментарии здесь или в оригинальной статье.

Наслаждайтесь результатом!

Автор: svscorp

Источник

Поделиться