Жизненный цикл деплоя
Как приложение проходит путь от запуска до работающей версии.
Развёртывание — одна попытка собрать приложение и запустить новую версию на сервере. История развёртываний видна на странице Деплои (в пределах выбранной области) и в ленте «Последние развёртывания» на странице сервиса.
Как запустить
На странице сервиса:
| Кнопка | Что делает |
|---|---|
| Развернуть | Собирает последний коммит выбранной ветки и выкатывает его вместо текущей версии |
| Пересобрать | Собирает сервис заново — полезно, когда сборка сломалась, а код не менялся |
Запускать развёртывания могут участники с соответствующим правом в их роли. Если кнопка неактивна, подсказка объяснит причину: не подключён репозиторий, не выбран сервер, сервер не отвечает и т. п.
Новую версию можно запустить и без сборки — из каталога образов, см. Откаты и артефакты.
Этапы
- Очередь. На одном сервере одновременно выполняется одно развёртывание, остальные ждут со статусом «В очереди». Новый запуск не отменяет текущий.
- Сборка. DeployCode забирает код, собирает образ и пишет всё в журнал.
- Запуск. Docker Swarm заменяет контейнеры сервиса новой версией.
- Проверка готовности. DeployCode ждёт, пока все реплики новой версии запустятся и простоят без сбоев;
если в образе есть healthcheck — пока он не станет
healthy. Подробнее — Готовность и healthcheck.
Статусы
| Статус | Что значит |
|---|---|
| В очереди | Ждёт, пока сервер освободится |
| Идёт | Сборка или запуск выполняются |
| Успешно | Новая версия запущена и прошла проверку готовности |
| Ошибка | Развёртывание не удалось — нажмите на статус, чтобы увидеть причину |
| Отменён | Развёртывание отменено |
| Отмена запрошена | Отмена принята, сборка остановится перед запуском образа |
| Связь потеряна | Исполнитель давно не сообщал о ходе развёртывания, см. ниже |
Для частых причин ошибок — нехватка места или памяти, недоступный Docker — DeployCode показывает понятное сообщение и подсказку. В остальных случаях откройте журнал.
Отмена
Отменить можно в меню развёртывания в истории — «Отменить развёртывание»:
- запуск из очереди отменяется сразу;
- если сборка уже идёт, она завершит текущую команду, а новый образ не будет запущен;
- после того как Docker начал заменять контейнеры, отменить развёртывание уже нельзя.
Если связь с развёртыванием потеряна
Во время работы развёртывание регулярно сообщает о себе. Если сообщений нет больше 45 секунд, в истории появляется «Связь потеряна» — например, при перезапуске панели.
DeployCode сверяется с сервером и решает, что делать:
- если новая версия ещё не начала запускаться, развёртывание завершается с ошибкой — посмотрите в журнале последний выполненный шаг и запустите заново;
- если запуск уже начался, DeployCode до 10 минут следит за Docker и завершает развёртывание по факту: успешно или с ошибкой.
Подробности запуска
В истории у каждого развёртывания есть меню: «Сведения о запуске», «Открыть журнал», «Скопировать ID», «Открыть сервис». В карточке развёртывания три вкладки:
- Запуск — коммит, ветка, репозиторий, сервер, время начала и окончания, длительность, образ и ошибка, если она была;
- Логи — журнал развёртывания;
- Изменения — коммиты и файлы, изменившиеся с предыдущего успешного развёртывания.
Сколько хранится история
Для каждого приложения хранятся 10 последних развёртываний вместе с журналами — более старые удаляются при новом запуске.