Интеграция с Jenkins
Эта страница описывает, как настроить ТестОпс и Jenkins в проекте, который использует Jenkins для запуска тестов.
Как и все другие интеграции CI для ТестОпс, это включает двустороннюю связь.
- Сборка Jenkins будет отправлять свой статус и результаты тестов в ТестОпс.
- ТестОпс будет использовать API Jenkins для запуска новых пайплайнов, при необходимости передавая тест-план.
После остановки выполнения пайплайна соответствующий запуск в ТестОпс может быть закрыт вручную или автоматически в соответствии с политикой автоматического закрытия.
Чтобы включить поддержку ТестОпс в вашем проекте Jenkins:
- установите плагин для Jenkins,
- включите отправку данных из Jenkins,
- включите запуск сборок Jenkins,
- параметризуйте задания (если необходимо).
1. Установите плагин для Jenkins
Рекомендуемый метод установки плагина ТестОпс — указанием его URL. Однако, если ваша конфигурация Jenkins не имеет доступа к интернету, вы можете установить плагин загрузкой HPI файла в Jenkins вручную. Выбранный метод установки не влияет на функциональность плагина.
Установить с URL-адреса
- Посетите каталог jenkins-plugin на dl.qatools.ru и найдите последнюю версию плагина. Скопируйте URL-адрес HPI-файла.
Пожалуйста, учтите, что начиная с 15 февраля 2024 года существуют 2 версии плагина
- Плагин вер. 4 для Jenkins CI 2.361.1+, работающий на Java 17
- Плагин вер. 3 для Jenkins CI ранее 2.361.1, работающий на Java 11
Если вы используете Плагин вер. 4 для Jenkins CI 2.361.1+, то на стороне агента (раннера) Jenkins у вас должна быть установлена Java версии 17, иначе плагин не сможет быть запущен и загрузка результатов не будет работать.
-
В Jenkins перейдите в Manage Jenkins → Manage Plugins → Advanced settings.
-
В разделе Deploy Plugin вставьте URL HPI файла.
-
Нажмите кнопку Deploy, чтобы подтвердить установку.
На странице Download progress дождитесь, пока каждый статус не станет “Success”.
Установить с файла
-
Посетите каталог jenkins-plugin на dl.qatools.ru и найдите последнюю версию плагина. Сохраните HPI-файл в локальный каталог на вашем устройстве.
-
В Jenkins перейдите в Manage Jenkins → Manage Plugins → Advanced settings.
-
В разделе Deploy Plugin нажмите Browse и выберите HPI архив с вашего устройства.
-
Нажмите кнопку Deploy, чтобы подтвердить установку.
На странице Download progress дождитесь, пока каждый статус не станет “Success”.
2. Включите отправку данных из Jenkins
Этот раздел описывает вторую часть двусторонней связи: отправку статусов заданий и результатов тестов из Jenkins обратно в ТестОпс. Для настройки этого любой пользователь ТестОпс может создать токен аутентификации и добавить его в Jenkins, чтобы Jenkins мог выполнять действия с разрешениями этого пользователя.
Само задание Jenkins также нужно изменить, чтобы включить взаимодействие с сервером. Плагин поддерживает это как для проектов свободного стиля, так и для проектов пайплайнов.
После настройки запустите и проверьте задание, чтобы убедиться, что все работает.
2.1. Создать токен в ТестОпс
- В ТестОпс нажмите на ваш аватар и перейдите в Ваш профиль.
- В разделе API-токены нажмите + Токен.
- Введите Название токена (например, «Токен для Jenkins»), затем нажмите Отправить.
- В появившемся окне нажмите значок Копировать, чтобы скопировать токен в буфер обмена. Этот токен понадобится вам на следующем шаге.
2.2. Указать сервер и токен в Jenkins
-
В Jenkins перейдите в Manage Jenkins → System.
-
В разделе Allure нажмите Add Allure Server → Allure Server.
-
Заполните поля:
- ID — имя, которое поможет вам распознать сервер ТестОпс.
- Endpoint — URL-адрес сервера ТестОпс.
-
Рядом с полем Credentials нажмите Add → Jenkins.
-
В появившемся диалоге заполните поля:
- Kind — “Secret text”.
- Secret — API токен, который вы получили на шаге 2.1.
- ID — имя, которое поможет вам распознать учетные данные, например, “allure-credentials”.
Нажмите Add, чтобы закрыть диалог.
-
В выпадающем списке Credentials выберите ID сохраненных учетных данных, например, “allure-credentials”.
-
Если ваш сервер ТестОпс использует самоподписанный SSL-сертификат, снимите флажок Enable certificate validation. В противном случае оставьте его установленным.
СоветПроверьте, что все правильно
Нажмите Test connection. Через несколько мгновений должно появиться сообщение “Successfully authorized as ⟨USERNAME⟩”.
-
Нажмите Advanced для дополнительных параметров:
- Threads count — максимальное количество потоков для загрузки файлов на сервер.
- Batch size — максимальное количество файлов для загрузки на сервер за раз (одним потоком).
- Results depth — количество уровней подкаталогов в каталоге результатов тестов для сканирования и загрузки. “0” означает, что подкаталоги не будут загружены.
- Process interval — минимальный интервал (в секундах) между отправкой пакетов файлов (одним потоком).
- Indexing interval — интервал (в секундах) между сканированием каталога результатов тестов.
- Delay interval — минимальный интервал (в секундах) перед загрузкой вновь созданного файла (чтобы избежать загрузки наполовину записанных файлов).
- Delay before upload finish — интервал (в секундах) после завершения задания перед предположением, что в каталоге не появятся другие файлы. Это необходимо для избежания проблем с некоторыми тестовыми раннерами, которые могут создавать процессы записи файлов в новых процессах.
-
Нажмите Save внизу страницы.
2.3a. Изменить проект свободного стиля
В Jenkins “проект свободного стиля” — это конфигурация сборки, для которой вы добавляете и редактируете шаги через веб-интерфейс. После установки плагина ТестОпс вы можете использовать тот же веб-интерфейс для включения и настройки автоматической загрузки результатов тестов на сервер ТестОпс.
-
В Jenkins выберите задание, для которого хотите включить загрузку.
-
В меню слева нажмите Configure.
-
В разделе Build Environment установите флажок Allure: upload results.
-
Заполните поля:
- Server — имя сервера ТестОпс, которое вы указали на шаге 2.2.
- Project — ID проекта ТестОпс.
- Launch name — шаблон для именования запусков тестов. Вы можете использовать любые переменные окружения Jenkins здесь (см. страницу /env-vars.html на вашей установке Jenkins для полного списка).
- Launch tags — список тегов, которые должны быть присвоены запуску тестов, через запятую.
-
Нажмите Add results → Results.
-
В поле Results → Path укажите путь к каталогу результатов тестов, например, “build/allure-results”.
ПримечаниеЕсли у вас несколько шагов сборки, генерирующих результаты тестов в несколько каталогов, используйте кнопку Add, чтобы указать больше путей.
Плагин ТестОпс для Jenkins в настоящее время не поддерживает подстановочные знаки и другие шаблоны в поле Path. Это будет улучшено в будущих версиях.
-
Нажмите Advanced для дополнительных параметров задания:
-
Silent mode — если установлен, ошибка соединения при попытке загрузить результаты тестов не будет считаться ошибкой задания.
В общем, рекомендуется включать этот режим только если у вас есть другие средства просмотра результатов тестов, например, если у вас также установлен плагин Allure Report для Jenkins.
-
Index Existing Files — если установлен, ТестОпс не будет загружать файлы, которые не были созданы или изменены заданием.
-
-
Нажмите Save.
2.3b. Изменить скрипт пайплайна Jenkins
Если вы храните задание в скрипте пайплайна Jenkins, плагин ТестОпс добавляет блок withAllureUpload()
и веб-интерфейс для генерации фрагмента кода, который его использует.
-
В Jenkins выберите задание, для которого хотите включить загрузку.
-
В меню слева нажмите Pipeline Syntax.
Откроется интерфейс для генерации фрагментов кода для пайплайна Jenkins.
-
В выпадающем списке Sample Step выберите “withAllureUpload: Allure: upload results”.
-
Заполните поля:
- Server — имя сервера ТестОпс, которое вы указали на шаге 2.2.
- Project — ID проекта ТестОпс.
- Launch name — шаблон для именования запусков тестов. Вы можете использ овать любые переменные окружения Jenkins здесь (см. страницу /env-vars.html на вашей установке Jenkins для полного списка).
- Launch tags — список тегов, которые должны быть присвоены запуску тестов, через запятую.
-
Нажмите Add results → Results.
-
В поле Results → Path укажите путь к каталогу результатов тестов, например, “build/allure-results”.
ПримечаниеЕсли у вас несколько шагов сборки, генерирующих результаты тестов в несколько каталогов, используйте кнопку Add, чтобы указать больше путей.
Плагин ТестОпс для Jenkins в настоящее время не поддерживает подстановочные знаки и другие шаблоны в поле Path. Это будет улучшено в будущих версиях.
-
Нажмите Advanced для дополнительных параметров задания:
-
Silent mode — если установлен, ошибка соединения при попытке загрузить результаты тестов не будет считаться ошибкой задания.
В общем, рекомендуется включать этот режим только если у вас есть другие средства просмотра результатов тестов, например, если у вас также установлен плагин Allure Report для Jenkins.
-
Index Existing Files — если установлен, ТестОпс загрузит все файлы, найденные в целевом каталоге, даже если они не были обновлены во время этого запуска.
-
-
Нажмите Generate Pipeline Script.
В области под кнопкой появится сгенерированный фрагмент, например:
withAllureUpload(name: '${JOB_NAME} - #${BUILD_NUMBER}', projectId: '1', results: [[path: 'build/allure-results']], serverId: 'ТестОпс production', tags: '') {
// some block
} -
Скопируйте сгенерированный фрагмент в буфер обмена для использования позже.
-
Откройте скрипт Groovy, который вы используете для проекта. Это может быть:
- скрипт в текстовом поле в Configure → Pipeline,
- Jenkinsfile под системой управления версиями проекта (см. официальную документацию).
-
Найдите команду (или набор команд), которая запускает тесты, и оберните их в блок
withAllureUpload()
из сгенерированного фрагмента.- Для декларативных пайплайнов
- Для скриптовых пайплайнов
Если вы используете синтаксис декларативного пайплайна, блок
withAllureUpload()
должен быть размещен внутри блокаsteps
. Например:pipeline {
agent any
stages {
stage('Build') {
steps {
git 'https://github.com/eroshenkoam/allure-example.git'
withAllureUpload(name: '${JOB_NAME} - #${BUILD_NUMBER}', projectId: '1', results: [[path: 'build/allure-results']], serverId: 'Allure TestOps production', tags: '') {
sh './gradlew clean test'
}
}
}
}
}Если вы используете синтаксис скриптового пайплайна, блок
withAllureUpload()
должен быть размещен внутри блокаstage()
. Например:node {
stage('Build') {
git 'https://github.com/eroshenkoam/allure-example.git'
withAllureUpload(name: '${JOB_NAME} - #${BUILD_NUMBER}', projectId: '1', results: [[path: 'build/allure-results']], serverId: 'Allure TestOps production', tags: '') {
sh './gradlew clean test'
}
}
} -
Сохраните скрипт. В случае Jenkinsfile, убедитесь, что изменения зафиксированы в репозитории.
2.4. Запустите и проверьте задание
-
В Jenkins выберите зада ние, для которого вы настроили интеграцию с ТестОпс.
-
Нажмите Build Now.
Дождитесь завершения сборки.
-
В Build History нажмите на последнюю сборку.
-
В меню и внизу страницы должны быть ссылки на отчет о тестировании в ТестОпс. Убедитесь, что они присутствуют и работают.
-
В отчете о тестировании в ТестОпс откройте результаты одного теста.
Внизу страницы должна быть ссылка обратно в Jenkins. Убедитесь, что она присутствует и работает.
3. Включение запуска сборок Jenkins
Интеграция с сервером Jenkins должна быть настроена на двух уровнях.
Сначала администратор укажет URL-адрес сервера Jenkins.
Затем владелец любого проекта создаст токен аутентификации в Jenkins, добавит его в ТестОпс и настроит задание в ТестОпс.
3.1. Укажите сервер Jenkins в ТестОпс
-
Войдите в ТестОпс, используя учетную запись администратора.
-
Перейдите в раздел Администрирование → Интеграции.
-
Нажмите + Добавить интеграцию в правом верхнем углу страницы.
-
В появившемся окне выберите Jenkins.
-
Заполните поля:
- Название — название, которое поможет вам распознать сервер Jenkins, например, Jenkins production.
- Endpoint — URL-адрес сервера Jenkins, например, https://jenkins.example.com/.
-
Если ваш сервер Jenkins использует самоподписанный SSL-сертификат, поставьте галочку Disable certificate validation.
-
Нажмите Добавить интеграцию.
3.2. Создайте токен в Jenkins
-
В Jenkins нажмите на свое имя пользователя и перейдите в Security.
-
В разделе API Token нажмите Add new Token.
-
Введите имя (например, “Token for ТестОпс”), затем нажмите Generate.
-
В появившемся диалоговом окне нажмите значок Copy, чтобы скопировать токен в буфер обмена.
Этот токен понадобится вам на следующем шаге.
3.3. Добавьте токен в проект ТестОпс
-
Откройте ваш проект в ТестОпс.
-
Перейдите в раздел Настройки → Интеграции.
-
В разделе Доступные интеграции найдите интеграцию Jenkins и нажмите Добавить и нтеграцию рядом с ней.
-
В появившемся диалоговом окне заполните поля:
- Имя пользователя — имя пользователя Jenkins (из профиля в Jenkins).
- Токен — API-токен, который вы получили на шаге 3.2.
СоветПроверьте правильность учетных данных
Нажмите Проверить соединение. Через несколько секунд должно появиться сообщение «Соединение установлено».
-
Нажмите Добавить интеграцию, чтобы сохранить настройки и закрыть окно.