Интеграция с Azure DevOps
Эта страница описывает, как настроить ТестОпс и Azure DevOps в проекте, который использует Azure Pipelines для запуска тестов.
Как и все другие CI-интеграции в ТестОпс, это двусторонняя связь:
- Джоба в пайплайне Azure использует allurectl для отправки своего статуса и результатов тестов в ТестОпс.
- ТестОпс использует API Azure DevOps для запуска новых пайплайнов, при необходимости передавая тест-план.
После остановки пайплайна соответствующий запуск в ТестОпс может быть закрыт вручную или автоматически в соответствии с настройками автоматического закрытия.
Настройка интеграции
Примечание
Чтобы настроить интеграцию в ТестОпс, вы должны иметь доступ к разделам:
- Администрирование — необходимы права администратора инстанса;
- Настройки в конкретном проекте — необходима роль владельца этого проекта.
Чтобы настроить интеграцию с Azure DevOps:
Настройте связь от ТестОпс к Azure DevOps:
Создайте токен в Azure DevOps.
На уровне инстанса ТестОпс добавьте интеграцию с Azure DevOps, указав:
- название интеграции;
- URL-адрес Azure DevOps.
На уровне инстанса или проекта ТестОпс включите добавленную интеграцию для проекта, указав созданный токен из Azure DevOps.
Настройте связь от Azure DevOps к ТестОпс:
- Создайте API-токен в ТестОпс.
- В Azure DevOps укажите созданный API-токен из ТестОпс.
- Измените пайплайн в Azure DevOps.
- Запустите и проверьте пайплайн в Azure DevOps.
- Настройте созданную джобу в ТестОпс.
Параметризуйте джобы Azure DevOps (если необходимо).
1. Настройте связь от ТестОпс к Azure DevOps
1.1. Создайте токен в Azure DevOps
В Azure DevOps нажмите на значок User settings рядом с вашим аватаром и выберите Personal access tokens.
Нажмите New Token.
В появившемся окне заполните поля:
- Name — название, которое поможет вам распознать токен, например, Токен для ТестОпс.
- Organization — организация Azure DevOps, которая содержит проект, который вы хотите интегрировать с ТестОпс.
- Expiration — срок действия токена. После указанной даты интеграция перестанет работать. Чтобы возобновить ее работу, вам нужно будет создать новый токен.
- Scopes — Custom defined.
Внизу окна нажмите Show all scopes.
Выберите следующие права доступа:
- Build — Read and execute.
- Work Items — Read, write & manage.
- Variable Groups — Read.
Нажмите Create.
Новый токен станет временно видимым. Скопируйте и сохраните токен в безопасном месте, он понадобится для настройки интеграции в проекте ТестОпс.
1.2. Добавьте интеграцию с Azure DevOps в ТестОпс
Перейдите в ваш инстанс ТестОпс.
Перейдите в раздел Администрирование → Интеграции.
Нажмите + Добавить интеграцию в правом верхнем углу.
В списке доступных интеграций выберите Azure DevOps Server.
Заполните поля:
- Название — название, которое поможет вам распознать интеграцию, например, Azure DevOps production.
- Endpoint — URL-адрес организации Azure DevOps, например, https://dev.azure.com/my-organization/.
Нажмите Добавить интеграцию.
1.3. Включите интеграцию для проекта ТестОпс
Чтобы включить интеграцию в нужном проекте ТестОпс воспользуйтесь одним из двух способов ниже:
Перейдите в раздел Администрирование → Интеграции.
В списке настроенных интеграций найдите и откройте вашу интеграцию с Azure DevOps.
Перейдите на вкладку Проекты.
Нажмите + справа от поля поиска.
В выпадающем списке Проект выберите нужный проект.
В появившемся окне заполните поля:
- Имя пользователя (email) — электронная почта, которую вы используете для входа в Azure DevOps.
- Токен Azure — токен, который вы сохранили на шаге 1.1.
Нажмите Проверить соединение. Если учетные данные верны, через несколько секунд появится сообщение «Соединение установлено».
Нажмите Добавить интеграцию, чтобы сохранить настройки.
2. Настройте связь от Azure DevOps к ТестОпс
Этот раздел описывает вторую часть двусторонней связи: отправку статусов пайплайнов и результатов тестов из Azure DevOps в ТестОпс.
2.1. Создайте токен в ТестОпс
В ТестОпс нажмите на ваш аватар и перейдите в API-токены.
Нажмите + Токен.
Придумайте название для токена (например, «Токен для Azure DevOps») и нажмите Создать.
ТестОпс сгенерирует токен и отобразит его в модальном окне.
Нажмите значок Копировать, чтобы скопировать токен в буфер обмена.
Cохраните токен в безопасном месте, он понадобится для настройки интеграции в Azure DevOps.
2.2. Укажите токен в Azure DevOps
В Azure DevOps перейдите в Pipelines и выберите нужный пайплайн.
В правом верхнем углу нажмите Edit.
В правом верхнем углу нажмите Variables.
Нажмите New variable или +. В появившемся окне заполните поля:
- Name — ALLURE_TOKEN.
- Value — API-токен, который вы сохранили на шаге 2.1.
- Keep this value secret — должно быть отмечено.
- Let users override this value when running this pipeline — не должно быть отмечено.
Нажмите OK.
Нажмите + снова. В появившемся окне заполните поля:
- Name — ALLURE_JOB_RUN_ID.
- Value — должно быть пустым.
- Keep this value secret — не должно быть отмечено.
- Let users override this value when running this pipeline — должно быть отмечено.
Нажмите OK.
Нажмите Save, чтобы применить изменения и закрыть окно.
2.3. Измените пайплайн
Внесите следующие изменения в файл azure-pipelines.yml в вашем репозитории. Вы можете сделать это либо в локальной директории, либо в редакторе Azure.
В начале раздела
steps
добавьте новый шаг, который загружает инструмент allurectl и делает его исполняемым.В шаге, который запускает тесты, добавьте или расширьте блок
env
. Он должен включать следующие переменные:ALLURE_ENDPOINT
— URL-адрес инстанса ТестОпс.ALLURE_PROJECT_ID
— ID проекта ТестОпс.ALLURE_RESULTS
— путь к директории с результатами тестов, например, build/allure-results. Если в вашем проекте несколько директорий с результатами тестов, вы можете разделить их запятыми или использовать шаблон с подстановочными символами, например, modules/*/build/allure-results.ALLURE_TOKEN
— $(ALLURE_TOKEN).
Оберните команду, которая запускает тесты, в команду
./allurectl watch
.
Совет
Пример
Предположим, у нас есть проект на Java с файлом azure-pipelines.yml такого вида:
yaml
steps:
- script: ./gradlew clean test
displayName: Run tests
С интеграцией ТестОпс файл будет выглядеть примерно так:
yaml
steps:
- bash: curl -fsSL https://github.com/allure-framework/allurectl/releases/latest/download/allurectl_linux_amd64 -o allurectl && chmod +x allurectl
displayName: Download allurectl
- script: ./allurectl watch -- ./gradlew clean test
displayName: Run tests
env:
ALLURE_ENDPOINT: https://testops.example.com
ALLURE_PROJECT_ID: 1
ALLURE_RESULTS: build/allure-results
ALLURE_TOKEN: $(ALLURE_TOKEN)
2.4. Запустите и проверьте пайплайн
В Azure DevOps откройте проект и перейдите к запуску пайплайна, вызванному последним коммитом.
В качестве альтернативы вы можете запустить новый пайплайн вручную.
Если выполнение пайплайна еще не завершено, дождитесь его завершения.
В деталях выполнения пайплайна нажмите на джобу, которая запускает тесты.
Ближе к концу ее лога должна быть ссылка на отчет о тестировании в ТестОпс. Убедитесь, что она присутствует и работает.
В запуске в ТестОпс откройте результаты одного теста.
Внизу страницы должна быть ссылка на пайплайн Azure DevOps. Убедитесь, что она присутствует и работает.
2.5. Настройте джобу в ТестОпс
Перейдите в ваш проект в ТестОпс.
Перейдите в раздел Джобы.
Страница должна содержать новую джобу, автоматически добавленную и настроенную во время запуска на шаге 2.4.
Нажмите
⋯
напротив джобы, затем выберите Настроить.В появившемся окне отредактируйте поля:
- Сервер сборки — название интеграции, которую вы добавили на шаге 1.2.
- Джоба может быть использована для запуска тестов — если отмечено, пользователи смогут запускать эту джобу из ТестОпс.
- Параметры — параметры, которые должны быть переданы в Azure DevOps через переменные окружения, см. Окружения.
Нажмите Отправить.
3. Параметризуйте джобы
При запуске пайплайнов Azure DevOps можно указывать переменные. ТестОпс интегрирует эту функцию с собственной концепцией Окружения, что позволяет вам как задавать параметры для новых джоб, так и видеть параметры, установленные для джоб, запущенных вне ТестОпс.
Важно
Если в репозитории вашего проекта несколько веток, обязательно создайте переменную окружения Branch в ТестОпс и передайте ее в вашу джобу. Это специальное имя, которое укажет Azure DevOps, какую из веток нужно использовать.
3.1. Добавьте глобальные названия параметров
Перейдите в ваш инстанс ТестОпс.
Перейдите в раздел Администрирование → Окружения.
Для каждого параметра, которой вы хотите добавить:
- Нажмите + Создать.
- Введите название нового параметра.
- Нажмите Отправить.
3.2. Сопоставьте параметры с переменными окружения
Перейдите в ваш проект в ТестОпс.
Перейдите в раздел Настройки → Окружение.
Для каждого параметра, которой вы хотите использовать:
- Нажмите + Создать, если параметра нет в списке. Если параметр уже существует, нажмите значок Редактировать рядом с его названием.
- В поле Ключ укажите название переменной окружения.
- В поле Переменная окружения выберите глобальное название параметра из шага 3.1.
- Нажмите Отправить.
3.3. Добавьте параметры в джобу
Перейдите в раздел Джобы.
Найдите джобу, которую вы хотите параметризовать. Нажмите
⋯
напротив джобы, затем выберите Настроить.Появится окно настроек джобы, содержащее раздел Параметры.
Для каждого параметра, который вы хотите добавить, нажмите Добавить и заполните поля:
- Название — название переменной окружения (такое же, как Ключ из шага 3.2).
- Значение — значение по умолчанию, которое должно использоваться, если не указано для конкретного запуска.
- Переменная окружения — переменная окружения из шага 3.1.
Нажмите Отправить.
3.4. Установите значения по умолчанию в пайплайне
В Azure DevOps перейдите в Pipelines и выберите нужный пайплайн.
В правом верхнем углу нажмите Edit.
В правом верхнем углу нажмите Variables.
Для каждого параметра, который вы хотите добавить, нажмите + и заполните поля:
- Name — название переменной окружения (такое же, как Ключ из шага 3.2 и Название из шага 3.3).
- Value — значение по умолчанию, которое должно использоваться, если не указано для конкретного запуска (такое же, как Значение из шага 3.3).
- Keep this value secret — не должно быть отмечено.
- Let users override this value when running this pipeline — должно быть отмечено.
Нажмите OK, чтобы завершить редактирование новой переменной.
Нажмите Save, чтобы применить изменения.