Командная строка — allurectl
Что такое allurectl
Allurectl - это обертка командной строки для API ТестОпс, позволяющая загружать результаты тестов в реальном времени из сборочного задания и управлять сущностями на стороне ТестОпс (тест-кейсы, запуски, проекты).
Загрузка allurectl
Поддерживаемые платформы
- MacOS на Intel x64
**_darwin_amd64
- MacOS на M1 (arm64)
**_darwin_arm64
- 32-битный Linux
**_linux_386
- 64-битный Linux
**_linux_amd64
- 64-битный arm Linux
**_linux_arm64
- 32-битный Windows
**_windows_386.exe
- 64-битный Windows
**_windows_amd64.exe
- 64-битный arm Windows
**_windows_arm64.exe
Вам нужно выбрать бинарный файл, подходящий для вашей ОС и архитектуры процессора, из доступных опций.
В примере ниже мы загружаем приложение для Linux на x64 CPU:
wget https://github.com/allure-framework/allurectl/releases/latest/download/allurectl_linux_amd64 -O ./allurectl
chmod +x ./allurectl
Режимы работы allurectl
Существует два режима:
- Non-CI режим
- CI режим
Non-CI режим
После запуска allurectl, он проверяет, определены ли специфические переменные CI, и если они отсутствуют, загрузка данных считается локальной загрузкой (с ПК). В этом режиме вы не можете использовать/манипулировать параметрами, связанными с выполнением заданий.
Передача параметров в allurectl
Существует 2 способа передачи параметров в allurectl:
- Использование параметров командной строки.
- Этот вариант хорош, когда вам нужна одноразовая загрузка для некоторых ваших тестов.
- Использование переменных окружения.
- Этот вариант лучше, когда вы регулярно загружаете свои данные, так как он позволяет сохранять и повторно использовать важные параметры, чтобы вам не нужно было использовать их в командной строке каждый раз.
Загрузка с использованием параметров командной строки
allurectl upload --endpoint https://allure.company.com \
--token 55555555-5555-5555-5555-555555555555 \
--project-id 100 \
--launch-name "Local PC manual launch 2200-12-31" \
path/to/allure-results
Загрузка с использованием переменных окружения
# Define environment variables
export ALLURE_ENDPOINT=https://allure.company.com
export ALLURE_TOKEN=55555555-5555-5555-5555-555555555555
export ALLURE_PROJECT_ID=100
export ALLURE_LAUNCH_NAME="Local PC manual launch 2200-12-31"
export ALLURE_LAUNCH_TAGS="release, critical"
# Run upload process somewhere
allurectl upload path/to/allure-results
Что произойдет
Теперь, что произойдет, если вы использовали один из вышеуказанных вариантов:
- На стороне ТестОпс будет создан новый запуск с именем
Local PC manual launch 2200-12-31
- Будет создана новая сессия для загрузки результатов тестов
- Результаты тестов из папки
path/to/allure-results
будут отправлены в запуск ТестОпсLocal PC manual launch 2200-12-31
в рамках созданной сессии. - Сессия будет закрыта.
- Запуск останется открытым до тех пор, пока не будет закрыт вручную или автоматически на основе правила автоматического закрытия, определенного для проекта
100
.
CI режим
Каждая система CI имеет свой набор переменных окружения, идентифицирующих ее. Если allurectl
обнаруживает такие переменные, то запуск считается запуском из системы CI.
Для загрузки CI будет включена следующая дополнительная специфическая информация CI и доступна в ТестОпс, связанная с коммуникациями между allurectl
и ТестОпс.
allurectl
также использует некоторые внутренние переменные для отправки информации в правильный запуск на стороне ТестОпс.
Токен API ТестОпс
Прежде чем вы сможете использовать allurectl
, вам нужно сгенерировать секретный токен ТестОпс в вашем профиле, чтобы allurectl
мог аутентифицироваться на стороне ТестОпс.
Процесс получения токена API описан в документации ТестОпс.
Рабочий процесс allurectl watch
В общем, allurectl watch делает то же самое, что и allurectl upload, с одним важным отличием - команда watch позволяет отправлять результаты тестов в реальном времени, т.е. вам не нужно ждать, пока все тесты завершатся, что уменьшит нагрузку и ускорит обработку результатов тестов на стороне ТестОпс.
allurectl watch является оберткой для выполнения ваших тестов, т.е. вам нужно предоставить команду, которую вы используете для выполнения ваших тестов, в allurectl watch.
Использование
Как обычно, вам нужно предоставить параметры, необходимые для подключения к серверу ТестОпс (в примере ниже это переменные окружения, и мы настоятельно рекомендуем использовать переменные окружения для передачи этих параметров в allurectl), затем вы указываете allurectl, где вы ожидаете появления результатов тестов, и затем предоставляете команду для запуска выполнения тестов.
export ALLURE_ENDPOINT=https://allure.company.com
export ALLURE_TOKEN=55555555-5555-5555-5555-555555555555
export ALLURE_PROJECT_ID=100
export ALLURE_LAUNCH_NAME="Hello, world" # you can use here the environment variables of your job/pipeline
export ALLURE_LAUNCH_TAGS="release, critical"
allurectl watch --results path/to/allure-results -- ./gradlew clean test
в качестве альтернативы, вы можете предоставить все стартовые параметры в переменных окружения, чтобы watch выглядел красив ее и лаконичнее:
export ALLURE_ENDPOINT=https://allure.company.com
export ALLURE_TOKEN=542dcd56-b0e2-4fdd-8ecf-bacf0f33d505
export ALLURE_PROJECT_ID=12
export ALLURE_LAUNCH_NAME="Hello, world"
export ALLURE_RESULTS=path/to/allure-results
export ALLURE_LAUNCH_TAGS="release, critical"
allurectl watch -- ./gradlew clean test
Рабочий процесс allurectl upload
Применимость
Используйте allurectl с командой upload после выполнения всех ваших тестов. Мы не рекомендуем использовать allurectl upload как фоновый процесс.
Мы рекомендуем использовать allurectl watch для отправки данных из CI. Используйте upload только в случае, если watch вам не подходит.
Настройки
Следующие переменные окружения могут быть установлены для упрощения использования allurectl
, это альтернатива установке тех же параметров в командной строке. Использование переменных делает выполнение allurectl
более понятным и уменьшает вероятность ошибки человека.
Переменная окружения | Комментарий |
---|---|
ALLURE_ENDPOINT | URL сервера ТестОпс |
ALLURE_PROJECT_ID | ID проекта в ТестОпс, это первый столбец главного экрана ТестОпс |
ALLURE_TOKEN | персональный токен доступа пользователя, сгенерированный в профиле пользователя в разделе API Tokens! |
ALLURE_LAUNCH_NAME | Имя запуска, которое будет отображаться в интерфейсе ТестОпс |
ALLURE_LAUNCH_TAGS | Список тегов, разделенных запятыми, которые будут отображаться в интерфейсе ТестОпс |
Пожалуйста, обратитесь к деталям настроек CI для настройки переменных окружения allurectl
.
Повторный запуск тестов и выборочный запуск с allurectl
Самое важное в повторном запуске тестов и выборочном запуске - это план тестов. В данном случае, когда мы говорим о выборочном запуске и повторном запуске (повторный запуск на самом деле является особым случаем выборочного запуска), план тестов - это файл (конкретно, это testplan.json) со списком тест-кейсов, которые ваша тестовая система должна выполнить.
Теперь давайте обсудим, как работает эта интеграция.
Интеграция выборочного запуска тестов
Начиная с выпуска allurectl 2.10.x, инструмент и ТестОпс полностью контролируют процесс выборочного запуска тестов (пожалуйста, обратите внимание на часть Allure Framework), и не требуется определять ALLURE_TESTPLAN_PATH и выполнять команду job-run plan
в вашем конвейере. Вы все еще можете использовать инструкции, описанные ниже. Однако мы рекомендуем оставить весь этот процесс на усмотрение ТестОпс и allurectl.
- На стороне ТестОпс мы создаем список тест-кейсов, которые нам нужно (повторно) запустить на стороне CI. Каждый тест-кейс идентифицируется AllureID и селектором. Селектор - это способ, которым тестовая система идентифицирует определенный тест, обычно это зависит от тестовой системы.
- Список тест-кейсов затем сохраняется в CI в файл testplan.json.
- На стороне CI мы создаем переменную окружения ALLURE_TESTPLAN_PATH и устанавливаем значение в путь к файлу
testplan.json
. - Когда адаптер Allure Framework обнаруживает, что ALLURE_TESTPLAN_PATH доступен, он пытается прочитать
testplan.json
. - Если файл testplan.json успешно прочитан, интеграция инструктирует тестовую систему выполнять только тесты, указанные в testplan.json.
Если CI запускает все тесты из вашего проекта, значит, что-то не настроено на вашей стороне или ваша тестовая система не имеет интеграции с ТестОпс. Если вы столкнулись с этим, пожалуйста, подайте запрос на поддержку (не баг) в нашу техническую поддержку.
Структура testplan.json
Файл testplan.json
выглядит следующим образом.
Зная эту структуру, вы можете создать testplan.json
на своем локальном ПК, инициализировать переменную окружения ALLURE_TESTPLAN_PATH
с путем к testplan.json
и запустить свои тесты локально без каких-либо дополнительных фильтров в той же сессии, если только тесты из testplan.json
будут выполнены, тогда у вас есть рабочая интеграция для выборочного запуска, в противном случае вам нужно настроить интеграцию или разработать ее для вашей тестовой системы.
{
"version": "1.0",
"tests": [
{
"id": "10",
"selector": "io.qameta.allure.examples.junit4.AllureSimpleTest.allureSimpleTest"
},
{
"id": "11",
"selector": "io.qameta.allure.examples.junit4.AllureParameterizedTest.allureParameterizedTest[First Name]"
}
]
}
где
-
id - это ID теста (Allure ID) из ТестОпс
-
selector - это альтернативный ID, который по умолчанию равен полному пути теста.
- мы планируем расширить информацию, предоставляемую в селекторе
Сохранение плана тестов в CI, запуск тестов и загрузка результатов тестов
Во всех CI у нас одна и та же последовательность:
- ТестОпс запускает задание и добавляет ALLURE_JOB_RUN_ID =
<id>
в задание.- если
allurectl
обнаруживает ALLURE_JOB_RUN_ID, то он игнорирует все другие переменные, и сессия создается в наборе выполнения задания, установленном ТестОпс.
- если
- ТестОпс предоставляет переменную окружения ALLURE_TESTPLAN_PATH: с путем к
testplan.json
в выполнение задания. allurectl
создаетtestplan.json
и заполняет его информацией о списке тестов.allurectl
выполняет ваши тесты и создает индексный список файлов с результатами тестов и отправляет файлы с результатами тестов в ТестОпс с помощью команды watchallurectl watch -- ./gradlew clean test
Вся работа с ALLURE_TESTPLAN_PATH
и testplan.json
полностью управляется allurectl
. Пользовательское вмешательство и настройки не требуются с выпуска allurectl
2.10.0
Запуск вложенных заданий
Бывает, что вам нужно запустить несколько заданий на CI и отправить все результаты тестов из нескольких заданий в один агрегированный запуск на стороне ТестОпс.
Переменная окружения ALLURE_JOB_RUN_ID придет на помощь!
Если allurectl обнаруживает, что ALLURE_JOB_RUN_ID доступен, то он не создает новые сущности, а использует ту, что из ALLURE_JOB_RUN_ID. Таким же образом работает выполнение тестов на стороне ТестОпс.
Рабочий процесс
- Создайте агрегирующее задание на стороне CI
- Создайте новое выполнение задания в агрегирующем задании и сохраните содержимое созданного ALLURE_JOB_RUN_ID
- Создайте вложенное/дочернее задание, передайте переменную окружения ALLURE_JOB_RUN_ID и ее содержимое во вложенное/дочернее задание.
- все результаты тестов из заданий с одинаковым ALLURE_JOB_RUN_ID будут переданы в один и тот же запуск в ТестОпс.
allurectl
останавливает выполнение задания (дополнительная команда не требуется).
Кулинарная книга allurectl
Для каждой команды полный список поддерживаемых опций доступен с помощью переключателя командной строки --help
.
Например: allurectl watch --help
.
Если у вас есть сомнения, пожалуйста, свяжитесь с поддержкой.
Передача параметров в allurectl
Переменные окружения
Следующие переменные окружения необходимо установить для упрощения использования allurectl
Переменная окружения | Комментарий |
---|---|
ALLURE_ENDPOINT | URL сервера ТестОпс |
ALLURE_PROJECT_ID | ID проекта в ТестОпс, это первый столбец главного экрана ТестОпс |
ALLURE_TOKEN | персональный токен доступа пользователя, сгенерированный в профиле пользователя в разделе API Tokens! |
ALLURE_LAUNCH_NAME | Имя запуска, которое будет отображаться в интерфейсе ТестОпс |
Тестирование подключения
Это нужно использовать только для проверки подключения. Не используйте эту команду в своих конвейерах для аутентификации процесса загрузки результатов тестов. Аутентификация для загрузки результатов тестов выполняется иначе (см. ниже).
Это можно сделать с вашего локального компьютера или в конвейере CI (см. замечание выше).
Чтобы проверить подключение к экземпляру ТестОпс, вы можете использовать следующую команду:
export ALLURE_TOKEN=<API-TOKEN>
export ALLURE_ENDPOINT=https://demo.testops.cloud
allurectl auth login
В качестве альтернативы, вы можете использовать переключатели командной строки, но мы рекомендуем использовать переменные окружения.
Для получения дополнительной информации используйте команду allurectl auth login --help
.
Загрузка результатов тестов в ТестОпс
Существует 2 варианта.
- использование рутины
watch
- использование рутины
upload
watch
watch
- это основной рекомендуемый рабочий процесс для загрузки результатов тестов.
В общем, allurectl watch делает то же самое, что и allurectl upload, с одним важным отличием - команда watch позволяет отправлять рез ультаты тестов в реальном времени, т.е. вам не нужно ждать, пока все тесты завершатся, что уменьшит нагрузку и ускорит обработку результатов тестов на стороне ТестОпс.
allurectl watch является оберткой для выполнения ваших тестов, т.е. вам нужно предоставить команду, которую вы используете для выполнения ваших тестов, в allurectl watch.
Использование
Как обычно, вам нужно предоставить параметры, необходимые для подключения к серверу ТестОпс (в примере ниже это переменные окружения, и мы настоятельно рекомендуем использовать переменные окружения для передачи этих параметров в allurectl), затем вы указываете allurectl, где вы ожидаете появления результатов тестов, и затем предоставляете команду для запуска выполнения тестов.
export ALLURE_ENDPOINT=https://allure.company.com
export ALLURE_TOKEN=55555555-5555-5555-5555-555555555555
export ALLURE_PROJECT_ID=100
export ALLURE_LAUNCH_NAME="Hello, world" # you can use here the environment variables of your job/pipeline
...
allurectl watch --results path/to/allure-results -- ./gradlew clean test
в качестве альтернативы, вы можете предоставить все стартовые параметры в переменных окружения, чтобы watch выглядел красивее и лаконичнее:
export ALLURE_ENDPOINT=https://allure.company.com
export ALLURE_TOKEN=542dcd56-b0e2-4fdd-8ecf-bacf0f33d505
export ALLURE_PROJECT_ID=12
export ALLURE_LAUNCH_NAME="Hello, world"
export ALLURE_RESULTS=path/to/allure-results
...
allurectl watch -- ./gradlew clean test