配置存储库扩展

GoCD支持从16.7开始编写配置插件。

这是一个功能,允许您将管道配置从GoCD及其cruise-config.xml文件移出到一个或多个源控制存储库(例如git),以便您可以在外部修改它们。 GoCD服务器中的周期性轮询器会看到这种修改,它会将这些管道配置合并到其在主配置XML文件中找到的管道中。

配置插件允许用户在GoCD支持的所有版本控制系统中保留流水线和环境配置。配置存储库支持XML中可用的管道和环境的大多数元素。但是,有一些例外, 您不能在配置存储库中使用:

  • GoCD管道模板,也不参考模板。请注意,您可以编写一个支持所需流水线模板的插件
  • 参数

配置存储的格式完全由插件控制,因此管道和环境可以存储在JSON,YAML,XML,点文件或任何可以存储必要信息的约定中。

使用配置库时涉及一定的限制:

  • 使用UI编辑远程管道或环境是不可能的
  • 通过UI定义的元素不能引用外部元素。 另一种方式是可能的。
  • 管道模板和参数不受支持

合并配置

GoCD服务器轮询来自管道和用户定义的配置存储库的所有材料。 最终的服务器配置从cruise-config.xml和存储库中的远程元素进行合并。 注意存储库中引入的错误非常重要。 强烈建议在GoCD报告它们时立即消除任何错误。 对于配置存储库来说,唯一的办法就是将更改推送到有缺陷的存储库。 所有配置错误都显示在服务器健康信息中。 有关在GoCD服务器中处理配置库错误的更多细节

合并管道组

管道在组中的成员资格可以在许多配置存储库和cruise-config.xml中定义。 例如。 组project1可以分布在许多配置库中,最后在Go服务器中,所有这些管道将显示在一个组project1中。

合并环境

与管道组类似,环境的最终成员是其中的元素总和 所有配置存储库。 例如。

  • 在存储库A中,我们可以定义pipeline1是环境development的成员
  • 在存储库B中,我们可以定义pipeline2pipeline3是环境development的成员
  • 在存储库C中,我们可以定义pipeline3是环境development的成员

然后在GoCD服务器中,环境development中的最后一个管道是pipeline1pipeline2pipeline3。 请注意,pipeline3在环境development中的成员资格被宣布了两次。

代理使用同样的方法。

环境变量有额外的检查。 如果您为两个不同的值分配相同的环境变量,则会将其视为配置合并冲突。

配置库中的错误

由于配置库中的错误,有几种方法可以使当前配置无效。

配置库插件错误

问题最少的情况是当插件或扩展点检测到远程配置部件单独存在问题。 然后Go不会尝试合并此配置存储库,并且以前的配置部件保持活动状态。 您应该修复由GoCD服务器运行状况消息报告的错误,以便查看该配置库中的任何新更改。 如果你没有修复这种错误,那么除了旧的配置之外,没有其他的后果。 这种类型的许多错误可以同时存在 - 这种方式可能会有许多无效的存储库。

无效的合并配置错误

在某些情况下,无法从配置存储库和主GoCD配置创建合并配置。然后服务器运行状况消息报告无效的合并配置

导致此错误的常见情况是:

  • 通过UI(在cruise-config.xml中)和配置存储库的配置都可以配置管道。
  • 许多配置存储库中声明了具有相同名称的管道。
  • 其中一条管道是指不存在的管道。或者更一般地说,一些配置元素是指其他不存在的元素。
  • 插件或扩展点在远程配置部件上没有足够的验证。这会导致服务器从无效的部分装配合并的配置。

Go服务器如何处理这种类型的错误有限制

  1. GoCD可以处理当仅有一个存储库中存在错误时的情况。在修正错误之前,您不会看到从无效存储库中进行的新配置更改。其他配置存储库和对Config XML的编辑将可用。您应该修复无效的合并配置,以避免出现下一种情况...
  2. 2个或者以上配置存储库无效时,您可能开始遇到被锁定的情况,无法通过UI进行编辑配置。 XML的更改将被拒绝。这个原因超出了本文的范围。您必须先修复所有配置存储库

    参考

  3. 配置存储库简介

  4. Github问题,包括Go应该如何表现的长时间辩论
  5. JSON示例配置库
  6. YAML中的示例配置存储库

results matching ""

    No results matching ""