Настройка Jenkins для запуска автоматических тестов (C#, NUnit, MSBuild)

Настройка Jenkins для запуска автоматических тестов (C#, NUnit, MSBuild)
Рассмотрим настройку Jenkins для сборки и запуска автоматических тестов, которые написаны на C#. Будем использовать сервер на базе Windows. Если вы используете автотесты написанные с помощью C# + Selenium WebDriver + NUnit, то также сможете использовать данную статью для настройки запуска автоматических тестов.

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

Перед тем как приступить к настройке Jenkins нам предварительно требуется установить/развернуть на сервере:
— Jenkins
— Git
— NET Framework 4.6.2 (для NuGet, актуально на момент написания статьи)
— NuGet

УСТАНОВКА JENKINS

Установочный пакет Jenkins можно скачать с официального сайта jenkins.io. Установку Jenkins описывать не буду, так как она элементарна и не требует отдельных объяснений. Хочу только заметить, что я установил Jenkins в каталог «C:\jenkins», поэтому в статье я буду ссылаться именно на него.

Для всех пакетов, которые мы будем использовать в связке с Jenkins, мы создадим отдельный каталог «C:\jenkins\CI_package», в который и будем помещать все необходимые нам пакеты и программы.

В Jenkins интерфейс отображает на том языке, который выбран по умолчанию в браузере. Если хотите поменять язык интерфейса, то вам придётся поменять язык в браузере (Chrome) или установить в Jenkins плагин «Locale».

УСТАНОВКА GIT

Установочный дистрибутив Git можно скачать с сайта git-scm.com. Установка не будет описываться, так как там всё интуитивно понятно. Если не знаете, что делать, то при установке везде жмите «Далее».

УСТАНОВКА И НАСТРОЙКА NUGET

Чтобы у нас корректно работал NuGet ( у меня версия 4.7.1) нам необходимо предварительно установить .NET Framework 4.6.2, который доступен для скачивания с официального сайта MIcrosoft по ссылке www.microsoft.com/ru-RU/download/details.aspx?id=53344

Скачиваем консольную утилиту «nuget.exe» с официального сайта nuget.org/downloads. Файл «nuget.exe» помещаем в каталог «C:\jenkins\CI_package».

Создаём в каталоге «C:\jenkins\CI_package» файл «nuget.config» и заполняем его следующим содержимым:

У меня в секции «packageSources» указано два источника, откуда могут браться пакеты:
1. Официальный источник NuGet-пакетов.
2. Каталог на компьютере, в который я могу поместить пакеты *.nupkg.

В секции «disabledPackageSources» указываете все источники, которые отключены. У меня отключены все кроме локального каталога.

Содержимое указанных секций можете менять на своё усмотрение (аккуратно). Другие секции не трогаем и оставляем как есть.

НАСТРОЙКА JENKINS

Установка плагинов

Установим в Jenkins следующие плагины:
— Git
— MSBuild
— NUnit

Для установки переходим в раздел настроек «Настроить Jenkins» — «Управление плагинами» — «Доступные»:

Настройка Jenkins для запуска автоматических тестов (C#, NUnit, MSBuild)

Настройка Jenkins для запуска автоматических тестов (C#, NUnit, MSBuild)

Ищем плагины именно называющиеся, так как я и написал выше, особенно это касается плагина «Git», иначе можете установить не то что нужно.

Настройка Jenkins для запуска автоматических тестов (C#, NUnit, MSBuild)

После установки плагинов перезагружаем Jenkins.

Настройка MSBuild

Чтобы можно было производить в дальнейшем компиляцию проекта нам необходимо произвести настройку Jenkins, чтобы он знал, где находится MSBuild. Для этого нам необходимо:
1. Определить путь до «MSBuild.exe».
2. Указать определённый путь в Jenkins.

Идём в каталог «C:\Windows\Microsoft.NET\Framework». Здесь я вижу следующее:

Настройка Jenkins для запуска автоматических тестов (C#, NUnit, MSBuild)

У меня в проекте используется .NET Framework 4.5.2, поэтому я буду использовать «MSBuild.exe», который находится в каталоге «C:\Windows\Microsoft.NET\Framework \v4.0.30319». Полный путь до «MSBuild.exe» будет следующий «C:\Windows\Microsoft.NET\Framework \v4.0.30319\ MSBuild.exe». Запомнили.

Идём в Jenkins в раздел «Настроить Jenkins» — «Конфигурация глобальных инструментов»:

Настройка Jenkins для запуска автоматических тестов (C#, NUnit, MSBuild)

И в разделе «MSBuild» прописываем настройки. У меня они будут выглядеть следующим образом:

Настройка Jenkins для запуска автоматических тестов (C#, NUnit, MSBuild)

Сохраняем изменения. Вы можете установить «MSBuild» отдельно и использовать его, а не тот, что устанавливается с .NET Framework. Скажу только, что оба варианта работают.

Создание проекта

На главной странице в левом меню выбираем пункт «Создать Item»:

11

В открывшемся окне вписываем имя проекта и выбираем тип проекта:

Настройка Jenkins для запуска автоматических тестов (C#, NUnit, MSBuild)

Нажимаем «ОК». Откроется страница настройки проекта. Если страница не открылась, то откройте её (на главной странице нажмите по названию проекта и далее в левом меню сайта «Настройки»).

Заполнение блока «Управление исходным кодом»

Выбираем «Git». В форме указываем:
— Repository URL – указывается ссылка на репозиторий Git;
— Credentials – нажимаем «Add» — «Jenkins», чтобы добавить учётную запись для авторизации в Git (я выбрал авторизацию по логину/паролю):

Настройка Jenkins для запуска автоматических тестов (C#, NUnit, MSBuild)

— Branches to build – с какой ветки брать код (у меня «master»);
— Просмотрщик репозитория – значение «Автоматически»;
— Additional Behaviours – дополнительные действия, здесь я указал, чтобы перед сборкой очищался рабочий каталог от старых данных. Рабочий каталог, по умолчанию, находится по пути {каталог установки Jenkins}\workspace\{имя проекта}.

Получилось следующее:

Настройка Jenkins для запуска автоматических тестов (C#, NUnit, MSBuild)

Теперь Jenkins знает, откуда требуется качать исходники.

Заполнение блока «Триггеры сборки»

Данный блок заполняйте на своё усмотрение. Если хотите, чтобы Jenkins опрашивал репозиторий каждые 30 минут и при наличии изменений запускал сборку, то указываем следующее:

Настройка Jenkins для запуска автоматических тестов (C#, NUnit, MSBuild)

Заполнение блока «Сборка»

Теперь нам надо указать, что Jenkins должен делать, после того как скачает исходный код:
1. Скачать NuGet пакеты, которые подключены к проекту.
2. Скомпилировать проект.
3. Запустить выполнение (запуск автотестов).

Добавляем первый шаг «Выполнить команду Windows» в блоке «Сборка»:

Настройка Jenkins для запуска автоматических тестов (C#, NUnit, MSBuild)

В появившемся поле указываем, что нам надо запустить «nuget.exe» для восстановления NuGet-пакетов, ведь мы их в репозиторий не загружаем. Команда:

"C:\jenkins\CI_package\nuget.exe" restore "%WORKSPACE%\test.sln" -ConfigFile "C:\jenkins\CI_package\nuget.config"

Настройка Jenkins для запуска автоматических тестов (C#, NUnit, MSBuild)

Можно использовать различные команды (примеры):

"C:\jenkins\CI_package\nuget.exe" restore "%WORKSPACE%\xECM_services_testing\xECM_services_testing.sln" -ConfigFile "C:\jenkins\CI_package\nuget.config"
"C:\jenkins\CI_package\nuget.exe" restore "%WORKSPACE%\xECM_services_testing\xECM_services_testing.sln" -source "C:\nuget_package"
"C:\jenkins\CI_package\nuget.exe" restore "%WORKSPACE%\xECM_services_testing\xECM_services_testing.sln" -source "https://nuget.victorz.ru/v3/index.json"

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

Добавим второй шаг «Build a Visual Studio project or solution using MSBuild» в блоке «Сборка»:

Настройка Jenkins для запуска автоматических тестов (C#, NUnit, MSBuild)

Заполняем необходимые поля. В моём случае получим:

Настройка Jenkins для запуска автоматических тестов (C#, NUnit, MSBuild)

После этих настроек, в общем-то, проект уже рабочий и может выкачивать код из Git и компилироваться. Нам же необходимо ещё запускать тесты.

Добавляем третий шаг «Выполнить команду Windows» в блоке «Сборка»:

Настройка Jenkins для запуска автоматических тестов (C#, NUnit, MSBuild)

В открывшемся окне прописываем команду запуска NUnit с параметрами, в которых передаём путь к нашей библиотеке с тестами:

"%WORKSPACE%\packages\NUnit.ConsoleRunner.3.8.0\tools\nunit3-console.exe" "%WORKSPACE%\test\bin\Release\test.dll" --result=nunit-result.xml

Внимательно прописывайте путь к NUnit и путь к библиотеке. «nunit-result.xml» — это отчёт, который сгенерирует NUnit, он будет всегда размещаться в корне рабочего каталога.

У меня получилось следующее:

Настройка Jenkins для запуска автоматических тестов (C#, NUnit, MSBuild)

Если вам необходимо запускать тесты определённой категории, то дописываем это следующим образом (обратите внимание на окончание команды):

"%WORKSPACE%\packages\NUnit.ConsoleRunner.3.8.0\tools\nunit3-console.exe" "%WORKSPACE%\test\bin\Release\test.dll" --result=nunit-result.xml --where "cat == REST"

«REST» — это название моей категории тестов. Вы указываете свою категорию запускаемых тестов.

Заполнение блока «Послесборочные операции»

Чтобы Jenkins у себя в интерфейсе выводил результаты тестов надо в блоке «Послесборочные операции» добавить шаг «Publish NUnit test result report»:

Настройка Jenkins для запуска автоматических тестов (C#, NUnit, MSBuild)

В появившейся строке указать имя отчёта, который у нас будет генерировать NUnit:

Настройка Jenkins для запуска автоматических тестов (C#, NUnit, MSBuild)

Теперь нажимаем «Сохранить». Проект, который собирает наши тесты и запускает их, настроен.

Запуск тестов

Для запуска тестов достаточно на главной странице нажать на соответствующий значок сборки проекта:

Настройка Jenkins для запуска автоматических тестов (C#, NUnit, MSBuild)

Просмотр результатов

Для просмотра результатов достаточно перейти в проект и выбрать последний номер сборки в блоке «История сборок»:

Настройка Jenkins для запуска автоматических тестов (C#, NUnit, MSBuild)

Настройка Jenkins для запуска автоматических тестов (C#, NUnit, MSBuild)

Настройка Jenkins для запуска автоматических тестов (C#, NUnit, MSBuild)

Вот и завершена настройка Jenkins для запуска автоматических тестов, написанных на C#.

ВСТРЕЧАЮЩИЕСЯ ОШИБКИ

Ошибка 1

Данная ошибка появляется при запуске «nuget.exe». На момент написания статьи у меня «nuget.exe» версии 4.7.1 и когда я установил «.NET Framework 4.6.2» у меня ошибка пропала.

Ошибка 2

Проект создан с использованием «.NET Framework 4.5.2», а его нет на компьютере. Если стоит старшая версия .NET Framework, то предыдущую, скорее всего, не удастся установить. Я установил «пакет разработчика Microsoft .NET Framework 4.5.2», который доступен по ссылке https://www.microsoft.com/ru-RU/download/details.aspx?id=42637

Если у вас программа создана с использованием другой версии .NET Framework и появляется аналогичная ошибка, с указанием вашей версии, то ищите пакет разработчика для вашей версии.

  • Понравилось? Добавьте в избранное или поделитесь с друзьями:

Добавить комментарий

Ваш e-mail не будет опубликован.