Перейти к основному содержимому
Версия: 7.0

Общее описание

Если ваши пользователи имеют прямой доступ в интернет, приложение будет доступно из меню в браузере после авторизации в вашем экземпляре Пассворк. Дополнительных действий не требуется: бэкенд автоматически определяет последнию совместимую версию. В случае обновления бэкенда, при следующем входе пользователь получит предложение обновить десктопное приложение.

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

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

Сервер обновлений

  • Сервер обновлений должен отдавать контент в определённой структуре, чтобы пользователи могли корректно устанавливать и обновлять приложение. Ниже будет приведена необходимая структура и способ её наполнения с использованием предоставляемых скриптов.
  • Версии десктопного приложения привязаны к фиче Desktop, поддерживаемой на бэкенде (формат версии — XXYY, сборки — XXYYZZ). Серверная часть Пассворк имеет собственное версионирование; десктопное приложение синхронизируется с версией фичи, а не «просто с бэкендом». Невозможно разместить «последнюю» версию приложения в сторах или публичном репозитории и устанавливать её — клиент должен получать сборку, совместимую с вашим сервером.
  • На бэкенде есть настройка, задаваемая переменной DESKTOP_SERVER_BASE_URL — URL сервера обновлений. Клиент обращается к этому URL для проверки обновлений и загрузки установщика.
  • Мы настоятельно рекомендуем располагать сервер обновлений отдельно от сервера приложений: это позволяет корректно распределять ресурсы и не смешивать задачи.

Cтруктура сервера обновлений

Клиент ожидает по базовому URL (ваш DESKTOP_SERVER_BASE_URL) такую схему:

  • В корне — каталоги версий фичи Desktop в формате XXYY (4 цифры, например 0100, 0201). Это не версия всего бэкенда, а версия поддерживаемой фичи Desktop; с ней связаны конкретные сборки (XXYYZZ).
  • В каждом каталоге XXYY:
    • Файлы манифестов: latest.yml, latest-linux.yml, latest-mac.yml (пути к установщикам и контрольные суммы).
    • Подкаталоги с установщиками: например 010203/ с файлами .exe, .deb, .rpm, .dmg и т.д.

Пример:

DESKTOP_SERVER_BASE_URL/
0100/
latest.yml
latest-linux.yml
latest-mac.yml
010203/
Passwork-Setup-1.2.3.exe
passwork_1.2.3_amd64.deb
...
0201/
...

Клиент ориентируется на версию XXYYZZ, которая получена из файлов манифестов latest*.

Скрипты для Linux и Windows

Краткий чек-лист

  1. Развернуть сервер обновлений отдельно от бэкенда (рекомендуется).
  2. Указать на бэкенде DESKTOP_SERVER_BASE_URL — базовый URL этого сервера.
  3. Настроить наполнение: Bash/PowerShell скрипты с OUTPUT_DIR, при необходимости PASSWORK_DOMAIN и HTTP_PROXY. Версию брать только из API или локального файла; репозиторий — только источник файлов.
  4. Запускать скрипт по расписанию или вручную после обновления бэкенда.
  5. Для мониторинга использовать код выхода и при необходимости STATUS_FILE и LOG_FILE.
  6. В полностью закрытых сетях — использовать архивы из портала и вручную помещать контент в формате XXYY + latest*.yml + установщики.

Откат версии

Если был произведен откат версии сервера приложений на более старую версию (доступная версия XXYY уменьшилась), скрипт не удаляет каталоги с более новой версией автоматически. Рекомендуется такой порядок действий:

  1. Узнать доступную версию десктопа, используя следующий API запрос к бэкенду: <PASSWORK_DOMAIN>/api/v1/app/features, в ответе для фичи desktop — поле version);
  2. Удалить на сервере обновлений каталоги XXYY, которые новее этой версии. В структуре под OUTPUT_DIR располагаются каталоги с именами из 4 цифр; нужно оставить только те, что не старше выбранной для отката версии, и удалить более новые (чтобы клиенты не получали обновление на версию, с которой бэкенд "еще" не совместим).
  3. Запустить скрипт получения обновлений файлов десктопа, после очередного обновления сервера приложений.

Встроенной автоматической обработки отката в скрипте нет: он только синхронизирует одну выбранную версию и по KEEP_RELEASES удаляет лишние старые каталоги. Удаление «слишком новых» при откате — отдельная процедура (скрипт/ручная операция) по результату запроса к API и очистке дерева в OUTPUT_DIR.