Странная ошибка сборки при развертывании GAE с использованием gradle
До сегодняшнего дня все работало нормально. Насколько я знаю, ничего не изменилось, и теперь я получаю это:
C:\mypath>gradle appengineDeploy
> Configure project :
WARNING: You are a using release candidate 2.0.0-rc1. Behavior of this plugin has changed since 1.3.5. Please see release notes at: https://github.com/GoogleCloudPlatform/app-gradle-plugin.
Missing a feature? Can't get it to work?, please file a bug at: https://github.com/GoogleCloudPlatform/app-gradle-plugin/issues.
> Task :appengineDeploy FAILED
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':appengineDeploy'.
> Deployment version must be defined or configured to read from system state
1. Set appengine.deploy.version = 'my-version'
2. Set appengine.deploy.version = 'GCLOUD_CONFIG' to have gcloud generate a version for you.
3. Using APPENGINE_CONFIG is not allowed for flexible environment projects
* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.
* Get more help at https://help.gradle.org
Deprecated Gradle features were used in this build, making it incompatible with Gradle 5.0.
See https://docs.gradle.org/4.8.1/userguide/command_line_interface.html#sec:command_line_warnings
BUILD FAILED in 6s
8 actionable tasks: 6 executed, 2 up-to-date
Я только что обновил Gradle с версии 4.5.1 до 4.8.1, но та же проблема остается. Я понимаю, что это жалуется на версию приложения, но мне никогда не приходилось об этом говорить, поэтому я думаю, что это связано с некоторым обновлением на стороне Google. Что мне не хватает?
2 ответа
Вы сейчас используете app-gradle-plugin
версия 2.0.0-rc1, как я вижу из вывода вашей консоли, который был выпущен 2 дня назад. В нем есть некоторые изменения, которые разработчики плагина задокументировали.
Как вы можете видеть в журнале изменений этого кандидата от Google, он упоминает об изменениях:
Проект и версия больше не вытягиваются из глобального состояния gcloud по умолчанию. Проект должен быть настроен в build.gradle с использованием свойства deploy.project, пользователи могут использовать специальные ключевые слова для проекта, чтобы указать, что они хотели бы прочитать его из appengine-web.xml (project = "APPENGINE_CONFIG") или из глобального состояния gcloud (project = "GCLOUD_CONFIG"). Версия также настроена таким же образом.
Так что вам просто нужно указать в своем gradle.build
следующие:
appengine {
deploy {
version = "GCLOUD_CONFIG"
project = "GCLOUD_CONFIG"
}
}
Обновление в 2.0.0-rc3 (спасибо @wildcat12 за указание на это) в последней версии 2.0.0-rc3, project
свойство конфигурации изменилось.
Изменен appengine.deploy.project -> appengine.deploy.projectId
Поэтому теперь ваш gradle.build
Конфигурация будет выглядеть так:
appengine {
deploy {
version = "GCLOUD_CONFIG"
projectId = "GCLOUD_CONFIG"
}
}
Если вы используете
classpath 'com.google.cloud.tools:appengine-gradle-plugin:+'
В файле build.gradle вы используете версию-кандидат 2.0.0-rc3. Хорошо работает с последней стабильной версией: 1.3.5.