GitLab 15.2 发布,支持wiki WYSIWYG 实时图表预览等

按照惯例,上周GitLab官方发布了新的月度版本15.2 。新版本带来了wiki WYSIWYG编辑器实时预览图、事件时间线、组和子组扫描执行策略、已经更改故障率图表等功能,请和虫虫一起学习。

GitLab 15.2 中发布的主要改进

wiki 所见即所得编辑器中的实时预览图

GitLab Flavored Markdown 包括支持Mermaid、PlantUML 和 Kroki 图表的扩展,但是如果没有实时预览,除了最基本的图表之外,编写任何东西都可能很麻烦。可以在原始源代码和静态预览之间切换,并且可以使用外部工具来编写这些图表,但是从的内容转移可能会分散注意力。

GitLab 15.2 在 wiki 的 WYSIWYG 编辑器中引入了图表的实时渲染预览。现在,当在专门的代码块中编写图表时,将检测图表类型并显示预览图标。启用后,实时预览会在代码块上方呈现并在键入时更新,因此可以确保格式正确并且输出将完全符合的预期。



合并请求报告重新设计

合并请求报告是代码审查的重要组成部分,提供有关更改和改进的影响以满足项目标准的见解。

报告小部件现在都遵循布局、层次结构和内容部分的设计准则,使它们保持一致、可扫描和使用。这些改进使用户可以更轻松地在每个报告中找到可操作的信息。


更改故障率图表以可视化软件稳定性(ULTIMATE)

在新版本中,为DORAChange 失败率指标添加了新的趋势图。该图显示了在生产环境中导致事件的部署百分比。GitLab将变更失败率测量为在给定时间段内事件数量除以生产环境的部署数量。

这是GitLab中可用的第四个DORA图表,它反映出价值流速度和可靠性趋势。

事件时间表

捕捉事件期间发生的事情是促进学习和改进机会的重要实践。然而,要求事件响应人员在忙于灭火时承担额外的管理任务,或试图重建事件后事件的时间线会导致信息不完整或不够准确。

GitLab 事件时间表旨在使事件期间或事件后的信息捕获变得简单高效。在事件时间线 MVC 中,可以手动添加新的时间线事件、删除时间线事件以及在事件问题内的专用选项卡中查看事件时间线。

在流水线配置中设置镜像拉取策略

新版中支持为GitLab Runner在CI/CD作业中下载Docker镜像选择不同的拉取策略。always(默认行为)确保始终下载if-not-present镜像,仅当本地版本不存在时才下载镜像,never仅使用本地版本(从不下载镜像)。

之前,只能在运行器级别定义拉取策略。在此版本中,添加了在管道级别定义拉取策略的功能。用于pull_policy在.gitlab-ci.yml作业或管道级别定义不同的拉取策略。共享运行器不支持此功能。

组级合并请求设置的审核事件

当对组级合并请求设置进行更改时,GitLab现在会记录其他审计事件。这些是项目审计事件的补充,这些事件记录对项目相同设置更改。具体来说,现在在对组进行更改时创建审计事件:

  • 阻止作者批准
  • 阻止添加提交的用户批准
  • 防止编辑项目中的批准规则和合并请求。
  • 需要用户密码才能批准
  • 将提交添加到源分支时删除所有批准

这些审计事件可以帮助了解的组级合并请求设置的设置和默认配置是否已正确放置并且尚未更改。这一点尤其重要,因为这些组级别的设置将级联到子项目。对这些变化的治理和可见性将帮助加强职责分离并进一步简化审计。

改进用户个人贡献的贡献日历

修复了私有项目贡献不显示在用户贡献日历图表中的问题。现在,当在个人资料设置中选择在我的个人资料中包含私人贡献时,即使从项目中删除,私人贡献仍然可见。

用于创建合并请求的流式审计事件(ULTIMATE)

现在可以在组内创建合并请求时使用审计事件进行监控。审计事件包括以下信息:

  • 合并请求作者的用户名。
  • 创建时间戳。
  • 新创建的合并请求的详细信息。

这使可以查看项目和源代码中的活动,以便可以在需要时采取行动。

这些事件会生成大量数据,因此它们只能作为流式审计事件使用。

继续上次使用的Wiki编辑器

WYSIWYG 编辑器是在GitLab 14.0的wiki中引入的,允许使用可视化格式化工具编写Markdown,并在编写内容时实时预览的内容。但是,自从它发布以来,每次都必须手动切换到使用WYSIWYG编辑器来开始编辑wiki页面。

GitLab 15.2现在会将上次使用的编辑器保留在wiki中。通过直接跳转到首选体验,将在编辑连续页面时节省时间,而无需每次都在编辑器之间切换。

以编程方式删除重复的包资产

使用GitLab包注册表来发布和共享项目的包。发布包时,它包含包资产。例如,每次发布一个 Maven 包时,它都会包含一个pom和jar包。某些格式(例如 Maven、NuGet 和通用包)允许发布重复的包,从而导致成百上千的重复包资产。在以前版本的 GitLab 中,一次只能使用用户界面或API删除这些资产。现在,可以使用清理策略来定义要保留的最大重复资产数量。例如,如果定义清理策略以保留资产的五个重复版本,则下次运行该策略时仅保留五个最近的资产。

为包引入清理策略有助于减少项目使用的存储量,并通过减少混乱来更轻松地导航用户界面。

Gradle的Implementation指令的许可证合规性支持(ULTIMATE)

Gradle 6引入了一个implementation用于定义依赖项的新指令。从Gradle 7开始,这个新指令成为强制性指令并取代了之前的compile指令。GitLab 15.2 引入了对使用此新指令引入的依赖项检测的支持。

在项目设置中编辑受保护的环境批准(PREMIUM)

以前,要编辑部署到受保护环境所需的批准数量,必须使用API,这可能很麻烦。从15.2开始,可以直接在项目设置中编辑所需批准的数量。

受保护环境设置的组级UI(PREMIUM)

以前,如果想为受保护的环境配置组级设置,则必须使用API。在新版本中,现在可以在UI中查看和编辑这些设置。此更改使可以更轻松地设置用户和组可以部署到组内跨项目环境的策略。

更新了集群版本支持,包括 Kubernetes 1.23 和 1.24

如果使用Kubernetes,GitLab希望确保在将集群升级到最新的Kubernetes版本时拥有完整的功能。虽然你有许多人使用GitLab来部署Kubernetes集群,但直到最近还没有对Kubernetes 1.23和1.24 的官方支持。新版本全面支持这些版本中与 Kubernetes 相关的所有功能。

除了为Kubernetes 1.23 和1.24提供支持外,正在更改Kubernetes支持政策,使其比过去更具可预测性。根据新的支持政策,计划在初始发布三个月后为每个新的Kubernetes次要版本添加支持,将支持最后三个Kubernetes次要版本。

改进和更快的文件浏览和语法突出显示

最近几个月,进行了多项更改以改善浏览存储库和查看源文件的体验。在从一个文件夹移动到另一个文件夹时,不再重新加载整个页面,而是使用单个VUE应用程序显示存储库文件和文件夹。存储库树视图现在性能更高、更稳定,并且文件处理速度更快。还从文件的服务器端转换切换到客户端语法突出显示。大文件的渲染时间现在提高了66%。

在工作页面上按状态过滤工作

当对行为异常的管道进行故障排除时,可能希望筛选具有特定状态的作业。以前,这需要查看完整的作业列表或使用GitLab API来操作GitLab之外的数据。

现在,可以直接在工作页面上按状态筛选工作,这样就可以查看项目中具有相同状态的所有工作。

项目描述的预定义CI/CD变量

GitLab CI/CD提供了许多开箱即用的有用的预定义CI/CD变量,但没有用于项目描述的变量。在此版本中,现在拥有CI_PROJECT_DESCRIPTION预定义变量,

用于检索代理服务器 (KAS)元数据的 API

在为 Kubernetes发布代理后,收到的第一个请求是自动设置它。在过去的几个月里,Timo实现了一个REST API并扩展了 GitLab Terraform Provider 以支持以自动化方式管理代理。当前版本通过引入作为/metadata接口超集的REST接口,进一步改进了对代理和一般GitLab的管理/version。

/metadata接口包含有关当前GitLab版本、是否启用代理服务器 (KAS) 以及可以访问它的位置的信息。此更改改进了以前的功能,必须手动将KAS地址放入自动化脚本中。

强制执行每个计划的webhook速率限制

现在将对GitLab SaaS用户实施Webhook速率限制,以保护GitLab应用程序的性能和可用性。作为回报,该限制可以保护所有租户的性能。限制适用于每个计划和每个命名空间,并基于订阅中的席位数量,从每个顶级命名空间每分钟500 次到最多13000次调用。

Geo支持BuildKit缓存镜像

在GitLab 15.2中,Geo支持BuildKit 缓存镜像的复制。在GitLab 15.2中对 BuildKit镜像格式的支持,以及在 GitLab 15.1中增加了对OCI 容器镜像的支持,Geo现在支持更广泛的容器类型列表。

Omnibus套件更新

GitLab 15.2包括Mattermost 7.0,具有折叠回复线程、语音呼叫和屏幕共享(测试版)、消息格式工具栏、Playbooks内联编辑器、使用统计信息以及在运行中更改触发器和操作的能力的普遍可用性。该版本还包括安全更新,建议从早期版本升级。

GitLab 图表改进

当在GitLab的 Kubernetes部署中使用水平pod自动缩放器自动缩放pod的数量时,注意到由于观察到的CPU配置文件的尖峰性质,缩放行为可能不稳定。为了查看不太快速的缩放事件,新增加了对缩放事件的支持,v2beta2并且v2增加了对缩放事件的控制。

Gitlab Runner 15.2

同期还发布了GitLab Runner 15.2其中包括:

在作业定义中将DEBUG设置为变量会导致随机失败。

将containerd版本更新到1.4.12。

安全和合规性

通过SSH Git实施IP地址限制

限制对来自一组受信任IP地址的请求的访问可以提高安全性。到目前为止,只有API和UI支持这种访问限制;SSH访问被完全阻止。SSH 现在也遵守此限制,并且仅授予来自列表中IP地址的请求的访问权限。

组和子组扫描执行策略(ULTIMATE)

安全和合规团队可以通过扫描组和子组级别的执行策略,将策略统一应用于所有项目。此功能对于拥有大量项目的大型组织特别有用。为组或子组定义的策略将向下流动并适用于所有子项目。要开始使用,请让的群组所有者在安全与合规 > 策略页面上将安全策略项目链接到的群组。

当前,扫描执行策略是组和子组级别支持的唯一策略类型。

用于流式审计事件的自定义HTTP标头(ULTIMATE)

现在可以添加要与流式审计事件一起发送的自定义HTTP标头!这一改进使得与需要在接收到的消息上具有特定标头的第3方系统集成变得更加容易。自定义标头可用于添加身份验证信息、添加路由信息或标记事件来自哪个项目。

以前,必须使用代理服务器将这些自定义标头添加到流式审核事件中。设置此代理既费时又容易出错,并且给组织增加了额外的复杂性。直接在GitLab中设置自定义标头使得与其他工具的集成和驱动自动化变得更加简单,并允许直接在 GitLab平台中执行所需的操作。

要添加自定义HTTP标头,可使用GraphQL API 添加新标头作为键/值对。还可以更新和删除标题。

UI中显示的验证令牌(ULTIMATE)

GitLab UI现在显示每个流媒体目的地的验证令牌值。这样可以轻松快速地查看值是什么,根据看到的日志检查它,或将其复制到将接收流式审核事件数据的其他工具。

以前,如果需要获取此值,则必须使用API列出组中的所有审计目标并找到该值。

禁用双因素身份验证时的审核事件(PREMIUM)

当用户禁用双因素身份验证(2FA)设置时,GitLab现在会记录审计事件。

此审核事件可帮助确保实例中的所有用户都在正确使用2FA(并确定用户帐户的安全性何时降低),以便进行调查并采取行动。

使用API禁用用户2FA

管理员可以使用API为特定用户禁用2FA。当用户丢失或忘记了主要令牌生成器的备用代码时,这很有用。

管理员为该用户禁用2FA后,用户可以从头开始设置2FA。

Git操作的流式审计事件(ULTIMATE)

现在可以使用用户推送到存储库或从存储库拉取时记录的新审计事件来监控组内的Git活动。这将包括诸如用户名、时间戳以及从中提取或推送到的项目等信息。

这些事件会生成大量数据,因此它们只能作为流式审计事件使用。

项目Fork的流式审计事件(ULTIMATE)

现在,可以使用在项目分叉时记录的新审计事件来监控的组内的项目Fork。这包括以下信息:

  • 派生项目的用户的用户名。
  • 项目分叉时的时间戳。
  • 分叉项目的详细信息。

这使可以了解项目和源代码被复制到哪里以及由谁复制,以便可以在需要时采取行动。

这些事件可能会生成大量数据,因此它们仅可用作流式审计事件。

更快的秘密检测

新版本中优化了GitLab秘密检测以使用一种新技术,该技术通过在无法匹配时跳过昂贵的操作来缩短扫描时间。分析器现在首先扫描确切的字符串,然后再运行完整的匹配规则。

这种优化减少了测试中的扫描持续时间,在中型存储库中将扫描时间缩短了 50-75%。它适用于具有定义前缀或已知标识符的秘密;例如,GitLab 个人访问令牌默认以glpat-开头.

更新了内置的秘密检测规则以使用这种更快的方法。如果添加了自定义规则keywords,则可以通过在自定义GitLeaks TOML配置文件中为它们设置值来优化它们。keywords在正则表达式模式运行之前,必须至少匹配一个字符串。

静态分析分析器更新

GitLab静态分析包括GitLab 静态分析团队积极管理、维护和更新的许多安全分析器。在Gitlab 15.2中更新如下:

CodeClimate分析器更新到版本0.85.29:

添加对eslint-8频道的支持。

不分prepare步分析文件或允许LinkLocal 地址。

Kics分析器以更好地处理退出代码。

Kubesec分析器更新为包括Kubesec 2.11.5和Helm 3.9.0,并处理 helm 输出问题。

PMD-Apex分析器更新到版本6.45.0。

Semgrep分析器引擎更新到版本0.98.0:

提高性能,修复错误,并以其他方式改进扫描引擎。

如果定义自定义规则,则绕过基于语言的匹配器(决定是否运行扫描过程)。这使可以更轻松地为GitLab管理的规则集中未涵盖的语言定义自定义规则。

更新秘密分析器以删除社会安全号码 (SSN) 的内置规则并应用新的优化。

包含 GitLab 管理的 SAST 模板( SAST.gitlab-ci.yml),则无需执行任何操作即可接收这些更新。但是,如果覆盖或自定义自己的CI/CD模板,则需要更新的CI/CD配置。

根据部署层获取机密

可以根据环境的部署层分配机密。在此版本中,将包含deployment_tier在JSON Web令牌 (CI_JOB_JWT)中,以便用户可以获取每个特定部署层的机密。

Bug修复

15.2中一些值得注意的错误修复有:

当存在同名子组时,GitLab Importer 无法导入组;

仅显示每个应用程序的最新OAuth令牌;

通过项目共享添加为成员时,组访问令牌无法通过 HTTP使用Git访问项目;

增 Webauthn凭证XID长度;

在管道中驳回的调查结果不会更新漏洞报告;

未发送漏洞 Slack 通知;

容器扫描在免费层中不可用;

代理漏洞解决不考虑多个工作负载/代理;

集群镜像扫描不适用于非默认命名空间或服务帐户;

可以绕过组和项目级别的安全策略;

测试设置时显示自定义集成错误消息;

在范围板上创建Epic应添加标签;

一些Epic在路线图中显示两次作为子Epic和顶级Epic

只有记者会收到内部评论的电子邮件通知;

配置多个审批规则时环境审批不可见;

重新启动自动停止的环境不起作用;

Python Notebook差异显示两次;

为某些Python Notebooks生成差异时间歇性崩溃;

未加载包含 Python Notebooks 的折叠文件的差异;

语句超时删除集群代理;

当API支持ingressClassName 但入口控制器不支持时出错;

K8s集群升级到v1.22后Gitlab检测不到部署pod;

支持使用未知的自定义资源解析清单;

使用旧版本的kpt部署;

无法解析空存储库中的引用发现;

处理agentk令牌上的换行符;

性能改进

在GitLab 15.2 中,在问题、项目、里程碑等提供了性能改进,其中一些改进包括:

返回容器的创建时间戳以改进清理策略。

提高加载 OAuth 应用程序和令牌的性能。

加快加载阶段作业列表。

生成Python Notebook差异现在减少12倍的时间和8倍的内存。

可用性改进

在GitLab 15.2中,自爱问题、项目、里程碑等提供了可用性改进其中包括:

在 Container Registry 面包屑中显示项目名称。

改进了包组设置的布局。

在合并请求中按扩展名过滤文件。

从 Python Notebook 差异中删除多余的行。

改进 Python Notebook 差异的样式。

功能删除和变更

相关信息请查看官方页面实时在线信息。

其他显著变化

self_signed_certgitlab_shell['http_settings']

在GitLab Shell的更新中,验证自签名证书的选项在GitLab 14.8中已弃用并删除,因为它允许中间人攻击。Gitaly 已更新并删除配置项gitlab_shell['http_settings']

升级更新

Omnibus

通过Omnibus安装的自建实例可直接使用Linux包管理器可以升级。例如对CentOS:

yum updata/install gitlab-ce

就能自动完成升级。

Docker

先停止和删除旧的容器:

sudo docker stop gitlab
sudo docker rm gitlab

然后Pull官方最新镜像:

sudo docker pull gitlab/gitlab-ce:latest

重新启动容器(启动参数和以前保持一致)即可,比如:

sudo docker run --detach \
--hostname gitlab.example.com \
--publish 443:443 --publish 80:80 --publish 22:22 \
--name gitlab \
--restart always \
--volume /srv/gitlab/config:/etc/gitlab \
--volume /srv/gitlab/logs:/var/log/gitlab \
--volume /srv/gitlab/data:/var/opt/gitlab \
gitlab/gitlab-ce:latest

Docker compose

通过:

docker-compose pull
docker-compose up -d

安全漏洞预警

最近的HVV行动中通报了gitlab 高危入漏洞CVE-2022-2185,涉及版本为:

GitLab CE/EE 14.0 版本:< 14.10.5
GitLab CE/EE 15.0 版本:< 15.0.4
GitLab CE/EE 15.1 版本:< 15.1.1

需要紧急升级。

另外本文发布之时(28日),Gitlab官方也发布了针对Gitlab 15.2、15.1和15.0的安全漏洞补丁版本15.2.1, 15.1.4, and 15.0.5,解决了一系列的安全漏洞:

截止目前国内镜像站还未更新,请在更新后升级到 15.2.1以确保系统安全。

举报
评论 0