Configuration 应用程序集中配置管理系统如何?

Configuration 应用程序集中配置管理系统如何?,configuration,configuration-management,Configuration,Configuration Management,我们有一个构建管道来管理工件的生命周期。管线由四个阶段组成: 1.commit(runing unit/ingetration tests) 2.at(deploy artifact to at environment and runn automated acceptance tests) 3.uat(deploy artifact to uat environment and run manual acceptance tests) 4.pt(deploy to pt environmen

我们有一个构建管道来管理工件的生命周期。管线由四个阶段组成:

1.commit(runing unit/ingetration tests) 2.at(deploy artifact to at environment and runn automated acceptance tests) 3.uat(deploy artifact to uat environment and run manual acceptance tests) 4.pt(deploy to pt environment and run performance tests) 5.//TODO we're trying to support the production environment. 1.提交(运行单元/单元测试) 2.at(将工件部署到at环境并运行自动验收测试) 3.uat(将工件部署到uat环境并运行手动验收测试) 4.pt(部署到pt环境并运行性能测试) 5//待办事项我们正在努力支持生产环境。 管道支持环境变量,因此我们可以通过使用选项触发来部署具有不同配置的工件。问题是有时配置项太多,使得部署脚本包含太多替换任务

我有一个想法,就是构建一个集中式配置管理系统(ccm,简称),这样我们就可以在那里维护配置项,并且在部署脚本中只留下一个url(连接到ccm)替换任务(处理不同阶段)。因此,工件不保存配置值,它向ccm请求配置值

这是可行的还是一个坏主意


我担心的是,此解决方案无法解决配置键(在工件中定义)和值(在ccm中设置)之间的潜在不匹配问题,甚至可能更糟。

配置文件应保留在项目中,或在运行时设置为配置变量。这背后的原因是,您在体系结构中添加了一个新的故障点,您必须考虑到您的配置服务器可能会崩溃,从而破坏依赖它的一切。
我建议你不要把自己置身于这种情况

为一个项目定义一长串的环境变量是没有问题的,而且这甚至意味着你做的事情是正确的


如果出于某种原因,您发现自己经常更改配置文件(例如数据库连接字符串、api EDNPOINT等),那么问题可能是需要更改很多配置,而这些配置应该始终保持不变。

我同意故障点的说法。谢谢你提醒我。但是如果工件包含配置值和配置密钥,那么在升级时使用整个新工件来替换旧工件并不容易,因为我们必须重新配置所有配置值,即使它们没有更改。你使用的是什么堆栈?还有,我没有明白你的意思,让我举个例子看看是否合适:假设你必须更改一个数据库url,你去更改conf文件中相应键的值,对吗?我错过什么了吗?考虑使用这些附加信息更新您的答案。通常,各种环境的配置文件都在版本控制之下,所以每个人都有它们,也可以根据环境在文件中进行拆分,例如,如果您有DEV环境,您将拥有一个DEV文件,该文件将保存它的所有配置值,构建系统将负责将其包括在战争中。我想让它保留一段时间(以获取更多想法):P和我提出了一个新问题,以获取有关您答案的更多详细信息。这里是链接