Многоэтапный мониторинг CI или как разделить этапы развертывания на управляемые куски

Прежде всего, я не ищу рекомендации по продукту (ну, да, но это больше похоже на то, как я ищу решение проблемы, а не пытаюсь выбрать что-то из существующего списка)

Окружающая среда: я использую Jenkins для выполнения сложных, многоэтапных заданий. Задание создает и подготавливает серверы, развертывает ОС и стек приложений на них, заполняет стек демонстрационными данными, запускает стандартные тесты, затем некоторые дополнительные отрицательные тесты, затем масштабирует стек с некоторыми более подготовленными серверами и выполняет еще несколько тестов.

Проблема: на любом из этих этапов может произойти сбой, либо просто неверная конфигурация репортера, либо полный сбой для шага. В любом случае, я могу сделать одну из двух вещей в Jenkins - выйти (1) или продолжить, сбросив проблему на консоль. И то, и другое не очень хорошо, потому что я получу либо сломанную незавершенную работу (если я выйду), либо хороший зеленый ложный положительный результат, где для того, чтобы убедиться, что он действительно зеленый, мне нужно прочитать несколько мегабайт дампов журнала из приставка.

Что я ищу: способ для Jenkins или какой-либо другой системы, чтобы иметь возможность отслеживать и сообщать об успехе / неудаче каждого шага в работе отдельно, поддерживая согласованность работы (например, я не могу начать новую работу для каждого шага), так что я могу видеть, например, что подготовка и развертывание ОС работали, стек развернут с ошибками, но завершен, и отрицательные тесты не пройдены, вместо текущего зеленого / красного состояния за цикл без подробностей, если я не захожу и не читаю бревна

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

1 ответ

Используете ли вы конвейер в качестве кода для своих работ в Jenkins или для традиционных работ по фристайлу, связанных вместе? Если последнее, то, хотя я знаю, что вы можете настроить работу для продолжения, я уверен, что вы можете настроить его, чтобы отправить вам электронное письмо, когда происходит сбой, верно?

Если вы решите использовать первый, вы можете достичь этого с помощью блока try and catch. У меня есть некоторые шаги, которые могут или не могут потерпеть неудачу, и они не showtopper. Итак, я заключаю шаг в блок try и в улове, заставляю установить сборку успешно и отправляю электронное письмо. Это выглядит так:

try {
  sh 'exit 1' //the step that might trigger a complete failure
}

catch(err) {
  currentBuild.result = 'SUCCESS' //force set the job to a success. i.e continue
  emailext ....   // email that the step failed
}
Другие вопросы по тегам