Jenkins选择Spring Boot配置文件的任何方式?

时间:2018-06-12 22:14:54

标签: amazon-web-services spring-boot jenkins gradle

我的小组正在使用Jenkins构建Spring Boot应用程序并将其部署到AWS(Elastic Beanstalk)。

对于开发,我通过在application.properties中设置spring.profiles.active属性来为我所在的环境(DEV,QA)选择所需的配置文件。

但是dev-ops希望在外部设置属性。由于应用程序正在部署到SpotInst托管的EC2,因此我无法控制环境。

我一直在做很多搜索,但还没有遇到任何适合这种情况的事情。

我正在使用Gradle进行构建。构建生成一个WAR文件并部署到Tomcat。

无论如何,通过某种参数替换来实现这一目标吗?

感谢。

2 个答案:

答案 0 :(得分:1)

我们的devOps人员发现我们可以通过AWS Beanstalk设置环境属性。通过转到beanstalk实例上的配置并单击 Software 下的Modify按钮,向下滚动,有一个环境变量部分。他把 spring.profiles.active = qa 放进去处理它。

由于每个单独的环境都有一个beanstalk,因此只需为每个环境设置一次。

答案 1 :(得分:0)

我不确定这是否适合您的devOps流程,但实现这一目标非常简单明了。

配置您的application.yaml文件,如下所示:

spring:
  profiles: 
    active: ${SPRING_PROFILE:"dev"}

在启动应用程序时,将此参数SPRING_PROFILE作为命令行参数传递。请注意,dev是默认值,如果程序没有找到任何匹配的命令行参数或环境变量,将使用该值。

您可以将默认值设置为您要用于devOps的默认值,而对于您可以控制的所有其他目的,您可以将其作为参数传递。