Общее описание
Если ваши пользователи имеют прямой доступ в интернет, приложение будет доступно из меню в браузере после авторизации в вашем экземпляре Пассворка. Дополнительных действий не требуется: бэкенд автоматически определяет последнюю совместимую версию. В случае обновления бэкенда, при следующем входе пользователь получит предложение обновить десктопное приложение.
Но зачастую Пассворк используется в закрытых сетях. Таким образом, установка и обновление десктопного приложения должны работать без доступа к публичному интернету и нашему репозиторию.
Версия десктопного приложения согласуется с версией Пассворка, установленной у вас. Эта статья описывает детали, требуемые для развертывания и поддержания актуальности десктопного приложения Пассворка в закрытых сетях.
Сервер обновлений
- Сервер обновлений должен отдавать контент в определённой структуре, чтобы пользователи могли корректно устанавливать и обновлять приложение. Ниже будет приведена необходимая структура и способ её наполнения с использованием предоставляемых скриптов.
- Версии десктопного приложения привязаны к фиче Десктоп, поддерживаемой на бэкенде (формат версии —
XXYY, сборки —XXYYZZ). Серверная часть Пассворка имеет собственное версионирование; десктопное приложение синхронизируется с версией фичи, а не «просто с бэкендом». Невозможно разместить «последнюю» версию приложения в сторах или публичном репозитории и устанавливать её — клиент должен получать сборку, совместимую с вашим сервером. - На бэкенде есть настройка, задаваемая переменной DESKTOP_SERVER_BASE_URL — URL сервера обновлений. Клиент обращается к этому URL для проверки обновлений и загрузки установщика.
- Мы настоятельно рекомендуем располагать сервер обновлений отдельно от сервера приложений: это позволяет корректно распределять ресурсы и не смешив ать задачи.
Cтруктура сервера обновлений
Клиент ожидает по базовому URL (ваш DESKTOP_SERVER_BASE_URL) такую схему:
- В корне — каталоги версий фичи Десктоп в формате
XXYY(4 цифры, например 0100, 0201). Это не версия всего бэкенда, а версия поддерживаемой фичи Десктоп; с ней связаны конкретные сборки (XXYYZZ). - В каждом каталоге
XXYY:- Файлы манифестов:
latest.yml,latest-linux.yml,latest-mac.yml(пути к установщикам и контрольным суммам). - Подкаталоги с установщиками: например
010203/с файлами.exe,.deb,.rpm,.dmgи т.д.
- Файлы манифестов:
Пример:
- shell
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
Краткий чек-лист
- Развернуть сервер обновлений отдельно от бэкенда (рекомендуется).
- Указать на бэкенде DESKTOP_SERVER_BASE_URL — базовый URL этого сервера.
- Настроить наполнение: Bash/PowerShell скрипты с
OUTPUT_DIR, при необходимостиPASSWORK_DOMAINиHTTP_PROXY. Версию брать только из API или локального файла; репозиторий — только источник файлов. - Запускать скрипт по расписанию или вручную после обновления бэкенда.
- Для мониторинга использовать код выхода и при необходимости
STATUS_FILEиLOG_FILE. - В полностью закрытых сетях — использовать архивы из портала и вручную помещать контент в формате
XXYY+latest*.yml+ установщики.
Откат версии
Если был произведен откат версии сервера приложений на более старую версию (доступная версия XXYY уменьшилась), скрипт не удаляет каталоги с более новой версией автоматически. Рекомендуется такой порядок действий:
- Узнать доступную версию десктопа, используя следующий API запрос к бэкенду:
<PASSWORK_DOMAIN>/api/v1/app/features, в ответе для фичи desktop — полеversion); - Удалить на сервере обновлений каталоги XXYY, которые новее этой версии. В структуре под
OUTPUT_DIRрасполагаются каталоги с именами из 4 цифр; нужно оставить только те, что не старше выбранной для отката версии, и удалить более новые (чтобы клиенты не получали обновление на версию, с которой бэкенд "еще" не совместим). - Запустить скрипт получения обновлений файлов десктопа, после очередного обновления сервера приложений.
Встроенной автоматической обработки отката в скрипте нет: он только синхронизирует одну выбранную версию и по KEEP_RELEASES удаляет лишние старые каталоги. Удаление «слишком новых» при откате — отдельная процедура (скрипт/ручная операция) по результату запроса к API и очистке дерева в OUTPUT_DIR.