返回博客

Jenkins 只读配置

Tim Jacomb
Tim Jacomb
2020 年 5 月 25 日

我很高兴地宣布,“只读”Jenkins 功能现已可供预览。此功能允许限制配置 UI 和 API,同时通过 Web UI 提供对基本 Jenkins 系统配置、诊断和自我监控工具的访问。这种模式对于以代码形式管理的实例至关重要,例如使用 Jenkins Configuration-as-Code 插件。它是 JEP-224: Readonly system configuration 工作的一部分。

您至少需要使用 Jenkins 2.238 版本才能获得本文中提到的所有功能。

只读 Jenkins 目前允许用户访问

  • 作业配置

  • 系统配置

  • 插件管理器

  • 系统日志

  • 云配置

  • 代理配置

  • 代理日志

有关更多计划的集成,请参阅 JENKINS-12548 epic。

只读 Jenkins 分为三个权限

  • Job/ExtendedRead - 作业配置的只读访问权限

    • 该功能自 2009 年就已存在,但 UI 没有任何指示用户无法编辑作业配置页面的提示。现在已将其适配到新的只读引擎。

  • Agent/ExtendedRead - 代理配置的只读访问权限

    • 该功能自 2013 年就已存在,但它未被记录,并且只允许访问 API 而没有 UI

    • UI 支持已在 Jenkins 2.238 中添加

  • Overall/SystemRead - Jenkins 系统配置的只读访问权限。这对于以代码形式管理的 Jenkins 实例非常有用,例如借助 Jenkins Configuration as Code Plugin

您可以根据需要选择性地授予权限。

我为什么需要这个?

鉴于 Configuration-as-Code 插件的兴起,许多 Jenkins 实例完全以代码形式管理,这意味着不允许通过 UI 进行任何更改。

问题在于,您不知道何时有新的插件版本可用,并且要查看插件还有哪些可用的配置选项,目前需要“Administer”权限。

对系统管理信息的只读访问允许非管理员用户更轻松地调试构建问题。例如,在构建中遇到“Jenkins”错误消息时,用户可以检查

  1. 已安装的插件

  2. 插件版本

这可以允许用户自己解决问题,并使他们更容易直接向维护者报告插件问题。

我能期待什么?

所有内置的 UI 控件都已适配,以清楚地区分可编辑控件和您无权编辑的控件

可编辑

build discarder edit

不可编辑

build discarder read

注意:还有其他控件,例如凭据和 pipeline 插件中的控件尚未更新。

操作按钮(例如“保存”和“应用”)在大多数情况下已被隐藏。

关于只读配置的工作将继续进行。一些插件需要添加支持,并且某些控件可以进行一些改进以更好地渲染。

我该如何使用它?

这些权限目前处于 beta 阶段,暂时默认禁用。您可以通过安装 Extended read permission plugin v3.2 或更高版本来启用它们。

然后,您需要根据您的用例为用户/组添加以下权限

  • Overall/SystemRead

  • Job/ExtendedRead

  • Agent/ExtendedRead

注意:您还需要设置 Overall/Read 和 Job/Read 权限。您可能需要考虑创建一个包含所需权限的角色。

jenkins:
  authorizationStrategy:
    folderBased:
      globalRoles:
        - name: "admin"
          permissions:
            - id: "Overall/Administer"
          sids:
            - "admin"
        - name: "global read"
          permissions:
            - id: "Agent/ExtendedRead"
            - id: "Overall/SystemRead"
            - id: "Overall/Read"
            - id: "Job/Read"
            - id: "Job/ExtendedRead"
          sids:
            - "reader"

我看不到我认为应该允许的配置

Jenkins 本身的大部分内容已更新以支持只读 Jenkins,但大多数插件尚未支持。请在插件问题跟踪器上创建一个增强功能问题。如果插件使用 Jira 来跟踪问题,则可以将其添加到 JENKINS-12548 epic 中。

我如何更新我的插件以支持它?

请参阅开发者文档中的 Read only view 部分。

下一步

在此版本中,我们引入了一项基础功能,该功能已在所有关键 Jenkins 核心控件和某些插件中得到支持。仍有许多插件会影响全局配置和诊断,它们仍需要适配以支持新模式。我们将继续致力于此功能及其采用,以便在九月的下一个 LTS 基线提供完整的 Jenkins 管理员用户体验。

系统读取权限是 2020 年 5 月 25-29 日举行的 UI/UX Hackfest 的重点项目。如果您想参与,请查看!

关于作者

Tim Jacomb

Tim Jacomb

Jenkins核心维护者,以及slack、azure-keyvault和configuration-as-code插件的维护者。Tim于2013年开始使用Jenkins,并于2018年成为活跃贡献者。Tim喜欢在“空闲”时间从事开源软件工作。

© . This site is unofficial and not affiliated with The Linux Foundation.