一尘不染

在CI环境中更改应用程序配置的最佳方法是什么

jenkins

我目前正在Jenkins管道上进行POC,以弄清楚如何在CI环境中配置我的产品。管道的要求是:

  1. SVN的签出代码
  2. 编译程序
  3. 部署到服务器上的预定义位置
  4. 更改数据库配置(甚至可能尚未识别其他配置)以指向适当的数据库
  5. 执行程序
  6. 执行质量检查流程以验证输出

我目前难以达到上述第4点。每个程序的所有与DB相关的配置都驻留在database.xml文件中,并且一个程序可以连接到1个或多个DB。

鉴于开发人员可以自由签入任何数据库配置,我仍然希望我的CI环境指向要测试的预定义数据库。我不确定如何动态更改这些配置文件以实现此目的。

请让我知道其他人是否也使用了相同的标准方法来达到相同的效果。

TIA


阅读 268

收藏
2020-07-25

共1个答案

一尘不染

一些方法:

使用高级平台的属性

使用一些网络平台,例如:

使用这种方法,当需要更改配置时,您只需要更新系统中的值并重新启动应用程序即可。甚至有可能在Java应用程序中进行热重装。

环境变量的属性

您可以在启动应用程序之前将key:value属性导出为环境变量:

export DATABASE_HOST=10.100.200.300
export LOG_DIR_LOCATION=/logs

在应用程序启动后阅读:

Java >> System.getEnv("DATABASE_HOST"); 
node.js >> process.evn.LOG_DIR_LOCATION
php >> getenv('DATABASE_HOST')

来自SCM的属性

  • 创建一些称为 开发配置的* svn存储库 *
  • 上载具有开发值的database.xml
  • 在您的应用程序中,放置一个带有虚拟值的database.xml:localhost等
  • 创建一个詹金斯工作,并将 环境 作为参数。
  • 在同一作业中,下载应用程序的svn源代码。
  • 下载名为 $ environment-configurations的 svn存储库。 $ environment 将是您的论点
  • $ environment-configurations 存储库的database.xml替换应用程序内部的database.xml 。
  • 只需创建另一个存储库即可进行测试,测试和生产。作业必须以接收环境作为选择正确数据库的参数。

数据库中的属性

修改您的应用程序以从某些数据库而不是xml文件读取配置

文件系统的属性

修改您的应用程序以读取一个外部database.xml而不是源代码内部的database.xml。使用这种方法,您只需要将database.xml放在服务器的某个路径中,然后将其从应用程序源代码中删除。

2020-07-25