Как динамически установить свойство appengine gradle - PullRequest
0 голосов
/ 12 июня 2019

Как создать задачу, которая динамически устанавливает идентификатор проекта ядра приложения и запустить задачу appengineDeploy?

В этом примере, когда я запускаю deployStaging appengineDeploy выполняется с проектом 'a', как я могу переписать этот код, чтобы он работал с проектом 'b'?

buildscript {
    dependencies {
        classpath("com.google.cloud.tools:appengine-gradle-plugin:2.0.1")
    }
}
apply plugin: 'com.google.cloud.tools.appengine'

def gcpProject = 'a'

appengine {
    deploy {
        projectId = gcpProject
    }
}

task deployStaging() {
    doLast {
        gcpProject = 'b'
    }
}
deployStaging.finalizedBy appengineDeploy

Ответы [ 2 ]

0 голосов
/ 24 июня 2019

Ответ, предоставленный людьми плагина gradle:

appengine {
  deploy {
     version = "123"
     // do not define projectId here
  }
}

task deployStaging {
  dependsOn appengineDeploy
}
task deployProduction {
  dependsOn appengineDeploy
}

// here's the weird gradle logic, use at your own risk
if (project.gradle.startParameter.taskNames.contains("deployStaging")) {
  appengine.deploy.projectId = "potato-stage"
}
else if(project.gradle.startParameter.taskNames.contains("deployProduction")) {
  appengine.deploy.projectId = "tomato-prod"
}
0 голосов
/ 12 июня 2019

Как насчет использования свойства проекта вместо этого?Свойства проекта могут быть переданы через -P параметры командной строки:

buildscript {
    dependencies {
        classpath("com.google.cloud.tools:appengine-gradle-plugin:2.0.1")
    }
}
apply plugin: 'com.google.cloud.tools.appengine'

def gcpProject = project.findProperty('stageName') ?: 'a'

appengine {
    deploy {
        projectId = gcpProject
    }
}

Теперь, если вы просто вызовете ./gradlew appengineDeploy, переменная gcpProject будет иметь значение 'a'.Если вы вызываете ./gradlew appengineDeploy -PstageName=b, переменная gcpProject будет иметь значение 'b'.

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