2016-03-15 149 views
0

我对Spring应用程序(Maven)有以下部署管道。Spring应用程序Jenkins部署环境

建设 - >开发 - > TST - > PROD

战争文件是建立在第一个步骤,然后复制到每个环境。我现在面临的问题是我需要不同环境的不同属性。我创建了以下属性文件:

  • application-dev.properties
  • application-int.properties
  • application-prod.properties

什么是自动分配正确的最佳实践环境到每个部署步骤,以便自动选择每个环境的相应属性文件。

对于本地测试,我使用了以下内容。但我不知道如何将它转移给詹金斯。

-Drun.jvmArguments =“ - Dspring.profiles.active =” INT“

回答

1

最好的办法是遵循12 FActor App原则,其中所有的属性都通过环境变量传递到您的应用程序,将符合”云本地“应用程序

但是,如果你不想这样做,你可以按照你所描述的方式来使用它。 WAR文件,它非常不灵活,因为随着一些环境属性的变化,您需要启动新的版本 - >新版本

这种方法最大的问题是它不能缩放。在云环境中,您可能想要拥有许多不同配置的不同PROD环境。如果您的WAR工件锁定配置与单个配置文件,您只有一个PROD配置。

某些部署系统以配置文件占位符的方式工作,并在部署期间替换这些占位符。因此,您可以拥有一个PROD配置文件,但部署管道将使用不同PROD节点的值替换占位符。

0

,我认为有以下几个选项:
如果您坚持使用相同的构建战争的所有环境中,您可以添加一个Global MAVEN_OPTS:在詹金斯进入主菜单Manage Jenkins->Configure System和尝试设置Global MAVEN_OPTS有: -Dspring.profiles.active=int

另一种选择应该是使用Maven Profile在Jenkins中用相应的属性文件构建特定的战争。因此,在您的Jenkins作业配置中,在构建步骤中添加goals and options maven命令(对于clean install –Pint,其中“int”是Jenkins的Maven配置文件ID

相关问题