Skip to main content

CLI for SaveTest: zip Allure results and upload them to SaveTest

Project description

SaveTest

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-токена

  1. Войдите в SaveTest.
  2. Откройте Настройки профиля → API-токены.
  3. Создайте новый токен и скопируйте его значение.
  4. Добавьте токен в 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

savetest_cli-0.1.2.tar.gz (18.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

savetest_cli-0.1.2-py3-none-any.whl (16.6 kB view details)

Uploaded Python 3

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

Hashes for savetest_cli-0.1.2.tar.gz
Algorithm Hash digest
SHA256 c6b398a3e335f93caf24d81f57177aa8a8f99a0e0f9613e5b817b1f38bbc2471
MD5 7136387d159380fbe83274ab6bc83429
BLAKE2b-256 b8a0cf2862b443b21ea2e46e3cc908609b6d9367f4f369fcc0eb26e90dd49cde

See more details on using hashes here.

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

Hashes for savetest_cli-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 8c6d78bc01a4444fc25d7b7d73de695b2b57b5a568cdc6da0cffbbd5c55d6518
MD5 17cdc98f826e384cab2e10547380f33f
BLAKE2b-256 5fb5965fe4ccbe5e46e1add0b975f73e3b21e69621834c576b09a62b25782baa

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page