预配置 Jenkins 的标准方法是什么?



我有大量的预配置,我想为 Jenkins 自动化。 例如,为 gerrit 触发器插件预配置 gerrit,预配置 saml、库等

我知道有两种通常用于执行类似任务的方法:

  • 配置即代码插件 + yaml 配置
  • 在 Jenkins 启动时从 jenkins home 的 init.groovy.d 目录执行的 Groovy 脚本

我的用户希望能够从 UI 更新 Jenkins 配置而无需更新 yaml,这表明配置即代码插件不适合我们的目的,因为我相信它会在 Jenkins 容器重新启动时重新应用配置。

我的预感是使用时髦的脚本,这些脚本在第一次执行后会自行删除,这样它们就不会在重新启动时重新应用自己。

有没有更标准的方法来预配置 Jenkins? 还是Groovy是我最好的选择?

TL;DR:使用文件系统

为什么?没有"标准"的方式来实现您的意图;您建议的两种方法肯定是可行的选择。

但是,从操作的角度来看,最好选择一种解决方案:

  1. 通用(因此它可以涵盖 Jenkins 配置的所有方面(和
  2. 使用"简单">

现在

  • "配置即代码"使您依赖于相应的插件 - 它可能支持也可能不支持特定的配置选项
  • 对于 groovy,有时很难找到如何设置 Jenkins 配置选项(以及如何永久存储设置(。

由于所有 Jenkins 配置数据都存储在磁盘上,因此使用定义明确的配置引导 Jenkins 的另一个选择是立即用适当的内容预填充这些配置文件

  • 您可以确定这适用于所有情况,包括所有边界情况(如机密/加密数据(
  • 用户可以稍后根据需要更改数据
  • 通常,很容易找到正确的配置文件

不利的一面是,存在配置文件格式可能会随着较新版本的核心或某些插件而更改的风险。但是,您建议的另外两个解决方案也存在类似的风险。

提示:要推出此类预配置的 Jenkins 安装程序,通过将jenkins.install.runSetupWizard设置为false来禁用 Jenkins 安装程序向导会很有帮助。

当你组合这样的词时:预配置 Jenkins、init.groovy.d、jenkins home、jenkins startup 等,听起来令人困惑o_O

当 Jenkins 准备好使用时,普通人只需要创建工作或管道。如果需要创建作业或管道,只需安装和配置一些插件即可。他们中很少有人需要时髦,因为目标是"易于使用"。

高级用户能够使用java创建自己的插件。但几乎所有都可以作为插件使用。

可以在管道脚本或声明性管道中使用 groovy。

因此,如果您的问题更像是"创建和配置作业或管道的最佳方式是什么",我可以建议您:

  • 尽量使用管道脚本或声明性管道。
  • 仅使用经过验证和支持的插件。
  • 停止硬盘驱动器中的调用外壳脚本。
  • 停止使用复杂的配置。几乎所有的需求都已实现并记录在案。
  • 如果你有一个需求,但似乎没有人能帮助你,请在stackoverflow中询问,或者开发你自己的专注于可配置性的插件,这样你就可以发布它,以造福Jenkins社区。

相关内容

最新更新