Доставка и развертывание
Рабочая директория проекта /opt/npchat
, доступ на запись есть только у пользователей группы npchat
.
Параметра для запуска приложения распологаются в /opt/npchat/.env.production
, читать может только группа.
Новые файлы в директории создаются с группой npchat, так как установлен setgid.
В корне рабочей директории располагаются директории релизов, куда помещается код или бинарные файлы сборок (прим.: /opt/npchat/v0.0.1-alpha).
Приложение запускается внутри docker-контейнера с именем npchat.api
, образ для запуска контейнера создается с версией, которая совпадает с названием директории.
Автоматизация развертывания организована в 3 этапа:
- Посредством github-actions или вручную (
git tag tagname && git push origin $_
), создать тэг с версией в репозитории. - Запустить workflow, который отправляет код тэга на сервер, в соответствующую директорию и собирает docker-образ.
- Запустить workflow, который запускает контейнер из образа, предварительно удалив существующий контейнер. В случае ошибки запуска нового контейнера, workflow запустит старый контейнер из прошлой рабочей версии. Если прошлая версия не запустилась, будет оправлено emergency оповещение.