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

时间:2018-07-10 12:24:52

标签: jenkins continuous-integration jenkins-pipeline

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

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

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

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

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

TIA

1 个答案:

答案 0 :(得分:1)

一些方法:

使用高级平台的属性

使用一些Web平台,如:

使用这种方法,当需要更改配置时,您只需要更新系统中的值并重新启动应用程序即可。甚至有可能在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的属性

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

数据库属性

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

文件系统的属性

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

注意

您不仅可以将这些方法用于后端应用程序。您可以将它们用于前端应用程序:

Devops Variable Substitution for Frontend js applications