Динамические конфигурации AppEngine с использованием Gradle, часть 1

При работе с приложениями AppEngine нам часто приходится работать с файлами конфигурации, такими как appengine-web.xml, cron.xml, dispatch.xml и т.д. , альфа и производство.

Проблема в том, что нам нужны разные конфигурации для каждой из этих сред, например,

  • В cron.xml нам нужны разные конфигурации для планирования заданий в зависимости от среды. Пример: запланируйте выполнение задания один раз в два часа в стадии подготовки и каждые 15 минут в производственной среде.
  • В dispatch.xml нам нужно настроить разные правила маршрутизации в зависимости от стадии подготовки, производства и т. Д.

Точно так же у нас может быть несколько причин иметь разные конфигурации для каждой среды. В этой серии статей мы собираемся изучить, как настроить эти конфигурации для каждой среды с помощью Gradle. Давайте начнем.

Примечание. Если вы хотите узнать больше о том, как настроить AppEngine с Gradle, ознакомьтесь с другой моей статьей Многомодульные проекты с AppEngine и Gradle

Конфигурации динамического развертывания

В этой статье мы расскажем, как иметь конфигурацию динамического развертывания для выполнения развертывания appengine.

Когда вы выполняете развертывание appengine (gcloud app deploy) с помощью задачи Gradle appengineDeploy, нам нужна следующая информация для каждой среды:

Добиться этого мы собираемся с помощью Gradle Project Properties.

-P, --project-prop
Задает свойство проекта корневого проекта, например -Pmyprop=myvalue

Итак, мы собираемся передать свойство под названием mode со следующими значениями для различных развертываний среды.

-Pmode=staging для представления промежуточного развертывания
-Pmode=alpha для представления альфа развертывания
-Pmode=live для представления живое развертывание

В зависимости от значения режима мы можем установить разные значения для свойств развертывания, как показано ниже:

Вот что мы делаем,

  • В свойстве gaeVersions мы устанавливаем разные номера версий для каждой целевой среды, эти значения могут быть обновлены, когда нам нужно развернуть до новой версии.
  • В методе getDeployConfig () в зависимости от значения режима мы устанавливаем другой идентификатор проекта, версию и параметры продвижения. По умолчанию он принимает режим staging.

И мы можем вызвать этот метод из раздела конфигурации развертывания appengine, как показано ниже,

Как видите, все конфигурации развертывания задаются с помощью словаря конфигурации, возвращаемого методом getDeployConfig ().

Наконец, теперь мы можем выполнить развертывание в нескольких средах с помощью простой команды Gradle,

Для постановки: gradle appengineDeploy -Pmode=staging

Для альфа: gradle appengineDeploy -Pmode=alpha

Для производства: gradle appengineDeploy -Pmode=live

Если вы используете IntelliJ, вы также можете настроить это как Run Configurations, как показано ниже,

Чтобы увидеть полный пример, ознакомьтесь с демонстрационным приложением на GitHub, Щелкните здесь.

Заключение

Спасибо за чтение, надеюсь, это поможет. В следующих статьях мы рассмотрим, как получить файлы динамической конфигурации в зависимости от среды.

Следите за обновлениями и удачного программирования…

Эта история опубликована в The Startup, крупнейшем предпринимательском издании Medium, за которым следят +388 268 человек.

Подпишитесь, чтобы получать наши главные новости здесь.