Загрузка результатов тесто в из Bitbucket
Вам нужно использовать allurectl для загрузки результатов тестов из Bitbucket CI. В этой статье мы предоставляем базовые шаблоны, обеспечивающие ожидаемую работу с ТестОпс.
Для правильной работы с повторными запусками пайплайна Bitbucket в ТестОпс необходимо использовать версию allurectl 2.15.3.
Этот раздел охватывает следующее:
- Аутентификация Bitbucket pipeline в ТестОпс для загрузки результатов тестирования.
- Простая (очень очень простая) конфигурация pipeline для понимания рабочих процессов с использованием
allurectl
.
Токен аутентификации
Для пользователя на стороне ТестОпс вам нужно создать API токен.
Этот API токен будет использоваться allurectl для аутентификации на сервере ТестОпс.
Шаги
-
Войдите в ТестОпс с учетной записью, которую вы собираетесь использовать для загрузки результатов тестирования. Это может быть и ваш профиль.
-
Нажмите на свой аватар и перейдите в Ваш профиль.
-
В разделе API токены нажмите зеленую кнопку Создать.
-
Назовите свой API токен и нажмите Отправить. Всегда давайте осмысленные имена всем параметрам конфигурации.
ТестОпс случайным образом сгенерирует токен и покажет его в модальном окне.
-
Скопируйте токен и сохраните его в безопасном месте, так как его нельзя будет восстановить средствами ТестОпс.
Загрузка результатов тестирования из Bitbucket
Предварительные условия
Вам нужно прочитать руководство по allurectl. В большинстве случаев вам нужно использовать сценарий watch
.
Мы рекомендуем использовать переменные окружения вместо переключателей командной строки для настройки allurectl, этот подход позволяет иметь более понятную командную строку.
Переменные, необходимые для allurectl
Согласно описанию allurectl, это параметры, которые нужно указать:
ALLURE_ENDPOINT
- обязательно- определяет URL сервера ТестОпс, например,
https://demo.testops.cloud
- определяет URL сервера ТестОпс, например,
ALLURE_TOKEN
- обязательно- API токен, используемый для аутентификации
ALLURE_PROJECT_ID
- обязательно- системный ID проекта, в который вы собираетесь загружать результаты тестирования
ALLURE_LAUNCH_NAME
- обязательно- шаблон для имени запуска
ALLURE_RESULTS
- обязательно- папка, в которой allurectl должен искать результаты тестирования
ALLURE_LAUNCH_TAGS
- опционально- полезные теги, которые будут присвоены созданному запуску
В следующих разделах мы объясним, где эти параметры могут быть использованы.
ALLURE_ENDPOINT в переменных рабочего пространства
Это опция, не обязательное размещение этой переменной. Вы также можете определить эту переменную в описании пайплайна.
Обычно у вас есть только один экземпляр ТестОпс. Это означает, что переменную ALLURE_ENDPOINT
можно определить на более высоком уровне сущностей Bitbucket, например, в настройках рабочего пространства. Чтобы открыть их, используйте аналогичный путь и замените {ORGNAME}
на имя вашей организации: https://bitbucket.org/{ORGNAME}/workspace/settings/addon/admin/pipelines/account-variables
.
Добавьте переменную ALLURE_ENDPOINT
и ее значение в настройки Bitbucket.
Вы также можете использовать эту переменную вместе с другими в pipeline (объяснено ниже).
Простой pipeline
Логика pipeline описана в файле bitbucket-pipelines.yml
по умолчанию. У нас нет цели обучать, как должны быть организованы pipelines в Bitbucket. Мы используем самый простой сценарий с пользовательским pipeline.
Пример pipeline
image: gradle:8.10-jdk21
pipelines:
custom:
test:
- variables:
- name: ALLURE_LAUNCH_NAME
default: ""
- name: ALLURE_LAUNCH_TAGS
default: "bitbucket, junit5"
- step:
name: Run tests
script:
- printenv
- wget https://github.com/allure-framework/allurectl/releases/latest/download/allurectl_linux_amd64 -O ./allurectl
- chmod +x ./allurectl
- ALLURE_LAUNCH_NAME="${BITBUCKET_REPO_FULL_NAME} - $BITBUCKET_BUILD_NUMBER"
- ./allurectl watch -- gradle --no-daemon clean test
Комментарии
Эта часть обязательна для интеграции с ТестОпс, так как эти переменные должны присутствовать в контексте всего pipeline, и мы должны иметь возможность переопределять значения этих переменных во время выполнения pipeline.
custom:
test:
- variables:
Все переменные из примера должны быть добавлены в эту часть.
ALLURE_LAUNCH_NAME
ALLURE_LAUNCH_TAGS
Настройка pipeline - Доба вление переменных
В предыдущих разделах мы говорили, что есть переменные, используемые allurectl для отправки результатов тестирования на сервер ТестОпс.
ALLURE_ENDPOINT
ALLURE_TOKEN
ALLURE_PROJECT_ID
Переменная ALLURE_ENDPOINT
может быть добавлена либо в переменные рабочего пространства (см. выше), либо она может быть добавлена так же, как и другие две – на уровне конфигурации pipeline. Это то, что мы сделаем сейчас.
- Выберите раздел Source
- Нажмите на
bitbucket-pipelines.yml
- Нажмите Редактировать
- Затем снова нажмите Редактировать
- Вы увидите вкладку Configure и настройки Add variables, которые нужно развернуть.
Добавьте следующие переменные в раздел, который вы только что открыли
ALLURE_ENDPOINT
- не защищено
ALLURE_TOKEN
- защищено
ALLURE_PROJECT_ID
- не защищено
ALLURE_RESULTS
- не защищено
Мы не упоминали ALLURE_RESULTS
ранее, но это обязательная переменная, которая должна быть видна глобально и не будет изменяться во время выполнения, поэтому лучше добавить ее здесь.
После добавления переменных закройте окно, и теперь вы можете запустить свой pipeline.
Сбор информации о тестовой среде
Зачем?
Довольно редко тесты запускаются без каких-либо параметров, которые определяют различные условия для их выполнения. Эти условия могут быть, например:
- разные хосты для выполнения тестов, например, сервер QA, сервер staging и т.д.
- разные браузеры для выполнения тестов для веб-интерфейса.
- ветка VCS для тестирования изменений перед их появлением в основной ветке.
Когда ТестОпс собирает эту информацию, это позволит вам запускать сборочные задания с выбранной вами средой прямо из его интерфейса.
Как?
Добавление переменных среды в pipeline на стороне Bitbucket
Переменные среды могут быть добавлены в этот раздел, где мы добавили переменные, необходимые для allurectl:
custom:
test:
- variables:
Добавим информацию о версии продукта, который тестируется, и о браузере, который используется для тестов.
PRODUCT_VERSION
TESTS_BROWSER
Обновите pipeline следующим образом
test:
- variables:
- name: ALLURE_LAUNCH_NAME
default: ""
- name: ALLURE_LAUNCH_TAGS
default: "bitbucket, junit5"
- name: PRODUCT_VERSION
default: "1.23"
- name: TESTS_BROWSER
default: "chrome"
Теперь команда запуска pipeline будет иметь следующ ий модальный диалог
Пожалуйста, убедитесь, что переменная ALLURE_LAUNCH_NAME
не оставлена пустой. Используйте следующий код в вашем пайплайне, чтобы задать значение переменной, которое затем передаст эту информацию в интерфейс ТестОпс:
- ALLURE_LAUNCH_NAME="${BITBUCKET_REPO_FULL_NAME} - $BITBUCKET_BUILD_NUMBER"
Настройка ТестОпс для обработки переменных среды из Bitbucket
allurectl отправляет весь набор переменных среды из pipeline в ТестОпс. Эти данные также включают добавленные параметры среды.
Настроим проект ТестОпс для обработки этой информации о среде.
- Перейдите в настройки проекта.
- Перейдите в раздел Окружение.
- Для каждой переменной:
- Нажмите Создать.
- Добавьте имя переменной окружения в поле Ключ маппинга.
- Выберите глобальную переменную окружения из списка (эти переменные управляются администраторами ТестОпс).
- Нажмите Отправить.
- Снова запустите задачу сборки через интерфейс Bitbucket. Когда запуск появится в списке запусков в ТестОпс, переменные должны быть отображены.
Запуск pipeline из ТестОпс
Чтобы запустить pipeline на системе CI (это относится к любой системе CI в целом), вам нужно добавить конкретную интеграцию на a) глобальном уровне b) на уровне текущего проекта. Затем эта интеграция будет использоваться в настройках Job.
Этот раздел охватывает
- Обзор интеграции.
- Настройки Job.
Процесс настройки интеграций с внешними системами описан здесь.
Обзор интеграции
- Создайте (получите/сгенерируйте/как угодно) секреты (учетные данные) на внешней системе для использования их API.
- Добавьте необходимую интеграцию на глобальном уровне ТестОпс (вам нужно быть администратором или иметь администратора рядом).
- Добавьте необходимую интеграцию на уровне проекта и предоставьте учетные данные (секреты), которые вы получили на шаге 1.
Глобальный уровень
Вам нужно иметь полномочия ROLE_ADMIN
для настройки экземпляра ТестОпс на глобальном уровне.
- Перейдите в меню пользователя > Администрирование > Интеграции
- В правом верхнем углу нажмите Добавить интеграцию
- Найдите Bitbucket
- Нажмите на баннер Bitbucket
- Укажите имя интеграции
- URL Bitbucket без
http(s)://
может быть хорошей идеей для имени
- URL Bitbucket без
- Укажите URL Bitbucket в поле Endpoint
- это будет
https://bitbucket.org
- это будет
- Завершите, нажав Добавить интеграцию.
На следующей странице вы можете протестировать соединение (хорошая идея!), обновить параметры или даже удалить интеграцию (что странно, учитывая, что вы только что ее добавили).
Уровень проекта
На уровне проекта вам нужно добавить созданную интеграцию в проект, в котором вы работаете, и предоставить учетные данные (секреты) для авторизации ТестОпс для запуска pipeline.
Учетные данные Bitbucket
Для интеграции с Bitbucket нам нужны a) имя пользователя b) Пароль приложения.
Вы можете использовать свою учетную запись или создать новую служебную учетную запись (н а ваше усмотрение).
- Перейдите в настройки учетной записи https://bitbucket.org/account/settings/
- Скопируйте свое имя пользователя (в разделе Настройки профиля Bitbucket)
- Перейдите в настройки паролей приложений https://bitbucket.org/account/settings/app-passwords/
- Нажмите Создать пароль приложения
- Назовите пароль приложения
- Укажите необходимые разрешения
- Чтение учетной записи (необходимо для тестирования соединения)
- Проблемы > Запись (если вы собираетесь связывать проблемы Bitbucket с сущностями ТестОпс)
- Pipeline > Редактировать переменные (для установки значений переменных)
- Репозитории > Чтение (для чтения файла pipeline).
- Создайте пароль приложения
- Скопируйте созданный пароль
Настройка интеграции в вашем проекте ТестОпс
Вам нужно быть владельцем проекта для настройки этих параметров.
- Перейдите в настройки проекта.
- Перейдите в раздел Интеграция
- Найдите интеграцию Bitbucket, которую хотите добавить.
- Нажмите Добавить интеграцию.
- В модальном окне введите учетные данные – имя пользователя и Пароль приложения, который мы сгенерировали на предыдущем шаге.
- Протестируйте соединение
- Завершите настройки интеграции, нажав на Добавить интеграцию.
Теперь мы готовы настроить Job.
Настройки Job в ТестОпс
Job в Тест Опс – это сущность, связанная с CI pipeline. Процесс загрузки результатов тестирования – это job-run. Все параметры job-run управляются ТестОпс и CI плагином (allurectl).
Pipeline имеет параметры (передаваемые как переменные среды), которые могут быть использованы для запуска pipeline со стороны ТестОпс. Для этого вам нужно завершить настройки Job и создать интеграцию, позволяющую запускать jobs в системе CI.
Чтобы иметь возможность запускать связанные pipelines, вам нужно настроить сервер сборки (только что сделано на предыдущем шаге).
Также,
Чтобы начать использовать Job для создания Launches и запуска CI pipelines из интерфейса ТестОпс, вам нужно настроить такой Job:
- Выберите правильный сервер CI, настроенный на уровне проекта с правильными правами доступа в CI.
- Отметьте Job как доступный для запуска тестов на нем.
- Свяжите переменные среды, полученные от job, с глобальными переменными среды.
- Отправьте изменения.
Как вы видите, есть 2 специальные переменные:
- Branch
- CustomName
Branch
слева нужно связать с той же веткой справа (глобальная переменная среды). В середине у вас есть значение ветки по умолчанию для запуска.
CustomName
не требует соответствующей переменной справа, но требует установки значения по умолчанию. Это значение – ваше пользовательское имя pipeline из bitbucket-pipelines.yml
Запуск pipeline
Запуск pipeline (который создаст запуск в ТестОпс) можно выполнить в следующих разделах ТестОпс:
- Список тест-кейсов – выберите и используйте массовую операцию Запустить.
- Список результатов тестирования – выберите и используйте массовую операцию Перезапустить.
- Тест-планы – нажмите кнопку Запустить тест-плана.
- Jobs – нажмите кнопку Запустить тест Job.
Все указанные действия приведут к появлению модального окна с параметрами запуска, который ТестОпс создает для таких действий.
Запуск pipeline на альтернативном окружении
Альтернативное окружение означает, что вы хотите использовать параметры, отличные от тех, которые используются в pipeline по умолчанию.
В диалоговом окне редактирования задания в ТестОпс нажмите Добавить переменную окружения.
Установите необходимые значения для переменных среды, которые нужно изменить, и нажмите Сохранить среду.
Вы можете добавить несколько наборов сред, в этом случае ТестОпс создаст несколько выполнений pipeline с различными наборами параметров, и все они загрузят результаты тестирования в один и тот же запуск.
Пример завершенного пайплайна
Вот пример очень простого файла Bitbucket пайплайна, который дает общее представление о требованиях для работы с ТестОпс:
# bitbucket-pipelines.yml
image: python:3.8
pipelines:
custom:
pytest python tests:
- variables:
- name: ALLURE_LAUNCH_NAME
default: ""
- name: ALLURE_LAUNCH_TAGS
default: "bitbucket, pytest"
- name: ALLURE_RESULTS
default: "allure-results"
- name: TESTS_ENDPOINT
default: "https://demo.testops.cloud"
- name: TESTS_BROWSER
default: "firefox"
- name: ALLURE_PROJECT_ID
default: "830"
- name: ALLURE_ENDPOINT
default: "https://testing.testops.cloud"
- step:
name: pytest tests
script:
- /usr/local/bin/python -m pip install --upgrade pip
- pip install pytest allure-pytest
- ALLURE_LAUNCH_NAME="${BITBUCKET_REPO_FULL_NAME} - $BITBUCKET_BUILD_NUMBER"
- wget https://github.com/allure-framework/allurectl/releases/download/2.15.6/allurectl_linux_amd64 -O ./allurectl
- chmod +x ./allurectl
- ./allurectl watch -- pytest test --alluredir=${ALLURE_RESULTS}
где pytest python tests:
— обязательное имя настраиваемого пайплайна, необходимое для вызова пайплайна через API.
ALLURE_LAUNCH_NAME
, ALLURE_LAUNCH_TAGS
, ALLURE_RESULTS
, ALLURE_PROJECT_ID
и ALLURE_ENDPOINT
— это переменные, необходимые для allurectl, чтобы загрузить результаты тестов в ТестОпс.