23 июля, Вебинар от ТестОпс🔥  Узнать больше →
Skip to content

Удаление запуска

Важно

Удаленный запуск нельзя восстановить.

Удаление запуска — самый быстрый и надежный способ очистки исторических данных в базе данных. При удалении запуска выполняется каскадное удаление всех связанных с ним данных: результатов тестов, тестовых сценариев, вложений фикстур и прочих связанных записей.

Удаление отдельных запусков

Чтобы удалить отдельный запуск:

  1. Перейдите в раздел Запуски.
  2. Справа от нужного запуска нажмите УдалитьУдалить.

Массовое удаление запусков

Массовое удаление запусков в ТестОпс доступно с помощью утилиты allure-testops-utils и SQL-скрипта для удаления по расписанию.

Важно

После массового удаления запусков необходимо запускать процедуру VACUUM, чтобы очистить таблицы базы данных от неактуальных строк (dead tuples) и использовать освободившееся пространство. В первую очередь это относится к наиболее нагруженным таблицам test_result и test_result_custom_field, однако рекомендуется выполнять процедуру для всех таблиц.

Подробнее см. официальную документацию PostgreSQL.

Утилита allure-testops-utils

Утилита allure-testops-utils выполняется в Docker-контейнере и удаляет запуски по заданным критериям: дате создания, тегам и проекту. Для каждого подходящего запуска она вызывает тот же API ТестОпс, что и кнопка удаления в пользовательском интерфейсе, то есть массово повторяет ручную операцию удаления.

Для аутентификации утилита использует имя пользователя и пароль учетной записи в ТестОпс. Вход через SSO не поддерживается.

Пример запуска утилиты allure-testops-utils
shell
docker run \
  -e "ALLURE_ENDPOINT=<URL-адрес вашего инстанса ТестОпс>" \
  -e "ALLURE_USERNAME=<имя пользователя>" \
  -e "ALLURE_PASSWORD=<пароль>" \
  -e "PROJECT_ID=<ID проекта>" \
  -e "LAUNCH_FILTER=tag = \"delete\"" \
  -e "LAUNCH_CREATEDBEFORE=30d 0h 0m" \
  ghcr.io/eroshenkoam/allure-testops-utils clean-launches

где:

  • ALLURE_ENDPOINT — URL-адрес вашего инстанса ТестОпс;
  • ALLURE_USERNAME и ALLURE_PASSWORD — имя пользователя и пароль вашей учетной записи в ТестОпс;
  • PROJECT_ID — ID проекта;
  • LAUNCH_FILTER — условие фильтрации запусков. В примере выше будут удалены только запуски с тегом delete. Чтобы оставить фильтрацию только по времени, укажите значение "true";
  • LAUNCH_CREATEDBEFORE — время с момента создания запуска, после которого он подлежит удалению. В примере выше — 30 дней.

SQL-скрипт для удаления по расписанию

Альтернативный способ для массового удаления большого количества запусков — SQL-скрипт, который напрямую обращается к базе данных. В этом скрипте можно указать сроки хранения запусков для каждого проекта и настроить удаление запусков по расписанию (например, через cronПланировщик заданий в Unix-подобных системах, который запускает команды и скрипты по расписанию).

Пример SQL-скрипта для удаления запусков
sql
DO
$do$
DECLARE
    batch_size integer := 10;
    cnt integer := 0;
    launches_left bigint := 0;
BEGIN
    DROP TABLE IF EXISTS launches_to_process;

    CREATE TEMP TABLE launches_to_process AS
    SELECT l.id AS id
    FROM public.launch l
    WHERE
        -- Срок хранения по умолчанию — 3 месяца
        (l.project_id NOT IN (11, 19, 21)
            AND l.created_date < round(extract(epoch FROM (now() - INTERVAL '3 months')
                AT TIME ZONE 'utc') * 1000))
        OR
        -- Проект 11: срок хранения — 6 месяцев
        (l.project_id = 11
            AND l.created_date < round(extract(epoch FROM (now() - INTERVAL '6 months')
                AT TIME ZONE 'utc') * 1000))
        OR
        -- Проект 19: срок хранения — 1 месяц
        (l.project_id = 19
            AND l.created_date < round(extract(epoch FROM (now() - INTERVAL '1 month')
                AT TIME ZONE 'utc') * 1000))
        OR
        -- Проект 21: срок хранения — 1 месяц
        (l.project_id = 21
            AND l.created_date < round(extract(epoch FROM (now() - INTERVAL '1 month')
                AT TIME ZONE 'utc') * 1000))
    ORDER BY id ASC;

    LOOP
        launches_left := (SELECT count(1) FROM launches_to_process);
        EXIT WHEN (launches_left < 1);

        cnt := cnt + batch_size;
        RAISE NOTICE 'Удаление старых запусков... (%)', cnt;

        CREATE TEMP TABLE launches_to_process_batch AS
        SELECT id
        FROM launches_to_process
        ORDER BY id ASC
        LIMIT batch_size;

        DELETE FROM launch
        WHERE launch.id IN (SELECT id FROM launches_to_process_batch);

        DELETE FROM launches_to_process
        WHERE launches_to_process.id IN (SELECT id FROM launches_to_process_batch);

        DROP TABLE launches_to_process_batch;
        COMMIT;

        PERFORM pg_sleep(7);
    END LOOP;

    DROP TABLE launches_to_process;
END
$do$;

В секции WHERE задаются правила хранения для каждого проекта. В приведенном примере:

  • для всех проектов, кроме 11, 19 и 21, — удаление запусков старше 3 месяцев;
  • для проекта 11 — удаление запусков старше 6 месяцев;
  • для проектов 19 и 21 — удаление запусков старше 1 месяца.

Рекомендуется увеличить значение параметра batch_size до 100 для ускорения обработки.

Logo © 2026 Все права защищены. Сайт принадлежит компании ООО «Инструменты тестирования»