cloud foundry
在与两个同事(感谢Mark Alston和Dave Malone !)一起使用自动Jenkins管道部署Cloud Foundry应用程序的过程中,我决定尝试编写Gradle插件来执行一些通常需要完成的任务使用命令行Cloud Foundry Client完成 。
引入一个完全虚幻的名称为“ ya-cf-app-gradle-plugin”的一组gradle任务(敢说我敢说!),这应该有助于自动化将Java应用程序部署到Cloud Foundry环境中涉及的一些常规步骤。 “ ya”或另一部分是因为这只是一个替代插件,Cloud Foundry的权威插件最终将驻留在出色的CF-Java-Client项目中。
我已经提供了带有项目文档的广泛自述文件,该文件应该有助于使用插件入门,如果您以前使用过CF cli,则任务应该非常直观。
举例来说,将gradle插件干净地添加到构建脚本中后,通过运行“ ./gradlew task”命令列出以下gradle任务即可:
所有任务均以构建脚本中cfConfig块中提供的以下方式进行配置:
apply plugin: 'cf-app'cfConfig {//CF DetailsccHost = "api.local.pcfdev.io"ccUser = "admin"ccPassword = "admin"org = "pcfdev-org"space = "pcfdev-space"//App Detailsname = "cf-show-env"hostName = "cf-show-env"filePath = "build/libs/cf-show-env-0.1.2-SNAPSHOT.jar"path = ""domain = "local.pcfdev.io"instances = 2memory = 512//Env and servicesbuildpack = "https://github.com/cloudfoundry/java-buildpack.git"environment = ["JAVA_OPTS": "-Djava.security.egd=file:/dev/./urandom", "SPRING_PROFILES_ACTIVE": "cloud"]services = ["mydb"]
}
以这种方式提供的基本配置之上的任何替代都可以通过使用“ cf. *”模式指定gradle属性来完成。 例如。 正常推送应用程序将如下所示:
./gradlew cf-push
带有应用程序名称和覆盖的主机名的推送将如下所示:
./gradlew cf-push -Pcf.name=Green -Pcf.hostName=demo-time-temp
所有任务均遵循完全相同的模式,具体取决于cfConfig块作为权威的属性源以及命令行覆盖。 在CloudFoundry中有一项任务可用于检索应用程序的某些详细信息,该任务为“ cf-get-app-detail”,例如,在部署了应用程序的Canary实例后,您想运行快速测试针对它,任务将遵循以下原则,一旦成功调用,将使用应用程序详细信息填充结构“ project.cfConfig”:
task acceptanceTest(type: Test, dependsOn: "cf-get-app-detail") {doFirst() {systemProperty "url", "https://${project.cfConfig.applicationDetail.urls[0]}"}useJUnit {includeCategories 'test.AcceptanceTest'}
}
参考文献:
1.该插件基于出色的CF-Java-Client项目构建
2.我从gradle-cf-plugin借鉴了很多想法,但是或多或少是一个无尘室的实现
3.这是一个使用插件的示例项目 。
翻译自: https://www.javacodegeeks.com/2016/07/introducing-yet-another-cloud-foundry-gradle-plugin.html
cloud foundry