Jenkins


Введение
Jenkins — проект для непрерывной интеграции с открытым исходным кодом, написанный на Java.
Позволяет автоматизировать часть процесса разработки программного обеспечения, в котором не обязательно участие человека, обеспечивая функции непрерывной интеграции.
Непрерывная интеграция (CI, англ. Continuous Integration) — это практика разработки программного обеспечения, которая заключается в слиянии рабочих копий в общую основную ветвь разработки несколько раз в день и выполнении частых автоматизированных сборок проекта для скорейшего выявления и решения интеграционных проблем. В обычном проекте, где над разными частями системы разработчики трудятся независимо, стадия интеграции является заключительной. Она может непредсказуемо задержать окончание работ. Переход к непрерывной интеграции позволяет снизить трудоёмкость интеграции и сделать её более предсказуемой за счет наиболее раннего обнаружения и устранения ошибок и противоречий. Непрерывная интеграция является одним из основных приёмов экстремального программирования.
Работу системы непрерывной интеграции мы рассмотрим на примере приложения Qt созданного в лабораторной работе по созданию Unit – тестов.
Установка JenkinsНеобходимо скачать дистрибутив перейдя по ссылке:
https://jenkins.io/download/thank-you-downloading-windows-installer-stable/Распаковать и запустить установщик дистрибутива.

Устанавливайте дистрибутив так, чтобы путь к нему не содержал пробелов или букв русского алфавита. Например: D:\Tools\Jenkins
Перейдите в браузере по адресу http://localhost:8080/Если страница не доступна, то подождите и повторите попытку.

Необходимо отрыть файл D:\Tools\Jenkins\secrets\initialAdminPassword скопировать код и вставить в поле Administrator password и продолжить установку.
Далее выбрать «Install suggested plugins» - Начнётся установка наиболее популярных и востребованных плагинов.

Далее введите имя и пароль администратора.
Затем перейдите в «Настроить Jenkins» -> «Управление плагинами»-> «Доступные». В поле Фильтр введите название плагина «environment injector plugin», отметьте галочкой для установки, затем кликните по кнопке установить без перезагрузки, далее в поле фильтр введите «xUnit plugin» отметьте галочкой для установки, кликните по кнопке «Загрузить и установить после перезагрузки». Поставите галочку на против «Перезапустить Jenkins по окончанию установки и отсутствии активных задач».
В правом верхнем углу «Включить автообновление страниц». После установки появится экран для ввода логина и пароля. Вернитесь на главную станицу.
Настройка проекта.
Откройте папку: D:\Tools\Jenkins\workspace, Создайте папку MyFirstUnit, а в ней папку sources, Поместите в папку sources файлы myclass.cpp, myclass.h, MyFirstUnit.pro, tst_myfirstunittest.cpp из лабораторной работы Unit-тестирование
Перейдите в раздел «Создать Item». Введите имя проекта MyFirstUnit и кликните «Создать задачу со свободной конфигурацией» - «ОК».
Перейдите в раздел «Среда сборки» и отметьте галочкой пункт «Inject environment variables to the build process», в поле «Properties Content» введите:
Path=$Path;C:\\Qt\\Tools\\mingw530_32\\bin;C:\\Qt\\5.9\\mingw53_32\\bin
Внимание! проверьте существование пути и соответчике версии Qt указанной в примере, при необходимости замените на свои.
Данная манипуляция необходима для включения пути расположения инструментов и библиотек Qt в пути по умолчанию для данного процесса.
Перейдите в раздел «Сборка».
«Добавить шаг сборки» -> пункт «Выполнить команду Windows» и в поле «Команда»:
"qmake.exe" %WORKSPACE%\sources\MyFirstUnit.pro -spec win32-g++ "CONFIG+=debug" "CONFIG+=qml_debug"
Внимание! проверьте существование пути и соответчике версии Qt указанной в примере, при необходимости замените на свои.
Данным шагом мы указываем выполнить создание сборочного шаблона Qt для проекта MyFirstUnit.pro. %WORKSPACE% - будет заменена на путь «D:\Tools\Jenkins\workspace\ MyFirstUnit» где MyFirstUnit - это название проекта в Jenkins.
«Добавить шаг сборки» -> пункт «Выполнить команду Windows» и в поле «Команда»:
"mingw32-make.exe" -f Makefile.DebugВнимание! проверьте существование пути и соответчике версии Qt указанной в примере, при необходимости замените на свои.
Данная команда компилирует приложение Qt.
«Добавить шаг сборки» -> пункт «Выполнить команду Windows» и в поле «Команда»:
"%WORKSPACE%\debug\tst_myfirstunittest.exe" -o "%WORKSPACE%\MyFirstUnit.xml" -xml
Данная команда выводит в файл MyFirstUnit.xml результат выполнения скомпилированной программы, а именно результаты тестирования в формате xml.
Перейдите в раздел «Послесборочные операции».
«Добавить шаг после сборки»-> «Publish xUnit test result report» -> «Добавить» -> «QTestlib-Version N/A». В поле «Pattern» ввести имя файла с отчётом тестирования:MyFirstUnit.xml
Нажмите Сохранить, после этого нажмите «Собрать сейчас». Будет произведена сборка проекта. Если вы всё сделали правильно, в левом столбце «История сборок» появится сборка #1 с синим кружком.

Далее перейдите в папку D:\Tools\Jenkins\workspace\MyFirstUnit\sources откройте для редактирования файл tst_myfirstunittest.cpp найдите метод void MyFirstUnitTest::TablTestMax_data() в котором задаются данный для тестирования метода поиска максимального значения из двух в созданном нами классе MyClass. И измените один из тестов на чтобы он вывел не правильное значение.
Например строку:
QTest::newRow("Test data 2") << 5 << 10 << 10;
Заменить на
QTest::newRow("Test data 2") << 5 << 10 << 4;
Этим мы эмулируем не правильную работу нашего метода max(5,10) который вернёт что максимальное значение 10, а сравниваемое значение с ним и «верное» 4.
После чего в системе Jenkins кликните «Собрать сейчас»

Как мы видим по красному кружку, сборка «#3» завершилась с ошибкой. Количество проваленных тестов отображается на графике. Чтобы посмотреть расширенную информацию о проваленном тесте щёлкните на «#3»

Ссылка «Результаты теста» отобразит сводную информацию по всем тестам, ссылка «MyFirstUnitTest.TablTestMax» отобразит результаты теста который был провален.

Сообщение гласит, что сравниваемые значения Actual – то что вернул метод max(5,10) – 10 и ожидаемое(Expected) 4 не совпадают. Это означает что в реализации метода max появилась ошибка которую необходимо исправить.
Верните в файле tst_myfirstunittest.cpp содержание теста void MyFirstUnitTest::TablTestMax_data() к первоначальному виду и запустите сборку в Jenkins снова.

Задание:
Для Вашей функции/метода из лабораторной работы Unit-тест создать проект Jenkins, выполнить несколько сборок, в том числе по аналогии с вышеприведённым описание внести несколько ошибок в РАЗНЫЕ выполняемые тесты.
В отчёте представить скриншоты главного окна проекта с графиком ошибок, результатов тестов удачной сборки, результатов теста неудачной сборки и сообщения об ошибке одного из проваленных тестов.

Приложенные файлы

  • docx 9515688
    Размер файла: 863 kB Загрузок: 1

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