Spring Boot Jenkins CD/CI在部署前更改配置文件



我有一个Spring Boot Web应用程序,需要使用Jenkins将其部署到Tomcat。

我已经设置好了管道,部署也很顺利。

但是,我的应用程序中有两个配置文件。一个用于开发,另一个用于生产。某些属性(如DB URL等)对于这些配置文件中的每一个都是不同的。

因此,我在src/main/resources中有两个属性文件,如下所示:

application-dev.properties
application-prod.properties

此外,我在同一目录中有另一个application.properties,它只有一个属性(活动配置文件的属性)

spring.profiles.active=dev

现在,当我在Eclipse中运行这个程序时,一切都很顺利。即使Jenkins将WAR部署到tomcat,除了一个问题之外,一切都很好。在部署到Tomcat之前,我无法将spring.profiles.active的值更改为prod

目前,我的SVN已使用spring.profiles.active = prod提交了application.properties文件

当有人签出代码并在本地环境中工作时,他们会将其更改为"dev"并继续工作,而他们只是不将此更改提交给SVN。这是我遵循的临时解决方法,我觉得可以用更有效的方式来完成。

如何在不修改application.properties文件的情况下拥有相同的WAR文件并更改配置文件?这能在詹金斯完成吗?或者我应该去别的地方看看??

谢谢,Sriram Sridharan

第一步是从属性文件中删除硬编码的配置文件名称,然后您可以通过设置SPRING_PROFILES_ACTIVE=dev。与在属性文件中设置spring.profiles.active=dev相同。

如果您使用的是spring引导应用程序,那么在运行应用程序之前,u应该提供-Dspring.profiles.active=prod。默认情况下,spring环境变量会覆盖属性文件中的配置。但我同意yogesh给出的答案,即配置文件不应该在应用程序中进行硬编码。

现在,当开发人员检查代码时,他们还可以在eclipse或intellij运行配置中提供-Dspring.profiles.acitve=dev作为参数。

这是eclipse/intellij中的一次配置更改,效果非常好。我们正在我们的项目中使用它,它真的很有帮助。

最新更新