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

问题描述 投票:0回答:1

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

  1. 来自SVN的结账代码
  2. 编译程序
  3. 部署到服务器上的预定义位置
  4. 更改数据库配置(甚至可能还有其他尚未识别的配置)以指向相应的数据库
  5. 执行程序
  6. 执行QA过程以验证输出

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

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

如果有其他人也使用标准方法来实现相同目的,请告诉我。

TIA

jenkins continuous-integration jenkins-pipeline
1个回答
1
投票

一些方法:

Properties using Advanced Platforms

使用一些网络平台,如:

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

Properties from Environment variables

您可以在启动应用程序之前将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')

Properties from SCM

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

Properties from Database

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

Properties from File System

修改应用程序以读取外部database.xml而不是源代码中的database.xml。使用此方法,您只需将database.xml放在服务器的某个路径中,并从应用程序源代码中删除它。

Note

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

Devops Variable Substitution for Frontend js applications

© www.soinside.com 2019 - 2024. All rights reserved.