Обновление Test IT в Docker Compose
Создайте резервную копию
Во избежание критичной потери данных перед обновлением необходимо создать резервную копию Test IT Про.
Скрипт для резервного копирования расположен в папке scripts с дистрибутивом Test IT.
Смотрите также: Резервное копирование в Docker Compose
Соблюдайте последовательность обновления
Обновляйте систему в соответствии с порядком версий
Мы рекомендуем обновлять систему последовательно — по порядку старших (мажорных) версий продукта. Например, чтобы обновить продукт с версии 5.1 до 5.3, рекомендуется:
- Обновить продукт до Test IT 5.2
- Обновить продукт до версии 5.3
Непоследовательное обновление и игнорирование промежуточных мажорных версий может привести к ошибкам.
Контролируйте дренаж очередей
В процессе работы системы в очередях RabbitMQ могут накапливаться фоновые задачи (отправка уведомлений, асинхронная обработка данных). При резком перезапуске сервисов с новой версией сообщения, не успевшие обработаться, могут быть отклонены новым форматом данных. Рекомендуется:
- Не останавливать сервисы немедленно и дождаться, пока потребители (consumers) обработают накопленные сообщения.
Возможно использование дополнительной памяти (до 10 ГБ)
Начиная с версии 5.7 ClickHouse может дополнительно использовать до 10 ГБ памяти для хранения аналитических данных.
Test IT Про можно обновить в режиме онлайн или автономно. Если вы используйте версии до 4.6. включительно, следуйте соответствующим инструкциям на этой странице.
Подготовка к обновлению до версии 5.8
Перед обновлением Test IT до версии 5.8 необходимо обновить компонент PostgreSQL c текущей версии до версии 17 по этой инструкции.
- Выполните резервное копирование.
- Скачайте и распакуйте дистрибутив версии 5.8.0.
- Остановите контейнеры текущей версии, применив команду:
docker compose -f docker-compose.yml -p testit down - Убедитесь, что запущенных контейнеров нет, применив команду:
docker ps - Откройте папку, с Test IT 5.8.
- Если вы выполняли полное резервное копирование, отключите функцию резервного копирования в файле
docker-compose. upgrade-pg14-to-pg17.yml, для этого удалите из него строку 6:Пояснение:./backup:/backup/pg14docker-compose.upgrade-pg14-to-pg17.yml— это файл, предназначенный для миграции базы данных с PostgreSQL 14 на PostgreSQL 17. - Запустите миграцию PostgreSQL:
docker compose -f docker-compose.upgrade-pg14-to-pg17.yml -p testit up - Контролируйте вывод данных в консоли. Убедитесь, что в логе отсутствуют ошибки. При успешном завершении миграции отобразится сообщение:Можно переходить к обновлению Test IT.
Готово: PostgreSQL 14 -> 17 в /var/lib/postgresql/data
Обновление онлайн
- Создайте новую директорию, скачайте и распакуйте в ней файл для установки онлайн. Актуальная версия установочного файла доступна на странице загрузок.
- Сравните содержимое файлов
.envиdocker-compose.ymlи перенесите пользовательские значения переменных в соответствующие файлы новой версии. - В командной строке перейдите в директорию с новой версией и выполните следующую команду:
docker compose -f docker-compose.yml --project-name testit up -d --remove-orphans
Автономное обновление
- Создайте новую директорию, скачайте и распакуйте в ней файл для автономной установки. Актуальная версия установочного файла доступна на странице загрузок.
- Сравните содержимое файлов
.envиdocker-compose.ymlи перенесите пользовательские значения переменных в соответствующие файлы новой версии. - В командной строке перейдите в директорию с новой версией, распакуйте архив для автономной установки и выполните следующую команду:
Для обновления до версии 5.2 и более поздних версий:
mkdir images tar -zxvf images.tar.gz -C images for file in $(ls images/*.tar); do docker image load -i $file; done docker compose -f docker-compose.yml --project-name testit up -d --remove-orphansДля обновления до версии 5.1 и предыдущих версий:
docker load -i images.tar.gz docker compose -f docker-compose.yml --project-name testit up -d --remove-orphans
Внимание!
Перед обновлением Test IT до версии 4.3 и выше убедитесь, что дата и время в установках сервера синхронизированы с датой и временем в установках внешней базы данных! Несовпадение даты и времени может привести к нарушениям работы лицензии.
Назовите свой проект
В качестве примера в этой инструкции используется проект с именем testit. Вы можете использовать другое название.
Если в файлах .env и .yml используются пользовательские значения переменных, перенесите их в файлы .env и .yml новой версии Test IT. Все значения в файлах .env и .yml новых версий Test IT заменяются на значения по умолчанию при обновлении.
Миграция данных автотестов при обновлении до версии 5.4
Развернуть/свернуть инструкцию
Миграция данных автотестов может занимать до 8 часов в зависимости от их объема. Это связано с необходимостью группировки результатов тестов в прогонах с учетом конфигурации и параметров автотестов, их нумерации и последующего распределения данных по биатлонам. Во время миграции работа в системе недоступна. Основные рекомендации:
- Отслеживайте миграцию с помощью логов контейнера
webapi. Минимальный уровень: Information.- Началом миграции служит запись вида:
Applying migration '20250313093240_TMS-31090_MigrateTestResultsToTestBiathlons'. - При успешном окончании миграции отображается запись вида:
INSERT INTO "__EFMigrationsHistory" ("MigrationId", "ProductVersion") VALUES ('20250313093240_TMS-31090_MigrateTestResultsToTestBiathlons', '9.0.5'); - После превышения тайм-аута подключения к базе данных отобразится запись вида:
Database migration timed out. Operation will be retried. Retry number: 1.После превышения тайм-аута миграция будет перезапущена автоматически. Данные, перенесенные в предыдущих попытках, затронуты не будут.
- Началом миграции служит запись вида:
- Для сокращения перезапусков на время миграции перед запуском обновления установите переменную окружения
DATABASE_TIMEOUT_SEC=3600для сервисаwebapiв файлеdocker-compose.yml.По окончании миграций в логах отобразится сообщение:Пример указания тайм-аута
Значение тайм-аута для работы в штатном режиме:
services: webapi: **** environment: *** DATABASE_TIMEOUT_SEC: "${DATABASE_TIMEOUT_SEC:-600}"Значение тайм-аута для миграции:
services: webapi: **** environment: *** DATABASE_TIMEOUT_SEC: "3600"
Application started. - По окончании миграции рекомендуется вернуть изначальное значение тайм-аута и перезапустить проект для снижения риска зависания соединений при штатной работе приложения.
- При ошибке и прекращения работы контейнеров обновите систему повторно.
- При возникновении проблем, связанных с миграцией, обратитесь в техническую поддержку: support@testit.software.
Несовместимость CPU V1 с версией MiniO в Test IT 5.1 и выше
В связи с обновлением версии MiniO до RELEASE.2025-09-07T16-13-09Z в Test IT 5.1 и более поздних версиях при использовании старой версии CPU (V1) могут возникать ошибки вида Fatal glibc error: CPU does not support x86-64-v2.
Для решения проблемы:
- При обновлении онлайн добавьте к версии образа постфикс
-cpuv1. В результате должно получиться:minio/minio:RELEASE.2025-09-07T16-13-09Z-cpuv1. - При автономном обновлении перенесите образ в оффлайн-среду самостоятельно.
- В качестве альтернативного решения для онлайн- или автономного обновления можно использовать вариант внешнего сервиса MiniO или аналогичного сервиса S3.
Переход на Alpine в версии 4.6
Развернуть/свернуть инструкцию
Важно
Начиная с версии 4.6.0 в базовых образах сервисов Test IT, а также образах PostgreSQL, InfluxDB, Redis используется версия Alpine. Данное изменение уменьшает фактический размер образов и существенно снижает количество потенциальных уязвимостей контейнеров.
Пользователям PostgreSQL
Если вы используете сервер PostgreSQL из состава поставки Test IT, в процессе обновления для корректной работы сервисов необходимо переиндексировать базы данных в связи с переходом сервера на Alpine.
Действия, описанные ниже, необходимо выполнить непосредственно перед запуском новой версии Test IT, т.е. после сверки файлов .env и docker-compose.yml для онлайн-обновления или после команды docker image load для автономного обновления.
- Перейдите в директорию с установочными файлами версии 4.6.0 и остановите контейнеры продукта. Используйте команду:
docker compose -f docker-compose.yml -p testit stop - Запустите контейнер
db(в новой версии образ меняется наalpine):docker compose -f docker-compose.yml -p testit up -d db - Передайте в контейнер команды для реиндексации:
docker exec -it testit-db-1 psql -U postgres -d licensedb -c "reindex database licensedb;" docker exec -it testit-db-1 psql -U postgres -d authdb -c "reindex database authdb;" docker exec -it testit-db-1 psql -U postgres -d avatarsdb -c "reindex database avatarsdb;" docker exec -it testit-db-1 psql -U postgres -d testitdb -c "reindex database testitdb;" docker exec -it testit-db-1 psql -U postgres -d globalsearchdb -c "reindex database globalsearchdb;" docker exec -it testit-db-1 psql -U postgres -d backgrounddb -c "reindex database backgrounddb;" - После успешной реиндексации баз запустите остальные компоненты Test IT версии 4.6.0:
docker compose -f docker-compose.yml -p testit up -d --remove-orphans
Подготовка к обновлению до версии 4.5
Развернуть/свернуть инструкцию
Перед началом работы
- Создайте резервную копию установленной системы (рекомендуется). Чтобы перенести информацию из вольюмов со старой версии на новую, имена проектов в обеих версиях должны совпадать. В наших примерах проект называется
testit(вы можете использовать другое название). - Убедитесь, что на компьютере с установленным продуктом достаточно места для создания файла дампа БД Postgres.
- Если вы используете внешнее объектное хранилище MiniO, не включайте в запуск миграции контейнер
mc-minio. - Если вы используете внешние СУБД Postgres, пропустите соответствующие разделы настоящей инструкции.
Объединение контейнеров MiniO и Postgres
Мигрируйте бакеты MiniO
Начиная с версии 4.5 бакет avatars перемещается в контейнер minio. Поэтому перед обновлением необходимо выполнить миграцию бакетов MiniO и их метаданных.
- Из архива поставки Test IT версии 4.5 скопируйте следующие файлы из папки
scriptsв папку с установочными файлами, с помощью которых была развернута текущая версия Test IT. Файлы должны находиться в той же директории, что и файлdocker-compose.yml:docker-compose.unite-postgres-minio.ymldb-unite.shminio-unite.shpostgres-init.sql(расположен в корневой папке поставки)
- Перейдите в директорию с установочными файлами, с помощью которых была развернута текущая версия Test IT и остановите контейнеры продукта. Используйте команду:
docker compose -f docker-compose.yml -p testit stop - Добавьте разрешение на исполнение скриптов:
chmod +x db-unite.sh minio-unite.sh - Запустите все необходимые для миграции контейнеры командой:В контейнере
docker compose -f docker-compose.yml -f docker-compose.unite-postgres-minio.yml -p testit up -d minio avatars.minio mc-minio new-db authdb avatars.db backgrounddb licensedb globalsearchdbtestit-mc-minio-1будет запущен миграционный скрипт. - Задайте команду чтения логов контейнера:
docker logs -f testit-mc-minio-1Убедитесь, что миграция прошла успешно. При успешной миграции по окончании работы скрипта отобразится строка:Важно
В зависимости от объема данных в бакетах, процесс может занять некоторое время.
В случае ошибки миграции отобразится строка:Done!В случае ошибки миграции устраните проблему самостоятельно или свяжитесь с технической поддержкой (support@testit.software). Пример логов с успешным выполнением миграции:<bucket_name> bucket migration failed!<...> 1/1 buckets were imported successfully. mc: IAM info successfully downloaded as SOURCE-iam-info.zip mc: IAM info imported to TARGET from SOURCE-iam-info.zip avatars/ bucket migrated successfully! Source files count: 4 Transferred files count: 4 Done! - Завершите процесс вывода логов и запустите миграционный скрипт баз данных Postgres:Убедитесь, что миграция прошла успешно. При успешной миграции по окончании работы скрипта отобразится строка:
docker exec testit-new-db-1 bash /db-unite.shВ случае ошибки миграции отобразится строка:Script finished!В случае ошибки миграции устраните проблему самостоятельно или свяжитесь с технической поддержкой (support@testit.software).Import FAILED! Check database availability and postgres environment variables! - После успешной миграции остановите контейнеры продукта и MiniO:По окончании миграции перейдите к обновлению онлайн или автономному обновлению.
docker compose -f docker-compose.yml -f docker-compose.unite-postgres-minio.yml -p testit down
Подготовка к обновлению до версии 4.2
Развернуть/свернуть инструкцию
Перед началом работы
Важно
Обновление до версии 4.2 осуществляется с версии 4.0.1 и выше.
Перед обновлением системы выполните следующие действия:
- Создайте резервную копию установленной системы (рекомендуется). Файлы
docker-compose.ymlиbackup.shнаходятся в одной директории. Чтобы перенести информацию из вольюмов со старой версии на новую, имена проектов в обеих версиях должны совпадать. В наших примерах проект называетсяtestit(вы можете использовать другое название). - Убедитесь, что на компьютере с установленным продуктом достаточно места для создания файла дампа БД Postgres.
- Убедитесь, что у вас есть возможность исполнять команды от лица пользователя root.
- Если вы используете внешнее объектное хранилище MiniO и/или внешнюю СУБД Postgres, а не сервисы из поставляемого
docker-compose.yml, пропустите соответствующие разделы настоящей инструкции.
Миграция бакетов MiniO
Начиная с версии 4.2 MiniO Gateway не поддерживается. Поэтому перед обновлением необходимо выполнить миграцию бакетов MiniO и их метаданных.
- Из архива поставки Test IT версии 4.2 скопируйте файлы
docker-compose.minio-migrate.yml,minio-migrate.sh,move-migrated-volumes.shиз папкиscriptsв папку с установочными файлами, с помощью которых была развернута текущая версия Test IT. Файлы должны находиться в той же директории, что и файлdocker-compose.yml.
Работа оффлайн
Если вы работаете в режиме оффлайн, в папке с файлами поставки 4.2 также выполните команду для загрузки образов MiniO, необходимых для миграции: docker load -i images.tar.gz.
- Перейдите в директорию с установочными файлами, с помощью которых была развернута текущая версия Test IT и остановите контейнеры продукта. Используйте команду:Docker Compose V2
docker compose -f docker-compose.yml -p testit stopDocker Compose V1docker-compose -f docker-compose.yml -p testit stop - Добавьте разрешение на исполнение скриптов:
chmod +x ./move-migrated-volumes.sh ./minio-migrate.sh - Запустите контейнеры MiniO текущей версии продукта и контейнеры MiniO для миграции:В контейнереDocker Compose V2
docker compose -f docker-compose.yml -f docker-compose.minio-migrate.yml -p testit up -d minio avatars.minio new-minio new-avatars-minio mc-minioDocker Compose V1docker-compose -f docker-compose.yml -f docker-compose.minio-migrate.yml -p testit up -d minio avatars.minio new-minio new-avatars-minio mc-miniotestit_minio-mc_1будет запущен миграционный скрипт. - Задайте команду чтения логов контейнера:
docker logs -f testit-mc-minio-1Убедитесь, что миграция прошла успешно. При успешной миграции по окончании работы скрипта отобразится строка:Важно
- В зависимости от объема данных в бакетах, процесс может занять некоторое время.
В случае ошибки миграции отобразится строка:Done!В случае ошибки миграции устраните проблему самостоятельно или свяжитесь с технической поддержкой (support@testit.software). Пример логов с успешным выполнением миграции:<bucket_name> bucket migration failed!<...> 1/1 buckets were imported successfully. mc: IAM info successfully downloaded as SOURCE-iam-info.zip mc: IAM info imported to TARGET from SOURCE-iam-info.zip avatars/ bucket migrated successfully! Source files count: 4 Transferred files count: 4 Done! - После успешной миграции, завершите процесс вывода логов, остановите контейнеры продукта и MiniO:Docker Compose V2
docker compose -f docker-compose.yml -f docker-compose.minio-migrate.yml -p testit downDocker Compose V1docker-compose -f docker-compose.yml -f docker-compose.minio-migrate.yml -p testit down - Перенесите вольюмы с мигрированными бакетами в оригинальные вольюмы. Используйте команду (для успешного выполнения команды требуются права root):По окончании миграции вы можете перейти к процессу миграции баз СУБД Postgres.
sudo -s ./move-migrated-volumes.sh testit new-minio-data-volume new-avatars-minio-data-volume exit
Миграция СУБД Postgres
Начиная с версии 4.2 в качестве основной системы управления базами данных (СУБД) используется Postgres 14. В процессе обновления необходимо выполнить дамп ваших баз данных (БД) с предыдущей версии Test IT и их восстановление в новой версии. В течение дампа и восстановления баз данных продукт будет недоступен.
Важно
БД backgrounddb появляется в версии 4.1. Если вы обновляете систему с версии ниже, чем 4.1, действия с базой и сервисом backgrounddb, приведенные в настоящей инструкции, выполнять не нужно.
- Перейдите в директорию с установочными файлами, с помощью которых была развернута текущая версия Test IT.
- Остановите контейнеры продукта, используя
.yml-файл, из которого он был запущен. Используйте команду:Docker Compose V2docker compose -f docker-compose.yml -p testit downDocker Compose V1docker-compose -f docker-compose.yml -p testit down - Запустите сервисы Postgres (db, authdb, avatars.db, backgrounddb):Docker Compose V2
docker compose -f docker-compose.yml -p testit up -d db authdb avatars.db backgrounddbDocker Compose V1docker-compose -f docker-compose.yml -p testit up -d db authdb avatars.db backgrounddb - Если в
.env-файле для баз установлены кастомные пользователи и пароли, укажите соответствующие значения в командах ниже, а также укажите директорию для сохранения файлов дампа . Выполните команды, чтобы осуществить дамп БД каждого сервиса:docker exec -i testit-db-1 /bin/sh -c "PGPASSWORD=F1rstL0g0N! pg_dump -Fc -v --clean --if-exists -h localhost -U postgres testitdb" > {{dump_path}}/dump_db docker exec -i testit-authdb-1 /bin/sh -c "PGPASSWORD=F1rstL0g0N! pg_dump -Fc -v --clean --if-exists -h localhost -U postgres authdb" > {{dump_path}}/dump_authdb docker exec -i testit-avatars.db-1 /bin/sh -c "PGPASSWORD=F1rstL0g0N! pg_dump -Fc -v --clean --if-exists -h localhost -U postgres avatarsdb" > {{dump_path}}/dump_avatars.db docker exec -i testit-backgrounddb-1 /bin/sh -c "PGPASSWORD=F1rstL0g0N! pg_dump -Fc -v --clean --if-exists -h localhost -U postgres backgrounddb" > {{dump_path}}/dump_backgrounddbКак ускорить дамп и восстановление БД
В ряде случаев, процессы дампа и восстановления БД могут быть значительно ускорены. Для этого запустите команды дампа и восстановления в многопоточном режиме с помощью опции -j и указанием количества потоков. Корректное использование опции зависит от конфигурации ваших ЦПУ и диска. Дополнительную информацию по этой и другим опциям команд
pg_dumpиpg_restoreвы можете найти на странице официального руководства Postgres (англ.): - Остановите контейнеры:Docker Compose V2
docker compose -f docker-compose.yml -p testit downDocker Compose V1docker-compose -f docker-compose.yml -p testit down - Удалите вольюмы сервисов Postgres:
docker volume rm testit_db-volume docker volume rm testit_authdb-volume docker volume rm testit_avatars.db-volume docker volume rm testit_backgrounddb-volume - Если в файлах
.envи.ymlстарой версии используются пользовательские значения переменных, перенесите их в соответствующие файлы новой версии. - Перейдите в директорию с новой версией поставки Test IT и запустите сервисы Postgres:Docker Compose V2
docker compose -f docker-compose.yml -p testit up -d db authdb avatars.db backgrounddbDocker Compose V1docker-compose -f docker-compose.yml -p testit up -d db authdb avatars.db backgrounddb - Выполните восстановление БД каждого сервиса, используя имя пользователя и пароли из
.env-файла:docker exec -i testit-db-1 /bin/sh -c "PGPASSWORD=F1rstL0g0N! pg_restore -Fc -v --clean --if-exists -h localhost -U postgres -d testitdb" < {{dump_path}}/dump_db docker exec -i testit-authdb-1 /bin/sh -c "PGPASSWORD=F1rstL0g0N! pg_restore -Fc -v --clean --if-exists -h localhost -U postgres -d authdb" < {{dump_path}}/dump_authdb docker exec -i testit-avatars.db-1 /bin/sh -c "PGPASSWORD=F1rstL0g0N! pg_restore -Fc -v --clean --if-exists -h localhost -U postgres -d avatarsdb" < {{dump_path}}/dump_avatars.db docker exec -i testit-backgrounddb-1 /bin/sh -c "PGPASSWORD=F1rstL0g0N! pg_restore -Fc -v --clean --if-exists -h localhost -U postgres -d backgrounddb" < {{dump_path}}/dump_backgrounddb - По окончании восстановления запустите остальные контейнеры продукта Test IT:Docker Compose V2
docker compose -f docker-compose.yml -p testit up -dDocker Compose V1docker-compose -f docker-compose.yml -p testit up -d
Подготовка к обновлению до версии 4.0.1
Развернуть/свернуть инструкцию
Начиная с версии 4.0.1 в конфигурации docker compose была изменена сеть по умолчанию с testit_network на yoonion_network. Чтобы применить данные изменения необходимо выполнить следующие команды:
Важно
Если вы обновляете продукт с версии ниже 4.0.0, перед обновлением выполните указания из раздела Подготовка к обновлению до версии 4.0.
Создайте сеть yoonion_network:
docker network create yoonion_networkПри применении обновления укажите ключ
--remove-orphans, чтобы контейнеры системы пересоздались в новой сети:Docker Compose V2docker compose -f docker-compose.yml --project-name testit up --detach --timeout 120 --remove-orphansDocker Compose V1docker-compose -f docker-compose.yml --project-name testit up --detach --timeout 120 --remove-orphans
Переменная COMPOSE_NETWORK_NAME
В файле .env начиная с версии 4.0.1 была добавлена переменная COMPOSE_NETWORK_NAME, определяющая название сети, в которой будут запущены контейнеры. Ее значение по умолчанию yoonion_network.
Подготовка к обновлению до версии 4.0
В целях повышения безопасности в версии 4.0 процессы в контейнерах запускаются от имени пользователя uid=611(testit). Чтобы избежать некорректной работы контейнеров webapi и rabbitmqconsumer, при обновлении необходимо запустить скрипт, мигрирующий права в вольюмах контейнеров.
Осторожно
При обновлении с более ранних версий до версии 4.0.0 без выполнения скрипта сервисы webapi и rabbitmqcosumer будут рестартовать из-за ошибки в сервисе лицензий.
- Сделайте резервную копию системы.
- Остановите контейнеры системы:Docker Compose V2
docker compose -f docker-compose.yml --project-name testit stop --timeout 120Docker Compose V1docker-compose -f docker-compose.yml --project-name testit stop --timeout 120 - Выполните следующие команды для миграции прав в вольюмах. Скрипт миграции прав в вольюмах
phoenix_migrate_volumes_rights.shнаходится в директорииscripts.chmod +x scripts/phoenix_migrate_volumes_rights.sh sudo scripts/phoenix_migrate_volumes_rights.sh testittestitв примерах команд необходимо заменить на название проекта Docker Compose, в котором запущена система. Чтобы определить название проекта, выполните командуdocker ps. Префикс к названиям контейнеров является названием проекта.Важно
Для выполнения скрипта могут потребоваться права пользователя
rootна хост-системе. В таком случае необходимо запускать скрипт с использованиемsudoили от имени пользователяroot. - Продолжите обновление системы, описанное в инструкциях ниже.
При чистой установке версии 4.0 выполнение скрипта не требуется.