Интеллект и компьютеры
Обновления
Описывает Piomio 0.2.15Изменить страницу
Piomio никогда не обновляется у тебя за спиной. Когда выходит новый релиз, появляется кнопка Обновить, а ассистент предлагает обновиться в чате; когда — решаешь ты. После обновления ассистент рассказывает, что изменилось. Как проходит само обновление, зависит от того, как установлен Piomio.
| Установка | Как обновляется |
|---|---|
| Приложение для компьютера | Обновить в боковой панели, предложение ассистента или меню значка |
Сервер, установленный через install.sh | Обновить в боковой панели, предложение ассистента или install.sh ещё раз |
Компьютер, подключённый через install.sh или piomio-node | Обновить в его строке, от твоего хаба |
| Mac или ПК, подключённый через приложение | Собственное меню приложения |
| Из исходников | git pull, npm install, npm run build |
Как устроены релизы
- Каждое изменение, которое попадает в программу, само становится релизом. Когда меняется приложение, последняя цифра версии растёт (0.2.12, потом 0.2.13…) и выходит релиз, так что новые версии появляются часто. Изменения сайта или этой документации релизов не делают. Новую минорную или мажорную версию (0.3.0, 1.0.0) выпускают вручную.
- Релизы лежат на GitHub, на github.com/legostin/piomio/releases: установщики для компьютера, файлы, из которых обновляется приложение, архивы для Linux с контрольными суммами и подписями, и
install.sh. - Обновления подписаны. Файлы, из которых обновляются приложение и сервер, подписаны ключом обновлений Piomio. Его открытая часть встроена в приложение и в хаб, поэтому ставится только то, что подписано этим ключом.
- Твоя версия видна на экране входа («версия 0.2.13»). На сервере её печатает
piomio version. Если навести курсор на Обновить, видно, до какой версии обновится.
Приложение для компьютера
Приложение ищет новый релиз через минуту после запуска, а потом раз в шесть часов. Новую версию оно скачивает в фоне, но ничего не ставит, пока ты не скажешь. Сказать можно тремя способами:
- В боковой панели. В блоке Машины у строки этого компьютера появляется Обновить. Нажми.
- В чате. Когда выходит новая версия, ассистент сообщает об этом и предлагает кнопки: обновить сейчас или не сейчас. Про каждую версию он говорит один раз и не чаще раза в день. Можно и просто написать «обнови Piomio».
- В меню значка. Когда релиз скачан, пункт обновления называется Установить обновление …. Проверить обновления проверяет прямо сейчас.
Дальше приложение аккуратно останавливает хаб (задачи, которые шли, ждут новую версию в очереди), ставит обновление и запускается снова. Через минуту-другую всё работает, со всеми твоими данными. На Windows установщик показывает маленькое окно с прогрессом и ничего не спрашивает.
Если обновиться не получилось, приложение остаётся на прежней версии, а хаб продолжает работать (или запускается снова). Обновить возвращается, чтобы можно было попробовать позже, а пункт меню пишет Обновить не вышло: проверить снова. Если не удалось скачать обновление после нажатия Обновить или согласия в чате, ассистент расскажет почему.
Сервер, установленный через install.sh
Хаб, установленный через install.sh, раз в шесть часов смотрит последний релиз на GitHub. Если есть новее, у строки сервера в блоке Машины появляется Обновить, а ассистент предлагает обновиться в чате (про каждую версию один раз, не чаще раза в день). Можно и просто сказать «обнови сервер».
Что происходит, когда ты соглашаешься:
- Хаб скачивает архив релиза для своего процессора (x64 или arm64) и его подпись и сверяет подпись с ключом обновлений Piomio.
- Распаковывает новую версию рядом с работающей и проверяет, что она запускается и называет правильную версию.
- Сохраняет копию базы данных как есть, переключается на новую версию и перезапускается. Примерно через минуту всё снова работает.
Если что-то сорвалось до переключения, ничего не меняется: хаб остаётся на своей версии, а ассистент объясняет, что случилось.
Если после переключения новая версия три запуска подряд не поднимается (падает или не отвечает три минуты), запускатор сам возвращается к прежней версии и кладёт на место копию базы, так что всё становится как до обновления. Ассистент сообщит об этом и даст команду для журнала: journalctl --user -u piomio. Эту версию он больше не предложит, только следующий релиз.
Когда новая версия поднялась, копия базы удаляется. Прежняя версия остаётся на диске рядом с новой, более старые удаляются.
Обновиться можно и повторным запуском установщика под root:
curl -fsSL https://piomio.io/install.sh | sh
Он скачает последний релиз, сверит контрольную сумму, переключится на него и перезапустит хаб. Автоматического отката при этом нет, так что кнопка Обновить надёжнее. С PIOMIO_VERSION=x.y.z перед sh ставится конкретный релиз.
Хочешь свою копию перед обновлением? piomio backup (после sudo -iu piomio) копирует базу, хранилище секретов, агентов и плагины в ~/.local/share/piomio/backups. Подробнее об установке на сервер: На сервере с Linux.
Другие твои компьютеры
Компьютер, подключённый через install.sh со ссылкой-приглашением, или тот, где ты сам запускаешь piomio-node.mjs, получает новые версии от твоего хаба, а не с GitHub. Если у него версия старше, чем у хаба, в его строке в блоке Машины появляется Обновить. Можно и попросить в чате, например «обнови компьютер vps».
Хаб отправляет свою сборку демона. Компьютер проверяет её, сохраняет старый файл рядом и за несколько секунд перезапускается. Для этого он должен быть онлайн. Поэтому обновляй сначала хаб, а потом компьютеры.
piomio-node.mjs из времён до этой функции не сообщает свою версию, и хаб не может предложить ему обновление. Скачай его с хаба заново один раз.
Mac или ПК, подключённый через приложение (Подключить к моему Piomio), кнопку Обновить в своей строке не получает: его обновляет само приложение, из меню своего значка, как выше. Подробнее в разделе Машины и другие компьютеры.
Из исходников
Хаб из клона репозитория сам не обновляется, и если попросишь, ассистент так и скажет. Обнови его сам:
git pull npm install npm run build
Потом останови хаб и запусти снова (npm start).
Что изменилось
После обновления, как бы ни был установлен Piomio, при первом запуске новой версии ассистент пишет в своём чате, на какой ты теперь версии и что изменилось для тебя. Пишет на языке хаба, по заметкам к релизу на GitHub, и опускает то, что интересно только разработчикам. Про каждую версию один раз.
Обновление из другого места
PIOMIO_UPDATE_URL направляет обновления в другой источник, чтобы проверить свою сборку до релиза. Для сервера это адрес, который отвечает как releases/latest на GitHub; для приложения — latest.json. Файлы всё равно должны быть подписаны ключом Piomio. Смотри Настройки и переменные окружения.