Jun 28, 2023 - 极狐GitLab  
16.1

极狐GitLab 16.1 版本发布

GitLab 16.1 released with all new navigation, GitLab Dedicated General Availability, Kubernetes resource visualization, authentication with Service Accounts and much more!

今天,我们很高兴地宣布极狐GitLab 16.1 正式发布,此次发布带来了全新的导航栏、Kubernetes 资源可视化、服务账号认证等诸多功能更新。

此外,此次发布还有超过 100 项功能改进。以下是此次版本发布的一些重点功能更新详情,请查阅。

极狐GitLab 16.1 主要功能

全新的导航栏体验

极狐GitLab 16.1 发布了全新的导航栏体验。我们默认为所有用户开启此功能体验。要开始的话,可在 UI 界面右上角头像处打开“新导航”开关。

新导航栏的设计用于解决三个关键区域的反馈:极狐GitLab 导航可能让人不知所措,它很难让你从上次停止的地方重新开始,而且你也不能定制化导航栏。

新导航包括了一个精简且改进了的左边导航栏,在这儿你可以:
- 置顶经常访问的项目 - 完全隐藏侧边栏并通过“查看”来重新展示 - 通过新的“您的工作”和“浏览”选项,可以轻松实现上下文切换、搜索以及数据集查看 - 由于顶级菜单项减少,扫描变得更加快速

对于全新的导航栏我们很自豪,而且迫不及待的想要听到你们的想法。可以查看变更清单以及阅读博客来了解导航栏的愿景和设计思路。


在极狐GitLab 中可视化 Kubernetes 资源

如何检查集群中运行的应用程序状态呢?流水线状态和环境页面针对最新部署运行状态的洞察。然而,之前的极狐GitLab 版本中缺乏对于 deployment 的洞察。在极狐GitLab 16.1 中,你可以有一个整体视角来查看 Kubernetes deployment 中的主要资源。

此功能适用于已连接的每一个 Kubernetes 集群。这与你是采用 CI/CD 还是 GitOps 进行工作负载的部署没有任何关系。为了对 Flux 用户进一步改进此功能,在议题 391581中有关于支持环境同步状态展示的提议。


使用服务账号进行认证

有太多非人类用户也可能需要认证的例子。之前,取决于所需的范围,用户可以使用个人的、项目的或群组的访问令牌来满足这个需求。然而,这些令牌都不太理想,由于它们依旧是要么和一个真实用户相关联(比如个人访问令牌),抑或是一个不必要的特权角色(群组和项目访问令牌)。

而服务账号(Service Account)和人类用户不关联,且在范围划分上更细粒度。目前服务账号的创建和管理只能通过 API。关于支持在 UI 界面上进行操作的提议在议题 9965 中。


通过制品页面来管理作业制品

之前,如果你想查看或者管理作业制品,那么你不得不去每个作业的详情页面或者使用 API。现在,你可以通过访问 Build -> Artifacts 中的作业制品页面来查看和管理作业制品。

至少具有 Maintainer 角色的用户还可以通过此页面来删除制品。你可以删除单个的制品,或者通过手动选择项或通过页面顶部的全选选项来同时删除 100 个制品。

通过制品页面来管理作业制品

改进的 CI/CD 变量列表视图

CI/CD 变量是所有流水线中重要的一部分,而且可以在多个地方进行定义,包括在项目或者群组设置中。为了准备更大的改进,来帮助用户在不同层级之间的变量间导航,我们开始改进列表变量的层级布局和可用性。

在极狐GitLab 16.1 中,你将会看到这些改进的第一个迭代版本。我们已经将“Type”和“Options”列合并到了一个新的属性(Attributes)列中,这将能更好的表示这些相关联的属性。

改进的 CI/CD 变量列表视图

极狐GitLab 16.1 其他功能

个人访问令牌 `last_used` 数值更新的更频繁了

之前,个人访问令牌的 last_used 值,其更新频率是每隔 24 小时。现在更新为每隔 10 分钟。这增加了 PAT 的可见性,以防 PAT 被篡改,从而减低了风险,因为在发生恶意事件之前的时间变得更少了。

感谢 Jacob Torrey 的贡献。

在已完成的 GitHub 项目导入信息中增加更多详情

当 GitHub 项目导入完成时,极狐GitLab 会展示一个简单的导入条目总结。然而,极狐GitLab 不会显示到底是那个 GitHub 条目导入失败或者引起导入失败的错误信息。这很难去决定导入结果是否是令人满意的。

在此次发版中,我们扩展了导入总结,包括一些列未成功导入的 GitHub 条目,而且可能话,还会直接提供到 GitHub 条目的连接。极狐GitLab 现在还针对每一次失败进行错误展示。这会帮助你理解导入工作是怎样的,以及帮助你进行故障查找。

在管理员模式下选择个人访问令牌的管理员访问权限

极狐GitLab 管理员可以使用管理员模式来以非管理员用户的身份进行工作,且可以在需要的时候打开管理员访问。之前,管理员的个人访问令牌(PAT)总是能够以管理员的角色去执行 API。现在,当添加一个 PAT 的时候,管理员可以通过选择管理员模式范围来决定此 PAT 是否应该具备管理员权限去执行 API。管理员必须要在实例中开启管理员模式才能够使用此功能特性。

改进了域名验证功能

域名验证在极狐GitLab 中有多种用途。之前,为了验证一个域名,你必须完成极狐GitLab Pages 页面导向,即使你为了极狐GitLab Pages 之外的目的来进行域名验证。

现在,域名验证位于群组级别而且已经被简化了。这将让域名验证变得更加容易。

阻止用户删除账户

管理员可以通过设置新用户限制配置来阻止用户删除他们的账户。如果开启了此设置,用户将不再能够删除他们自己的账户,以便保留可审计的账户信息。

在极狐GitLab Pages 上配置静态文件目录

现在你可以为极狐GitLab Pages 来配置任意名称(默认为 public)的静态文件夹了。这将会让使用主流的静态网站框架,诸如 Next.js,Astro 或 Eleventy 变得更加容易,而且无需改变配置中的输出目录。

在极狐GitLab Pages 上配置静态文件目录

在 MR 中对整个文件进行注释

MR 现在支持对整个文件进行注释,因为并不是所有的 MR 反馈都是逐行进行的。如果文件被删除了,你可能还需要知道为什么删除这样的信息。你可能还想提供关于文件名的反馈,或关于结构的一些注释。

在 MR 中对整个文件进行注释

CI/CD:在 rules 中使用 needs

needs 关键字定义了 job 之间的依赖关系,你可以使用它来设置 stage 中 job 的执行顺序。在此次发版中,我们添加了针对特定 rules 条件下 job 关系定义的能力。当添加满足规则后,job 中的 needs 配置就会被 rules 中的 needs 配置所替代。根据你定义的条件,这可以帮助加速流水线的运行速度,使 job 可以比正常情况下更早开始运行。你还可以使用此功能来强制一个job 在开始之前必须等待另一个 job 完成。现在对于 needs 的使用,具备了更多的灵活性。

极狐GitLab Runner 16.1

我们今天还发布了极狐GitLab Runner 16.1!极狐GitLab Runner 是一个轻量级的、高可扩展的代理,来运行你的 CI/CD 作业并且将结果反馈到极狐GitLab 实例。极狐GitLab Runner 和极狐GitLab 内置的开源持续集成服务 CI/CD 配合使用。

新功能包括:

  • 针对 Azure 虚拟机的极狐GitLab Fleeting 插件(试验阶段)。感谢 vincent_stchu(舒文斌,极狐GitLab 研发成员) 的贡献。

关于极狐GitLab Runner 的所有变更可以查看变更记录。

从群组或子群组中安装 npm 包

你可以使用项目的包管理仓库来发布和安装 npm 包。你仅需要用访问令牌(个人的,做的的,部署的或者项目的)做一个简单认证即可,然后就可以将包发布到你的极狐GitLab 项目了。

如果你的项目数量不多,这将是非常有用的。不幸的是,如果你有多个项目,你可能会很快发现你添加了数十个甚至上百个不同的源。大型组织中的团队通常会将软件包与源代码和流水线一起发布到项目的软件包中。同时,他们需要能够安装来自组织内部其他群组和子群组中的依赖。

为了让项目之间的共享包变的容易,你现在可以从群组中来完成包安装,这样你就无需记住哪个包存在于哪个项目中。使用你选择的认证令牌,在你将群组添加为 npm 软件包的源之后,你就可以安装来自任意群组的 npm 包了。

代码质量分析器更新

极狐GitLab 代码质量支持你已经在用的集成工具,而且提供一个 CI/CD 模版来运行 CodeClimate 扫描系统。在 16.1 中,基于分析器我们发布了针对 CodeClimate 的以下更新:

  • 更新 CodeClimate 的版本至 0.96.0。此版本包括
  • 针对 golang-lint 的新插件
  • 新版本的 bundle-audit

  • 增加了对 Docker API Scoket 的可配置路径支持
    • 感谢 @tsjnsn 的社区贡献。关于将此变量包含在 CI/CD 模版中的更新进度可以在此提议中追踪。

进一步的详情可以查看变更记录。

如果你因用了极狐GitLab 管理的 Code Quality 模版(Code-Quality.gitlab-ci.yml),你会自动接收到这些更新。

针对先前版本中对 Code Quality 的变更,可以查看近期更新。

针对 SAST 规则的更清晰指导和更高覆盖率

我们已经对极狐GitLab SAST 规则做了如下更新:

  • 更清楚地解释每个规则针对的弱点类型以及如何解决。目前为止我们已经针对 C、C#、Go 以及 Java 规则进行了描述和指导文本的更新。其他语言的支持可以对议题 382119 进行追踪。

  • 捕获既有 Java 规则中的额外漏洞

这些改进是极狐GitLab 静态分析和漏洞研究团队来改善默认静态分析规则集协作结果的一部分。我们欢迎对史诗故事 8170 中提到的SAST 、密钥扫描以及 IaC 扫描默认规则集提出任何反馈。

对于极狐GitLab SAST 规则的更多详情,可以查看变更日志。在极狐GitLab 16.1 中,sast-rules 项目是基于Semgrep 的 sast 分析器中使用的所有极狐GitLab 管理的默认规则集单一来源。

在服务桌面(Service Desk)邮件中的议题 URL 占位符

对服务桌面请求者来说,这对于直接访问服务桌面议题而不是只能通过邮件来与服务桌面请求交互来说是非常有帮助的。我们引入了一个新的占位符 %{ISSUE_URL},你可以在你的邮件模版中使用它(比如,感谢邮件),将请求者和服务桌面议题直接关联起来。

GEO 验证设计文件仓库

当你在议题中添加一个设计时,一个与设计相关的 Git 仓库就会被创建或者被更新,并创建 LFS 对象和上传(用于缩略图)。GEO 已经验证了 LFS 对象及上传物,现在它还能验证整个设计仓库。现在,设计管理的所有基础数据都会经过验证,可以保证在传输或静止时不会损坏你的设计数据。如果 GEO 被用作灾备策略的一部分,这将能够很好的保护数据,防止数据丢失。

新增在备份过程中跳过项目的能力

内置的备份和恢复功能增加了跳过特性仓库的能力。在备份或恢复过程中,使用新的 SKIP_REPOSITORIES_PATHS 环境变量,能够让 Rake 任务接受用逗号分隔开的群组或项目路径,以此来完成备份跳过。比如,这将允许你跳过那些很长时间没有改动的一些过时或者归档项目,这将能帮助你

a)通过加速备份运行来节约时间 b)由于这些项目不包含在备份文件中,从而节约了存储空间。

感谢来自社区的 Yuri Konotopov 的贡献。

由于安全策略审批检查无效而导致失败关闭

安全合规策略允许组织在多个项目之前强制执行检查和取得平衡,以便与企业自身的安全治理计划保持一致。对我们的客户来说,确保影响策略的变更不会导致安全防护下降是至关重要的。随着此次更新,无效的规则将导致“失败合并”,这会阻止 MR 指导任何扫描结果策略中的无效规则被修复。

使用自定义权限查看漏洞报告

现在查看漏洞报告的能力已经设置为单独的权限,通过让极狐GitLab 管理员集群组拥有者为此权限创建一个角色来实现。之前,查看漏洞报告仅限于 Developer 及以上角色。现在任何人都可以查看漏洞报告,只要他们被赋予一个自定义的角色,而这个角色具备查看漏洞报告的权限即可。

在用户 API 响应中包含 SCIM 识别

现在用户 API 可以对用户返回 SCIM 识别了。之前,此信息只包含在 UI 界面上,而不是 API 中。

密码重置邮件被发送至任意经过验证的邮箱地址

如果你忘记了极狐GitLab 密码,你现在可以通过任意经过验证的邮箱进行密码重置。之前,只有主邮箱被用来处理重置请求。如果主邮箱不可访问,就会让密码重置流程变得异常困难。

重新引入到 OmniAuth Shibboleth 的支持

Shibboleth OmniAuth 的支持再次被引入到极狐GitLab 中。由于缺乏上游的支持,在 15.9 中已经被移除。感谢来自 lukaskoenen 的社区贡献,他提供了上游支持,而现在 omniauth-shibboleth-redux 已经在私有化部署中可用了。

为设计上传添加描述

现在,设计上传没有元数据来描述它们的目的或者它们为什么被上传。我们已经添加了一个文本窗口来进行描述,这样你可以帮助用户来更好的理解图片。

为设计上传添加描述

使用极狐GitLab CLI 来生成变更记录(changelog)

变更记录基于一个项目的特定提交节点来生成复杂的变更列表。它们可能很难实现自动化或查看,并且需要和极狐GitLab API 进行交互。

随着极狐GitLab CLI v1.30.0 的发布,现在你可以在 shell 中来直接生成项目的变更记录。glab changelog generate 命令让变更记录的审核、自动生成以及发布变得更加容易了。

CI/CD 作业令牌范围 API endpoint

从极狐GitLab 16.0 开始,所有新项目的默认 CI/CD 作业令牌范围都发生了变化。这增强了新项目的安全性,但是对那些想自动创建项目的用户来说增加了额外的步骤。自动化有时候还必须的配置作业令牌范围,而且还只能通过 GraphQL(或者在 UI 界面上手动执行)而不是 REST API 来完成。

为了能让此设置通过 REST API 来实现可配置,在 16.1 中,Gerardo Navarro 增加了一个新的 endpoint 来控制作业令牌范围。它对具有 Maintainer 或者更高角色的用户来讲是可用的。感谢 Gerardo 的重大贡献。

Runner 详情 —— 让 Runner 共享一个配置

新的 Runner 创建方法能够让你复用某个 Runner 的配置,而这种场景往往是你为了某个功能而进行了多次 Runner 注册。使用同样的认证令牌注册的 Runner 贡献一个配置而且在新的详情视图中以群组展示。

Runner 详情 —— 让 Runner 共享一个配置

美化 CI/CD 流水线及作业的 UI 界面

CI/CD 是极狐GitLab 使用最多的一个功能。在 16.1 中,我们聚焦在 CI/CD 流水线和作业列表视图以及流水线详情页面的易用性和使用体验提升上。现在你可以更容易的找到你想要的信息。

SAST 分析器更新

极狐GitLab SAST 包含很多需要极狐GitLab 静态分析团队日常维护、更新和支持的安全分析器。我们在 16.1 发版中发布了以下更新:

  • 基于 Semgrep 的分析器版本已经更新到使用 1.23.0 版的 Semgrep 引擎。我们还澄清了用于扫描 C、C#、Go 和 Java的极狐GitLab 管理规则的指导和改进的效果。有关更多详细信息,请参阅变更日志。
  • 基于 SpotBug 的分析器现在支持通过设置 SAST_SCANNER_ALLOWED_CLI_OPTS CI/CD 环境变量来修改“影响等级(effort level)”。这允许你通降低扫描的精度和发现漏洞的能力来提升性能。详情可以进一步查看变更日志。

如果你在极狐GitLab 16.0 以后引用了极狐GitLab 自管理的 SAST 模版(SAST.gitlab-ci.yml),那么你会自动接收到这些更新。如果你想就停留在某个特定的版本而且想防止自动更新,你可以固定分析器的版本。

关于之前的变更,可以查看上个月的更新。

在 SAST、IaC 扫描即密钥检测中共享自定义规则集

现在你可以通过设置一个 CI/CD 变量来在多个项目之间实现 SAST、IaC 或 密钥扫描的自定义规则集共享。

共享规则集能够帮你:

  • 禁用你不想在项目中使用的一些预定义规则。
  • 在预定义规则中修改字段,包括描述、消息、名称或者严重级别,来反应组织的偏好。比如,你可以调整规则的默认严重等级或者为如何修复一个漏洞来增加一些信息。
  • 通过增加或替换来构建自定义规则集。此选项只对一些分析器有效。

关于此领域的更多改进可以查看此议题

在服务桌面议题中将外部用户显示为评论作者

当请求者回复服务桌面邮件时,让服务桌面代理知道是谁做了评论是非常有用的。但是由于请求人员可能是一个没有极狐GitLab 账号或者权限去访问极狐GitLab 项目的外部用户,这些评论之前都被归纳到极狐GitLab 支持 bot 中。从现在开始,请求者的邮件回复将被归纳到外部用户中,这就让是谁在极狐GitLab 议题中做了评论变的更加清晰了。

在服务桌面议题中将外部用户显示为评论作者

GEO 为所有组件添加按复制状态进行筛选的功能

GEO 为自服务框架管理下的所有组件添加了根据复制状态进行筛选的功能。现在你可以在复制详情视图中通过“进行中”、“已失败”、“已同步”的状态来进行过滤,这能够让数据同步失败问题的定位变得更容易、更快速。

Ominbus 改进

  • 极狐GitLab 16.1 新增了对在发布于2023 年 6 月 10 号的 Debian 12 Bookworm 上进行包构建和发布的支持。

极狐GitLab Chart 改进

  • 极狐GitLab 16.1 使用 gitlab-base 的 Docker 镜像替换了 busybox Docker 镜像,以便与其他极狐GitLab Docker 镜像共享镜像层级。这种实现视 gitlab-base 为一个 helper 镜像(像 kubectlcertificates),并且具有本地覆盖选项。

60天免费试用极狐GitLab专业版

极狐GitLab不仅是源代码管理或CI/CD工具,它是一个覆盖完整软件开发生命周期和DevOps的开放式一体化平台。

企业版试用