Gradle: Задача для развертывания на appengine с тестовой конфигурацией? - PullRequest
0 голосов
/ 07 января 2019

У меня есть простой проект с очень простой конфигурацией Google App Engine:

apply plugin: 'com.google.cloud.tools.appengine'

// ...

appengine {
    deploy {  
        stopPreviousVersion = true 
        promote = true             
        project = 'my-awesome-project'
    }
    run {   
        port = 3000 
    }
}

Это настраивает задачи Gradle ядра приложения, например, appengineDeploy.

То, что я хотел бы сделать, - это создать еще одну задачу gradle с именем appengineDeployTesting, которая выполняет ту же функцию, что и appengineDeploy, за исключением того, что она использует другое имя project (например, my-awesome-project-testing).

В конечном счете, я хочу закончить двумя задачами:

  • appengineDeploy для развертывания в производственном экземпляре
  • appengineDeployTesting для развертывания в экземпляре тестирования

Как бы вы сделали это в Gradle? Я знаю, как создать зависимость задачи, но в этом случае требуется нечто большее, чем просто зависимость.

1 Ответ

0 голосов
/ 07 января 2019

Первый вариант

Что ж, если вы хотите изменить только проект, в котором вы развертываете, вы можете выполнить простую проверку условий в Gradle, непосредственно перед строкой appengine { ... }, например:

if (project.hasProperty('testProject')) {
    appengine.deploy.project = "my-awesome-project"
}else{
    appengine.deploy.project = "main-project"
}

Не забудьте удалить тег «проект» внутри поля «appengine.deploy», чтобы не перезаписывать имя проекта, например:

appengine {
    deploy {
        stopPreviousVersion = true
        promote = true
    }
}

Чтобы развернуть приложение в своем тестовом проекте, вы можете просто добавить флаг:

gradle appengineDeploy -PnewProject

А для развертывания в основном проекте просто удалите его:

gradle appengineDeploy

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

Второй вариант

Чтобы избежать использования флагов, вы можете добавить следующий код в файл build.gradle после структуры appengine {...}:

task appengineDeployTesting {
        doLast{
                appengine.deploy.project = "my-awesome-project"
        }
}

appengineDeployTesting.finalizedBy appengineDeploy

Затем выполните команду:

gradle appengineDeployTesting

Сначала запустит задачу appengineDeployTesting, а после завершения установит имя нового проекта и запустит задачу appengineDeploy для развертывания.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...