Автоматическая работа (phpunit с покрытием кода), когда Дженкинс бездействует? - PullRequest
4 голосов
/ 06 января 2012

Мой jenkins Установка работает правильно, только что покрытие phpunit + в моем коде занимает 5 минут - из-за слишком большого количества файлов.

Для меня это слишком много, ждать толькозная, нарушил ли мой последний коммит сборку или нет.

Есть ли способ, которым я могу запустить специальную сборку (или запланированную), когда jenkins бездействует и пока только в этой сборке он будет создавать отчеты о покрытии кода phpunit?

Я могу запустить phpunit -c with-coverage.xml в cron, но он изолирован от jenkins, он не обновляет домашнюю страницу работы jenkin.

Ответы [ 2 ]

5 голосов
/ 06 января 2012

Это общая общая проблема: вы хотите, чтобы сборка первого уровня быстро сообщала вам, сломали ли вы приложение, и сборка второго уровня, чтобы выполнить более глубокий анализ. Вещи, которые занимают больше времени в этой последней сборке, включают

  • Код покрытия
  • Статический анализ (дублирование и сложность кода)
  • Документация по API

Этого можно добиться, используя два отдельных проекта Jenkins, каждый из которых выполняет соответствующую задачу Ant, где вторая сборка зависит от успеха первой сборки. Я полагаю, что вы можете даже иметь артефакты прохода сборки первого уровня (например, junit.xml) для сборки второго уровня, но у меня еще не было времени, чтобы поэкспериментировать с этим.

К сожалению, это полуответ. Я знаю, что вы можете сделать это, но я сам этого не сделал, и не могу пошагово рассказать вам, как это сделать. Надеюсь, это даст вам достаточно указателей, чтобы начать работу.

4 голосов
/ 09 января 2012

Если вы используете ant для организации вашей сборки, возможно, вам даже не нужна двухуровневая сборка, но вы можете использовать команду Jenkins / Ant, чтобы остановить работу, когда ваши тесты не пройдены, поскольку вам обычно не нужны метрикикогда вы ломаете сборку.

То, что я склонен использовать, это:

 <target name="phpunit" description="Run unit tests with PHPUnit">
  <exec executable="phpunit" failonerror="true"/>
 </target>

как одна из первых целей сборки.Он попытается сгенерировать покрытие кода, чтобы запуск phpunit занял немного больше времени, но вам не нужно тратить время на генерацию всех метрик.


Если вы хотите действительно быстро:

Вы можете указать Jenkins «действие после сборки», которое запускает другую сборку, когда ваша сборка «запустить тесты» прошла успешно.Вы даже можете настроить ожидание примерно на полчаса, чтобы запустить сборку «Метрики», на случай, если вы делаете 3-4 коммита и не хотите, чтобы сборка метрики начиналась сразу после того, как сработал первый

...