Сконфигурируйте задание hudson maven, чтобы оно продолжало сборку при наличии неудачных тестов, а развертывание только при отсутствии неудачных тестов - PullRequest
8 голосов
/ 04 марта 2011

Я создал задание hudson для нашего мультипроекта maven с 5 модулями для развертывания артефактов SNAPSHOT в хранилище maven.Это нормально, до тех пор, пока он успешно собирается без неудачных тестов.Тем не менее, теперь я хотел бы выполнить следующие требования:

  • Если у модуля есть тестовый сбой, сборка должна продолжить сборку и тестировать другие модули, но станет желтой.Использование -Dmaven.test.failure.ignore=true завершается, но не выполняется при следующем требовании.
  • Если у модуля есть тестовый сбой, ни один из артефактов не следует развертывать в репозитории maven. Другие проекты зависят отснимки этого проекта, и эти проекты хотят использовать только последние снимки, которые не имеют никаких провальных тестов .
  • Желательно использовать интеграцию с hudson maven вместо бесплатного скрипта, мы получаем hudsonстраницы отчета (красный / желтый / синий статус на модуль, раскраска ошибок журнала сборки, ...).Конкретный запуск сборки maven дважды (сначала mvn test -Dmaven.test.failure.ignore=true, затем mvn deploy -DskipTests) не является решением, поскольку он снижает производительность и сбивает с толку страницы отчета hudson и не является атомарным (он обновляется из репозиториев во второй сборке).

Есть ли способ сделать это?

Ответы [ 4 ]

5 голосов
/ 17 марта 2011

Существует опция пост-сборки под названием Развертывание артефактов в репозитории Maven . Если вы не выберете Развернуть, даже если сборка нестабильна , то это означает, что если тест не пройден, он ничего не развернет. Вместе с -fae в команде все должно работать по вашему желанию

2 голосов
/ 10 марта 2011

возможно, вы можете попробовать использовать опцию mvn -fae с вашими заданиями на hudson - это приведет к сбою maven только после полной сборки

1 голос
/ 16 марта 2011

Если вы используете Artifactory в качестве менеджера хранилища, вы можете использовать плагин Hudson / Jenkins Artifactory для развертывания ваших артефактов.Этот плагин будет развертывать ваши артефакты только в том случае, если все тесты пройдены для всех модулей сборки Maven.

1 голос
/ 15 марта 2011

Если время сборки не является проблемой для вас, я думаю, что лучший вариант - создать другую работу, просто для развертывания. Примерно так:

  1. Настройте исходную работу (назовем это «сборкой») с помощью «mvn -fae clean install»
  2. Создайте новое задание («развернуть задание») с помощью «mvn deploy» и не настраивайте никакие триггеры сборки для него
  3. В «задании на сборку» включите параметр Построить другие проекты в разделе Действия после сборки и настройте его для запуска «задания развертывания».

Возможно, вы можете попытаться настроить оба задания на использование одного и того же рабочего пространства, сэкономив некоторое время на весь процесс сборки / развертывания.

...