我们有一个maven Mule ESB应用程序,遵循此Mule推荐的部署到多个环境的标准。
https://docs.mulesoft.com/mule-user-guide/v/3.7/deploying-to-multiple-environments
如何在相同环境中部署相同版本但使用不同配置?
真实世界问题:我没有另外的mule许可证(当前价格为9000美元)来运行我的Jenkins测试,因此我需要一种方法来告诉第二个实例使用jenkins-override.properties文件。
任何想法?
我尝试过的事情:
搜索网络,没有运气
考虑在app.zip名称中命名实例。像这样<app_name>-<version><instance_name>.zip
并以编程方式提取instance_name并查找该环境实例名称。
我的maven命令目前是:
mvn package -DargLine="-DmyEnv=qa"
(只是-DmyEnv = qa由于某种原因不起作用,但这是另一个问题)
答案 0 :(得分:1)
如果您遵循documentation中的指南,您的应用程序将包含多个属性文件,其名称中包含“环境”标识符。例如,config-production.properties
,config-qa.properties
和config-development.properties
。如果您的目标是根据运行时环境选择要使用的相应属性,那么您可以使用几个选项。
您的问题意味着您正在使用maven filtering在构建时将${mule.env}
占位符替换为给定环境。虽然这有效,但这意味着您部署的应用程序将选择相同的属性,无论其部署的环境如何。
另一种选择是使用JVM system properties或环境变量。 Spring(加载这些文件的机制)可以使用java进程启动时提供的值自动替换占位符。
实现此目的的一种方法是使用mule.env
提供JVM系统属性$MULE_HOME/conf/wrapper.conf
。只需添加类似于以下内容的行。
wrapper.java.additional.6=-Dmule.env=dev
请务必阅读有关标记为*** IMPORTANT ***
的其他属性和编号的评论。
这样,您可以使用不同的环境配置每个实例,例如“production”和“ci”,并将相同的应用程序zip文件部署到两者。
答案 1 :(得分:0)
只有在配置Maven构建时,运行maven才会使用myEnv为所选环境配置属性文件。但是这会产生使用不同打包应用程序的问题。 您可以做的是使应用程序查找其中包含应用程序名称的属性文件。像$ {app.name} .env.properties这样的东西,当然你需要使用原始名称和不同的名称部署应用程序。
答案 2 :(得分:0)
让我理解你的问题。
你有一个名为app.zip的mule应用程序,其属性如下: prop1 = 100
现在,您需要使用自己的设置部署几个app.zip的内容:
app_1.zip
prop1 = 100
app_2.zip
prop1 = 200
app_3.zip
prop1 = 300
这是你的要求吗?
如果是,MAVEN可以解决此要求。
如果不是,我认为有一个队列和解耦你的界限的解决方案可能有效。
我等待您的回复,如果您愿意,我可以为您提供maven或队列基本配置示例的示例配置。
问候。