存储多个环境的Jenkins配置

时间:2015-02-03 23:01:28

标签: git jenkins integration-testing

我的公司使用Jenkins作为集成测试执行程序。

我们的生产和登台环境有多个实例。不同的环境需要非常相似的Jenkins配置,但在定期执行,通知,作业启用等方面略有不同。

目前,我们将Jenkins配置XML存储在Git中,并在重新部署实例时将每个环境修改作为Chef配方的一部分进行修改。

但是,这意味着在不重新部署实例的情况下更新实例的配置非常困难。

在应用每个实例的小修改时,是否有人有最喜欢的机制来跨不同实例共享Jenkins配置?

3 个答案:

答案 0 :(得分:1)

您可以使用

行创建多环境配置文件
hostA:settings.xml:key_1:value_1A
hostB:settings.xml:key_1:value_1B
hostC:settings.xml:key_1:value_1C
hostD:settings.xml:key_1:value_1D

hostA:settings.xml:key_2:value_2A
hostB:settings.xml:key_2:value_2B
hostC:settings.xml:key_2:value_2C
hostD:settings.xml:key_2:value_2D

(上面的布局适用于不需要:for key / values)

在部署脚本中调用post_configure脚本,该脚本将选择正确的主机行并替换xml中的键(键为<key>...</key>)。
post_configure的代码可以用不同的语言编写。

实施例
当所有目标都是Linux,并且每个值的起始和结束标记是1行时,我会使用bash和类似

的代码
grep $(hostname) multi.cfg | while IFS=: read host file key value; do
   sed -i 's/'${key}'/'${value}'/g' ${file}
done

我认为这比为不同系统生成不同的分布更好。

答案 1 :(得分:0)

我最近遇到了gradle-jenkins-plugin,它基本上扩展了Job DSL Plugin,允许在源代码管理中维护作业配置,并通过Gradle将它们应用到Jenkins服务器。这样,您可以轻松地将相同的配置部署到不同的服务器,只需使用DSL进行轻微修改,例如,在Jenkins服务器URL上。

或者,您可以使用新的Workflow Plugin来实现类似的功能。

答案 2 :(得分:0)

一种可能性(未经过我自己测试)是通过Jenkins Remote Access API(ruby)等包装器使用arangamani/jenkins_api_client

这将允许updating jobs远程Jenkins实例,仅修改您需要小变化的参数。