Перейти к основному содержимому

Переход с ТестОпс версии 4.x на 5.x

Архитектура развертывания ТестОпс была изменена в релизе 5.x. Переход с версии 4.x на 5.x состоит из нескольких шагов и сопровождается временным простоем для пользователей.

Цель миграции, описанной в этом разделе, — перенос данных из базы данных сервиса UAA в базу данных сервиса report. После успешного объединения:

  • полученная база данных сервиса report будет использоваться в ТестОпс версии 5.x;
  • база данных сервиса UAA не будет использоваться и может быть удалена.

0. Подготовьте ваш инстанс ТестОпс

Обновитесь до последнего релиза версии 4.x.x → 4.26.5

Внимание

Перед тем как продолжить, убедитесь, что ваша версия обновлена до релиза 4.26.5. Попытка обновить любую другую версию напрямую до 5.x сломает вашу установку ТестОпс, а техническая поддержка не сможет помочь восстановить ваши данные.

Если вы планируете переход с более старой версии, сначала выполните одну из инструкций по обновлению для 4.x:

После обновления до 4.26.5 убедитесь, что ТестОпс работает правильно, без ошибок.

Убедитесь, что версия вашей базы данных — 15 или выше

Внимание

ТестОпс версии 5.x не запустится на версиях PostgreSQL ниже 15.

Перед тем как обновить инстанс ТестОпс с версии 4.26.5 до любой версии 5.x, убедитесь, что ваш сервер PostgreSQL обновлен до версии 15 или выше.

1. Подготовьте новый файл конфигурации

С переходом на версию 5.х была изменена архитектура ТестОпс — сервисы gateway, UAA и report объединены в один под названием testops. Как следствие, были обновлены файлы конфигурации для развертывания ТестОпс.

Скачайте и отредактируйте новый файл конфигурации

ТестОпс версии 5.x использует новый Helm-чарт и новый файл values.yaml, который несовместим с файлом из версии 4.x. Вам необходимо создать новую конфигурацию с нуля, используя новый шаблон, и задать в ней все необходимые параметры. Большинство параметров имеют то же или похожее влияние на систему, как в ТестОпс версии 4.x, но некоторые из них имеют другие имена и структуру.

Подготовьте новый файл конфигурации:

  1. Определите номер самой последней (актуальной) версии Helm-чарта по ссылке.

  2. Загрузите архив в формате TGZ для актуального релиза Helm-чарта на компьютер, где вы планируете выполнять подготовку конфигурационного файла:

    • При работе на Unix-подобной системе используйте команду wget для загрузки архива:

      wget https://dl.qatools.ru/repository/helm-charts/testops-<latest-release-number>.tgz

      где вместо <latest-release-number> укажите номер актуальной версии Helm-чарта, например, 5.10.2.

    • В других случаях откройте эту страницу и скачайте архив вручную.

  3. Извлеките файл values.yaml из загруженного архива вручную или с помощью команды:

    tar -xzvf testops-<latest-release-number>.tgz testops/values.yaml

    где вместо <latest-release-number> укажите номер версии загруженного архива. Файл будет извлечен в директорию testops.

  4. Следуйте шагам из раздела Загрузка и изменение файла конфигурации, чтобы указать значения для всех параметров, необходимых для запуска ТестОпс, в файле values.yaml.

    В качестве базы данных укажите параметры соединения с базой данных сервиса report, так как именно она будет использоваться после миграции данных.

  5. Убедитесь, что вы учли все возможные отличия между конфигурациями ТестОпс версий 4.x и 5.x.

Скопируйте ключ шифрования из старого файла конфигурации в новый

Все данные интеграций (учетные данные, используемые для интеграций) хранятся в базе данных в зашифрованном виде. Шифрование данных выполняется с помощью алгоритма AES, которому требуется ключ шифрования. Этот ключ необходимо перенести из конфигурации версии 4.x в конфигурацию версии 5.x. Без его переноса интеграции перестанут работать и вам придется повторно ввести все секреты интеграций.

  1. В файле values.yaml из развертывания ТестОпс версии 4.x найдите параметр cryptoPass и его значение. Значение можно найти либо в файле values.yaml, либо в соответствующем секрете, созданном для вашего развертывания.
  2. Используйте это значение для настройки того же параметра в файле values.yaml для ТестОпс версии 5.x:
############################################################################################################
# cryptoPass parameter is used to encrypt sensitive data (passwords, API tokens in the database)
# Come up with some phrase, then use Base64 encoding, and paste encoded value here.
# In this example we user phrase "This phrase must be kept in a dark dry place." and encoded it as Base64
# phrase mustn't be changed over time, otherwise your integrations would stop working and you will need to re-submit data
############################################################################################################
cryptoPass: <укажите здесь значение параметра cryptoPass из ТестОпс версии 4.x>

2. Остановите инстанс версии 4.26.5

Чтобы избежать повреждения данных при работе с базами данных, остановите инстанс ТестОпс версии 4.x.

Мы рекомендуем закрыть все запуски и уведомить всех ваших пользователей о предстоящем периоде обслуживания.

Внимание

Пожалуйста, прочтите это сообщение до конца прежде чем продолжить.

После выполнения команды, указанной ниже, все приложения, установленные в Kubernetes с помощью Helm-чарта для ТестОпс версии 4.x, будут удалены и все их данные будут утеряны.

Если базы данных или решения для хранения артефактов (MinIO) были установлены с помощью Helm-чарта и запускались в подах, то до удаления ТестОпс версии 4.x вам потребуется:

  1. Сделать полные резервные копии баз данных report и uaa.
  2. Перенести эти данные на отдельный сервер баз данных.

Мы настоятельно рекомендуем использовать развертывание, при котором все сервисы, предназначенные для постоянного хранения данных, разворачиваются на отдельных серверах, а не устанавливаются с помощью Helm-чарта. Этот вариант позволяет более гибко управлять обновлениями и производительностью решения.

Предполагается, что в развертываниях не хранится ценная информация, так как хранилище S3 и базы данных PostgreSQL должны быть развернуты отдельно. Мы не предоставляем поддержку для обновления иных конфигураций.

Чтобы удалить инстанс, выполните команду:

helm delete allure-testops

3. Объедините базы данных

Внимание

Все действия в этом шаге обязательны.

В ТестОпс 4.x было задействовано две базы данных PostgreSQL. В ТестОпс 5.x используется одна база данных PostgreSQL, которая хранит информацию о пользователях, тест-кейсах и результатах тестирования.

Перед запуском ТестОпс 5.x необходимо перенести существующие данные из базы данных сервиса UAA в базу данных сервиса report.

Команды ниже используют утилиты командной строки pg_dump и pg_restore, а также переменные:

  • password_of_uaa_db_user_here — ваш пароль для базы данных сервиса UAA;
  • password_of_report_db_user_here — ваш пароль для базы данных сервиса report;
  • --host="db.example.com" — ваш реальный адрес хоста.

Резервное копирование баз данных

Способ создания резервной копии базы данных зависит от ваших предпочтений и внутренних процедур. Если вы регулярно создаете резервные копии или снимки баз данных, пожалуйста, создайте внеплановую резервную копию перед тем, как продолжить.

Создайте полные резервные копии баз данных сервисов UAA и report

  1. Создайте полную резервную копию базы данных сервиса report:

    # экспортируйте пароль для базы данных
    export PGPASSWORD='password_of_report_db_user_here'
    # создайте копию базы данных
    pg_dump --file=report-dump.sql \
    --host="db.example.com" --port=5432 --username=report --dbname=report
  2. Создайте полную резервную копию базы данных сервиса UAA:

    # экспортируйте пароль для базы данных
    export PGPASSWORD='password_of_uaa_db_user_here'
    # создайте копию базы данных
    pg_dump --file=uaa-dump.sql \
    --host="db.example.com" --port=5432 --username=uaa --dbname=uaa

Полученные файлы report-dump.sql и uaa-dump.sql не используются во время объединения баз данных. Однако мы рекомендуем сохранить их в качестве резервной копии для восстановления, если возникнут проблемы.

Создайте частичную копию базы данных сервиса UAA

Примечание

Эта копия будет использоваться при объединении баз данных.

  1. Экспортируйте пароль для базы данных сервиса UAA, чтобы инструмент pg_dump мог его использовать.

    export PGPASSWORD='password_of_uaa_db_user_here'
  2. Создайте частичную копию базы данных сервиса UAA:

    Важно

    В команде ниже обновите параметр --schema, если вы используете схему базы данных, отличную от public.

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

    pg_dump --file=uaa_for_merge.dump \
    --host="db.example.com" --username=uaa --role=uaa --dbname="uaa" \
    --schema="public" \
    --exclude-table-data="databasechangelog" \
    --exclude-table-data="databasechangeloglock" \
    --exclude-table-data="shedlock" \
    --format=c --blobs --encoding=UTF8 --compress=9 \
    --no-owner --no-privileges --no-comments --verbose

    Команда выведет подробный лог. Убедитесь, что в выводе нет сообщений об ошибках.

Импортируйте частичную копию базы данных сервиса UAA в базу данных сервиса report

На этом этапе частичная копия, созданная на предыдущем этапе, будет загружена в базу данных сервиса report:

  1. Экспортируйте пароль для базы данных сервиса report, чтобы инструмент pg_restore мог его использовать.

    export PGPASSWORD='password_of_report_db_user_here'
  2. Загрузите частичную копию базы данных сервиса UAA (из предыдущего этапа) в базу данных сервиса report для восстановления.

    Важно

    В команде ниже обновите параметр --schema, если вы используете схему базы данных, отличную от public.

    pg_restore --host="db.example.com" \
    --username="report" --role="report" --dbname="report" \
    --no-owner --no-privileges --verbose \
    --schema "public" \
    "uaa_for_merge.dump"

    Команда выведет подробный лог. Убедитесь, что в выводе нет сообщений об ошибках, кроме незначительных:

    • function "now_epoch_mills" already exists;
    • relation "databasechangelog" already exists;
    • relation "databasechangeloglock" already exists;
    • multiple primary keys for table "databasechangeloglock" are not allowed;
    • ошибки, связанные с доступностью таблицы shedlock.

    Если на этом этапе возникнут другие ошибки, пожалуйста, обратитесь в службу поддержки перед тем, как продолжить (выберите приоритет «Срочно» при создании заявки).

Импортируйте лог изменений базы данных сервиса UAA в итоговую базу данных сервиса report

Внимание

Действия, описанные ниже, обязательны.

Скачайте файл insert_to_changelog.sql (лог изменений базы данных сервиса UAA) и импортируйте его в итоговую базу данных сервиса report, полученную на предыдущем этапе:

  1. Экспортируйте пароль для базы данных сервиса report, чтобы инструмент psql мог его использовать.

    export PGPASSWORD='password_of_report_db_user_here'
  2. Импортируйте лог изменений базы данных сервиса UAA в итоговую базу данных сервиса report, полученную на предыдущем этапе.

    psql --file="insert_to_changelog.sql" \
    --host="db.example.com" --port=5432 --username=report --dbname=report

4. Запустите инстанс версии 5.x

Настройка подключения к базе данных

База данных для ТестОпс версии 5.х — обновленная база данных сервиса report, которую мы получили на предыдущих этапах.

Важно

После завершения миграции каждый пользователь инстанса ТестОпс должен очистить кэш и файлы cookie во всех используемых браузерах. Это нужно, чтобы данные из предыдущей версии ТестОпс не мешали корректной работе обновленной версии. Подробнее см. База знаний ТестОпс.

Чтобы запустить ТестОпс 5.x, следуйте инструкциям из разделов Установка чарта и Развертывание приложения.