DeployCode
Сборка и развёртывание

Жизненный цикл развёртывания

Как приложение проходит путь от запуска до работающей версии.

Развёртывание — одна попытка собрать приложение и запустить новую версию на сервере. История развёртываний видна на странице «Развёртывания» (в пределах выбранной области) и в ленте «Последние развёртывания» на странице сервиса.

Как запустить

На странице сервиса:

КнопкаЧто делает
РазвернутьСобирает последний коммит выбранной ветки и выкатывает его вместо текущей версии
ПересобратьСобирает сервис заново — полезно, когда сборка сломалась, а код не менялся

Запускать развёртывания могут участники с правом на запуск развёртываний в их роли. Если кнопка «Развернуть» неактивна, подсказка объяснит причину: не подключён репозиторий, не выбран сервер, сервер не отвечает и т. п.

Новую версию можно запустить и без сборки — из каталога образов, см. Откаты и артефакты.

Этапы

  1. Очередь. На одном сервере одновременно выполняется одно развёртывание, остальные ждут со статусом «В очереди». Новый запуск не отменяет текущий.
  2. Сборка. DeployCode забирает код, собирает образ и пишет всё в журнал. Если у приложения выбран реестр, образ публикуется в него и загружается на сервер развёртывания. Так работает и отдельный сервер сборки.
  3. Запуск. Docker Swarm заменяет контейнеры сервиса новой версией.
  4. Проверка готовности. DeployCode ждёт, пока все реплики новой версии запустятся и простоят без сбоев; если в образе есть healthcheck — пока он не станет healthy. Подробнее — Готовность и healthcheck.

Статусы

СтатусЧто значит
В очередиЖдёт, пока сервер освободится
ИдётСборка или запуск выполняются
УспешноНовая версия запущена и прошла проверку готовности
ОшибкаРазвёртывание не удалось — нажмите на статус, чтобы увидеть причину
ОтменёнРазвёртывание отменено
Отмена запрошенаОтмена принята, сборка остановится перед запуском образа
Проверяем состояниеОбновления перестали поступать, DeployCode проверяет сборку и приложение на сервере, см. ниже
Сборка продолжаетсяОбновлений нет, но проверка подтвердила, что сборка на сервере ещё идёт
Результат не подтверждёнПроверить состояние на сервере не удалось, проверка повторится автоматически. Это не ошибка

Статус с пояснением можно нажать: откроется причина ошибки или ход наблюдения за развёртыванием и время последней проверки. Статусы одинаковы в истории, на странице сервиса, в обзоре и на карте.

Для частых причин ошибок — нехватка места или памяти, недоступный Docker — DeployCode показывает сообщение с подсказкой. В остальных случаях откройте журнал.

Отмена

Отменить можно в меню развёртывания в истории — «Отменить развёртывание»:

  • запуск из очереди отменяется сразу;
  • если сборка уже идёт, она завершит текущую команду, а новый образ не будет запущен;
  • после того как Docker начал заменять контейнеры, отменить развёртывание уже нельзя.

Если обновления перестали поступать

Во время работы развёртывание регулярно сообщает о себе. Если сообщений нет больше 45 секунд, например при перезапуске панели, статус меняется на «Проверяем состояние». Запускать развёртывание заново не нужно: DeployCode сам выяснит, чем оно закончилось.

Если тишина длится больше двух минут, DeployCode сверяется с сервером и решает, что делать:

  • если новая версия ещё не начала запускаться, DeployCode проверяет сборку. Пока она идёт, статус «Сборка продолжается», и DeployCode ждёт до 30 минут. Если образ готов, запуск продолжается, а если образа нет, развёртывание завершается с ошибкой;
  • если запуск уже начался, DeployCode до 10 минут следит за Docker и завершает развёртывание по факту: успешно или с ошибкой.

Если сервер не ответил на проверку, статус будет «Результат не подтверждён», а проверка повторится автоматически.

Кнопка «Проверить состояние» в карточке развёртывания запускает проверку сразу. Новое развёртывание она не создаёт и не завершает текущее раньше двух минут тишины.

Если развёртывание завершилось успешно после такого перерыва, журнал может обрываться. Это не меняет результат: статус «Успешно» подтверждён проверкой на сервере.

Подробности запуска

В истории у каждого развёртывания есть меню: «Сведения о запуске», «Открыть журнал», «Скопировать ID», «Открыть сервис». В карточке развёртывания три вкладки:

  • Запуск — этапы развёртывания, сервер сборки и сервер развёртывания, коммит, ветка, репозиторий, время начала и окончания, длительность, образ и ошибка, если она была;
  • Логи — журнал развёртывания;
  • Изменения — коммиты и файлы, изменившиеся с предыдущего успешного развёртывания.

На вкладках «Запуск» и «Логи» также есть блок «История запуска»: когда развёртывание началось, прерывались ли обновления, когда наблюдение восстановилось, когда начался запуск приложения и чем всё закончилось. Если обновления прерывались, над блоком показано, что DeployCode выяснил и когда проверял последний раз.

Этапы развёртывания

Во вкладке «Запуск» блок «Этапы развёртывания» показывает, где сейчас развёртывание. Пока оно идёт, блок обновляется каждые две секунды.

ЭтапКогда нужен
Сборка образаПри сборке из репозитория
Публикация в реестрЕсли у приложения выбран реестр публикации
Загрузка на сервер развёртыванияЕсли образ берётся из реестра
Запуск приложенияВсегда

Каждый этап отмечен как «Ожидает», «Выполняется», «Готово», «Ошибка», «Остановлено», «Не требуется» или «Нет данных». У старых запусков без сохранённой конфигурации часть этапов может быть без данных.

Сколько хранится история

Для каждого приложения хранятся 10 последних развёртываний вместе с журналами — более старые удаляются при новом запуске.

На этой странице