# Установка обновлений Swarmica
## Общая информация

Обновление системы может происходить по одному из трех сценариев:

1.  **Автоматическое, можно пропустить промежуточные версии** – такой сценарий возможен, когда **нет изменений в файлах запуска** (docker-compose.yml, .env и т.д.) и **нет изменений схемы данных**, которые удаляют какие-либо данные.
2.  **Автоматическое, нельзя пропустить промежуточную версию** - этот сценарий задействован, когда **нет изменений в файлах запуска** (docker-compose.yml, .env и т.д.), но **есть изменения схемы данных**, которые удаляют какие-либо данные. Промежуточное обновление необходимо для того, чтобы сохранить эти данные для дальнейшего использования. С точки зрения администратора системы, выполняющего обновление, никаких дополнительных действий делать не нужно, автоматика самостоятельно произведет все необходимые действия, но время обновления вырастет и будет производен дополнительный рестарт на промежуточной версии.
3.  **Ручное** - такой сценарий возможен, когда **есть изменения в файлах запуска** (docker-compose.yml, .env и т.д.) и требуется прочитать инструкцию по выполнению обновления и выполнить все указанные там действия.

## Выполнение обновления

Обновление выполняется из каталога установки (`/root/swarmica`):

```
make upgrade-plan    # показать план обновления, ничего не меняя
make upgrade         # выполнить обновление
```

1.  `cd /root/swarmica`
2.  `make upgrade-plan `скачивает манифест обновлений и строит план до последнего релиза. Рекомендуется выполнять сначала эту команду, чтобы оценить длительность обновления и планируемое количество действий
3.  `make upgrade` скачивает манифест обновлений, строит план до последнего релиза и выполняет его по шагам.

![](https://support.swarmica.com/attachments/B/9/B9_gjw6VieKEvR5-_a/Swarmica_Autoupdate_Schema.png)

Каждый шаг: проверки, скачивание образов, резервная копия БД, запись версий в `.env`, запуск контейнеров с ожиданием миграций, `post_start`. Всё, что может завершиться ошибкой, выполняется до изменения `.env`: при сбое на этом этапе ничего не меняется. Если шаг прервался после изменения `.env`, повторный `make upgrade` продолжит его с места остановки, а при сбое печатается точная инструкция по откату.

*   Для шагов, требующих ручной подготовки, обновление останавливается и показывает ссылку на инструкцию. После подготовки и выполнения всех шагов из инструкции: `make upgrade ACK=vX.Y.Z`.
*   Автоматическое обновление доступно только с релизной версии. Если в `.env` указаны `main` или `devel`, укажите фактический релиз: `make set-release VERSION=vX.Y.Z`, затем `make pull up`.
    Версию можно узнать в интерфейсе системы в разделе **Настройки**, если у вас есть затруднения – обратитесь в поддержку Swarmica.

## Системные требования

1.  Версия Swarmica не ниже [v6.0.0](https://support.swarmica.com/article/ru/1765) – до нее необходимо обновиться вручную согласно инструкциям промежуточных версий
2.  Для обновления требуются Docker Compose не ниже 2.24.6, GNU make 4.x, jq 1.6 и новее, curl и flock.

## Переход на автообновление

1.  Скачайте последнюю версию архива установщика на сервер со Swarmica:

    `wget https://support.swarmica.com/attachments/installer/installer.tar.gz`
2.  Распакуйте архив:

    `tar -xvzf installer.tar.gz templates/Makefile`
3.  Скопируйте Makefile в каталог, где установлена Swarmica:

    `cp templates/Makefile /root/swarmica/`
4.  Проверьте, что у вас есть переменная `SW_RELEASE_VERSION` в `/root/swarmica/.env`, и если ее нет - добавьте с указанием той версии, которая установлена на сервере (можно посмотреть в разделе **Настройки**)