Запускать правильный адрес электронной почты, если в Jenkins не выполняются тесты NUnit

Настраивать:

  • Дженкинс
  • NUnit
  • Селен
  • Email-ext (плагин Jenkins)

У нас есть набор тестов на C #, который выполняет настройку: он проверяет в TestRail, какие тесты существуют в плане тестирования, и записывает в файл этот список тестов. Сборка в Jenkins состоит из двух этапов сборки (после pull & build):

  1. Запустите пакет установки, чтобы получить список тестов, которые нужно запустить.
  2. Запустите пакет, используя параметр /runlist NUnit для извлечения этого списка.

Это фантастически работает, когда есть тесты, которые нужно запустить.

Однако из-за [полностью отдельной реализации] этот файл будет временами пуст. Следовательно, результат NUnit для шага сборки «запустить со списком»:

Tests run: 0, Errors: 0, Failures: 0, Inconclusive: 0, Time: 0.010100375885762 seconds
Not run: 0, Invalid: 0, Ignored: 0, Skipped: 0

Это говорит Дженкинсу, что этот шаг не удался:

C:\Program Files (x86)\Jenkins\jobs\[job_name]\workspace>exit 0 
Archiving artifacts
Recording NUnit tests results
No test report files were found. Configuration error?
Build step 'Publish NUnit test result report' changed build result to FAILURE
Email was triggered for: Failure
Sending email for trigger: Failure

Я хочу одного из двух:

  • По крайней мере, он не отправит электронное письмо с ошибкой.
  • В идеале, результат этапа установки говорит о том, что сборка остановлена, так как нечего строить. Будет отправлен триггер электронной почты «Прервано».

Как мне настроить Jenkins / эту сборку, чтобы это произошло?


person XtinaS    schedule 26.11.2013    source источник
comment
Я считаю, что есть плагины, которые делают определенные шаги сборки условными. В противном случае, можете ли вы настроить его так, чтобы в комплект всегда был включен один всегда проходящий тест? Таким образом, пустой прогон по-прежнему будет включать один проходной тест.   -  person rutter    schedule 27.11.2013


Ответы (1)


Думаю, я нашел ответ на свой вопрос.

Шаги:

  • Установите плагин Conditional Build Step.
  • Установите Fail The Build plugin.
  • Добавьте пакетный сценарий, который возвращает код ошибки 1, если размер файла для запуска тестов равен 0, или код ошибки 0 в противном случае.
  • Add a single conditional build step:
    • Execute Windows Batch Commands == the path to the batch file.
    • Установите результат сборки == Unstable (или что-то еще).

Код моего командного файла:

@echo off

REM Retrieve the build name.
set arg1=%1

REM Set the file name.
set file="C:\Path\To\TestsToRunFile\%arg1%.txt"

REM Get the file size.
FOR /F "usebackq" %%A IN ('%file%') DO set size=%%~zA

REM Exit codes based on the file size.
IF %size% EQU 0 (
    exit /b 0
) ELSE (
    exit /b 1
)
person XtinaS    schedule 16.01.2014