deploy-beta v0.0.4
@yandex-int/frontend.ci.deploy
Пакет для деплоя сервисов в beta и production окружения и удаления beta-окружений.
Как подключить в сервис
Не нужно устанавливать библиотеку в сервис, так как она находится в корневых зависимостях понорепозиториях.
В сервисе нужно создать файл по пути .config/deploy/config.json
. Формат конфига следующий:
{
"type": "report-renderer" | "qloud" | "ydeploy" | "whatever",
"beta": {}, // конфиг для beta-окружения
"release": {} // конфиг для production-окружения
}
Типы конфигов уникальны для окружений и описаны в документации про деплой этих окружений.
Также возможно использовать *.js файлы для конфига. Обязательно module.exports = { ... }
- этот объект должен быть идентичен формату конфига
Поддерживаемые окружения
Режимы деплоя (YENV)
При запуске frontend-deploy deploy
(и remove
тоже) необходимо установить переменную окружения YENV
. Поддерживаются значения testing
или production
. Они влияют на то, какая часть конфига (beta
или release
) будет прочитана, и какой скрипт будет выполнен.
Запуск YENV=testing frontend-deploy deploy
подходит для сборки пулреквестов в трендбоксе. В пути к бетам (report-renderer
, qloud
) используется номер пулреквеста (из переменной окружения TRENDBOX_PULL_REQUEST_NUMBER
).
Как добавить свой скрипт деплоя
Разработка скриптов ведется в директории deploy-scripts.
1. Нужно создать поддиректорию с названием нового типа деплоя (YDeploy, т.д.)
2. В deploy-scripts/types.ts
в DeployTypes
добавить этот новый тип деплоя.
- Создать директорию
deploy-scripts/{deployEnv}
. В ней нужно написать скрипты деплоя и тайпинги для конфига. В директории нового способа деплоя описать тайпинги для конфига и сами скрипты деплоя. При написании скрипта деплоя нужно отнаследоваться от класса DeployScript и переопределить четыре методаgetConfigType
- по типу из этого метода будет определено - запускать ваш скрипт или нет.deployBeta
- реализация скрипта деплоя в beta-окружениеremoveBeta
- реализация скрипта удаления beta-окруженияdeployRelease
- реализация скрипта деплоя в production-окружение
При написании тайпинга конфига нужно определить 3 поля в типе:
- `type` - окружение для деплоя (`qloud`, `report-renderer`, т.д.)
- `beta` - тип конфига для beta-окружений
- `release` - тип конфига для production-окружений
- В deploy-scripts/index.ts добавить созданные классы в нужные массивы и дополнить тип
DeployConfig
своим типом конфига через|
:type DeployConfig = RRConfig | QloudConfig | NewConfig
- В deploy-scripts/index.ts импортировать созданный скрипт и добавить в массив скриптов, которые возможны для запуска