我的小组正在使用Jenkins构建Spring Boot应用程序并将其部署到AWS(Elastic Beanstalk)。
对于开发,我通过在application.properties中设置spring.profiles.active
属性来为我所在的环境(DEV,QA)选择所需的配置文件。
但是dev-ops希望在外部设置属性。由于应用程序正在部署到SpotInst托管的EC2,因此我无法控制环境。
我一直在做很多搜索,但还没有遇到任何适合这种情况的事情。
我正在使用Gradle进行构建。构建生成一个WAR文件并部署到Tomcat。
无论如何,通过某种参数替换来实现这一目标吗?
感谢。
答案 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的默认值,而对于您可以控制的所有其他目的,您可以将其作为参数传递。