CLI for SaveTest: zip Allure results and upload them to SaveTest
Project description
savetest-cli
CLI-утилита для упаковки Allure-результатов в ZIP и загрузки их в SaveTest.
Установка
pip install savetest-cli
Быстрый старт
# 1. Упаковать директорию с результатами в ZIP
savetest zip_report ./AllureReport
# 2. Загрузить в SaveTest и дождаться создания тест-рана
export SAVETEST_HOST=https://savetest.example.com
export SAVETEST_TOKEN=sat_xxxxxxxxxxxxxxxx
export SAVETEST_PROJECT_ID=42
export SAVETEST_BRANCH=main
savetest upload --test-run-name "Smoke $(date +%Y-%m-%d)"
Переменные окружения
Все параметры можно задать через переменные окружения — не нужно указывать флаги при каждом вызове.
| Переменная | Обязательна | Описание |
|---|---|---|
SAVETEST_HOST |
да | URL вашего SaveTest, например https://savetest.example.com |
SAVETEST_TOKEN |
да | API-токен (создаётся в настройках профиля SaveTest) |
SAVETEST_PROJECT_ID |
да | ID проекта в SaveTest |
SAVETEST_BRANCH |
нет | Ветка Git, привязываемая к тест-рану |
SAVETEST_TEST_RUN_ID |
нет | ID существующего тест-рана (если не задан — создаётся новый) |
SAVETEST_TEST_RUN_NAME |
нет | Имя нового тест-рана |
SAVETEST_INCLUDE_ATTACHMENTS |
нет | true — включать вложения в ZIP, false — исключать (быстрее) |
Команды
savetest zip_report <path>
Упаковывает директорию с Allure-результатами в ZIP-архив.
По умолчанию вложения (картинки, видео, *-attachment.json) не включаются — архив получается меньше и грузится быстрее. Флаг --include-attachments включает их.
savetest zip_report [OPTIONS] PATH
| Опция | По умолчанию | Описание |
|---|---|---|
PATH |
— | Путь к директории с Allure-результатами |
--output, -o |
allure-results.zip |
Путь к выходному ZIP-файлу |
--include-attachments |
выключено | Включить вложения (картинки, видео, *-attachment.json) |
Примеры:
savetest zip_report ./AllureReport
savetest zip_report ./AllureReport --output report.zip
savetest zip_report ./AllureReport --include-attachments
savetest upload
Загружает ZIP-файл в SaveTest по частям и ждёт завершения импорта. По завершении выводит ссылку на созданный тест-ран.
savetest upload [OPTIONS]
| Опция | Env-переменная | По умолчанию | Описание |
|---|---|---|---|
--host |
SAVETEST_HOST |
— | URL SaveTest (обязательно) |
--token, -t |
SAVETEST_TOKEN |
— | API-токен (обязательно) |
--project-id, -p |
SAVETEST_PROJECT_ID |
— | ID проекта (обязательно) |
--zip-file, -z |
— | allure-results.zip |
Путь к ZIP-файлу |
--branch, -b |
SAVETEST_BRANCH |
— | Ветка Git |
--test-run-name |
SAVETEST_TEST_RUN_NAME |
— | Имя нового тест-рана |
--test-run-id |
SAVETEST_TEST_RUN_ID |
— | ID существующего тест-рана |
--include-attachments |
SAVETEST_INCLUDE_ATTACHMENTS |
выключено | Сообщить серверу, что ZIP содержит вложения |
--chunk-size |
— | 50 |
Размер чанка при загрузке (МБ) |
--wait / --no-wait |
— | --wait |
Ждать завершения импорта |
--timeout |
— | 3600 |
Таймаут ожидания (сек) |
--poll-interval |
— | 1.5 |
Интервал опроса статуса (сек) |
--host, --token и --project-id обязательны. Передавайте их через флаги или переменные окружения.
Примеры:
# Через переменные окружения (рекомендуется)
export SAVETEST_HOST=https://savetest.example.com
export SAVETEST_TOKEN=sat_xxxxxxxxxxxxxxxx
export SAVETEST_PROJECT_ID=42
savetest upload --branch main --test-run-name "Regression $(date +%Y-%m-%d)"
# Загрузить в существующий тест-ран
savetest upload --branch main --test-run-id 17
# Загрузить другой ZIP с вложениями, не ждать импорта
savetest upload --zip-file full-report.zip --include-attachments --no-wait
Настройка в Jenkins
Добавьте токен в Jenkins → Manage Jenkins → Credentials (тип: Secret text, ID: savetest-token).
В Jenkinsfile используйте withCredentials и parameters, чтобы не хранить конфигурацию в коде:
pipeline {
agent any
parameters {
string(name: 'SAVETEST_HOST', defaultValue: '', description: 'URL SaveTest')
string(name: 'SAVETEST_PROJECT_ID', defaultValue: '', description: 'ID проекта в SaveTest')
string(name: 'SAVETEST_BRANCH', defaultValue: '', description: 'Ветка Git')
string(name: 'SAVETEST_TEST_RUN_ID',defaultValue: '', description: 'ID тест-рана (пусто = создать новый)')
booleanParam(name: 'INCLUDE_ATTACHMENTS', defaultValue: false, description: 'Включать вложения в ZIP')
}
stages {
// ... ваши стадии запуска тестов ...
stage('Upload to SaveTest') {
steps {
withCredentials([string(credentialsId: 'savetest-token', variable: 'SAVETEST_TOKEN')]) {
sh '''
pip install savetest-cli
savetest zip_report "${WORKSPACE}/AllureReport" \
$([ "${INCLUDE_ATTACHMENTS}" = "true" ] && echo "--include-attachments")
savetest upload \
--host "${SAVETEST_HOST}" \
--project-id "${SAVETEST_PROJECT_ID}" \
--branch "${SAVETEST_BRANCH}" \
--test-run-name "Jenkins ${JOB_NAME} #${BUILD_NUMBER}" \
$( [ -n "${SAVETEST_TEST_RUN_ID}" ] && echo "--test-run-id ${SAVETEST_TEST_RUN_ID}" ) \
$( [ "${INCLUDE_ATTACHMENTS}" = "true" ] && echo "--include-attachments" )
'''
}
}
}
}
}
SAVETEST_TOKENберётся из Jenkins Credentials и передаётся в окружение черезwithCredentials— в лог и в код сборки он не попадает.
Получение API-токена
- Войдите в SaveTest.
- Откройте Настройки профиля → API-токены.
- Создайте новый токен и скопируйте его значение.
- Добавьте токен в Jenkins Credentials (или экспортируйте локально через
export SAVETEST_TOKEN=...).
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file savetest_cli-0.1.2.tar.gz.
File metadata
- Download URL: savetest_cli-0.1.2.tar.gz
- Upload date:
- Size: 18.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c6b398a3e335f93caf24d81f57177aa8a8f99a0e0f9613e5b817b1f38bbc2471
|
|
| MD5 |
7136387d159380fbe83274ab6bc83429
|
|
| BLAKE2b-256 |
b8a0cf2862b443b21ea2e46e3cc908609b6d9367f4f369fcc0eb26e90dd49cde
|
File details
Details for the file savetest_cli-0.1.2-py3-none-any.whl.
File metadata
- Download URL: savetest_cli-0.1.2-py3-none-any.whl
- Upload date:
- Size: 16.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8c6d78bc01a4444fc25d7b7d73de695b2b57b5a568cdc6da0cffbbd5c55d6518
|
|
| MD5 |
17cdc98f826e384cab2e10547380f33f
|
|
| BLAKE2b-256 |
5fb5965fe4ccbe5e46e1add0b975f73e3b21e69621834c576b09a62b25782baa
|