七叶笔记 » golang编程 » GitLab 14.10,新增加增量式备份和流式审计事件界面管理等

GitLab 14.10,新增加增量式备份和流式审计事件界面管理等

GitLab 14.10,新增加增量式备份和流式审计事件界面管理等

按惯例,昨天Gitlab发布了又一个月度版本14.10。新版本中的亮点包括个人合规性报告、用于流式审计事件的管理界面、支持 Kubernetes 的GitLab Runner、升级手动创建的事件等。更多功能请和虫虫一起学习。

主要功能改进

支持Kubernetes 的 GitLab Runner Operator

GitLab 13.10 中,增加了适用于 Kubernetes 的 Red Hat OpenShift容器平台的GitLab Runner Operator。该版本为 OpenShift 用户提供了Operator Framework 的自动化和管理功能,并简化了 OpenShift Kubernetes 集群中运行器的持续管理。

从14.10发布 GitLab Runner Operator v1.7.0,可以在非 OpenShift Kubernetes 集群中使用它。

新的 DORA 指标 API:更改失败率(ULTIMATE)

在新版本中,又添加了一个DORA度量API,更改失败率。GitLab以事件数量除以给定时间段内生产环境的部署数量来衡量变更失败率。DORA指标使投资于 DevOps 转型的管理者能够了解其正在实施的流程和购买的工具的 投资回报率 。这些指标的变化可以很容易转化为团队的KPI。

GitHub 导入默认为当前组路径

从GitHub导入时,该里程碑将导入项目的默认目标更改为开始导入的 GitLab 组的上下文命名空间。之前,GitHub项目会统一导入到个人命名空间。这种可用性增强可帮助用户以更直观的方式导入项目,并且不会将导入的项目置于混乱的位置。

增量存储库备份减少备份时间

新版本中新增加了一个 增量备份 功能。至少进行一次完整备份后,以后可以运行后续增量备份,这些备份仅将自上次备份以来的存储库更改打包到备份包中。这大大减少了备份时间。

在自建GitLab实例上,默认启用增量备份。要禁用该功能,需要管理员设置功能标志incremental_repository_backup。基于一个完整备份,后续可以使用BACKUP=timestamp_of_backup选项来选择要使用的备份。

要创建增量备份,运行:

 sudo gitlab-backup create INCREMENTAL=yes  

也可以使用以下命令从未解压的备份SKIP=tar创建增量备份:

 sudo gitlab-backup create INCREMENTAL=yes SKIP=tar  

在UI中为标签创建管道计划

以前,只能使用API为标签创建管道计划。使用管道调度UI的更简单方法只能用于分支。

现在,当使用管道调度UI时,可以根据需要从分支或标签中进行选择,不再需要使用 API。

使用Helm 安装 Kubernetes 代理

Kubernetes的GitLab代理有一个需要安装到用户集群中的组件。之前提供了基于 Docker 的单行安装程序和基于Kpt的高级安装方法。由于Helm是安装 Kubernetes 应用程序的常用方法,因此使用Helm包替换基于Docker的安装程序。

已经用新的Helm包替换了基于 Docker 的安装方法,因为我们希望用户已经安装在本地机器上。

Helm 包存在于charts.gitlab.io和ArtifactHUB存储库中。

将指标屏幕截图上传到警报

GitLab13.2在GitLab 告警中引入了指标选项卡。但是,随着Metrics页面上的GitLab 托管应用程序和警告的弃用,指标将不再自动填充到新警报中,并且很难支持旧告警。新版本完成了旧指标功能的弃用,并引入了向警报添加屏幕截图的功能,类似于如何将屏幕截图添加到事件中。拥有触发警报的指标的屏幕截图有助于响应者更有效地对警报进行分类。

Geo验证CI作业工件

Geo自动验证复制的CI 作业工件的数据完整性。这确保了工件在传输或静止时不会损坏。如果将Geo用作灾难恢复策略的一部分,则可以保护客户免受数据丢失。

单页面上查看所有项目导入的历史记录

新的 项目导入历史 页面列出了所有项目导入,无论它们是从哪里导入的。此视图整合了以前分散在个引入源的进口页面上的信息。

在一个视图中包含有关先前导入的所有详细信息,可以在一个位置查找和查看所有先前导入的状态。这包括有关导入失败的详细信息,以便您可以验证是否已成功导入所有预期项目。

在实例级别设置的CI/CD限制

为了控制资源使用以支持实例稳定性,对高CI/CD使用率的实例的GitLab管理员可能希望为特定CI/CD事件添加限制。比如设置单个管道中的最大作业数、活动管道中的最大并发作业数或每个项目的最大预定管道数。

新版本中,GitLab实例管理员现在可以直接在实例的管理区域面板中设置这些限制(和其他限制)。

组runner的扩展视图

组运行器现在显示在扩展视图中,可以在其中更轻松地管理和管理与命名空间关联的运行器。要查看新 UI,请在左侧边栏中选择 CI/CD 。此视图包括与组和子组关联的在线、离线和过时运行器的数量。

改进的管道变量继承

以前,可以通过触发作业将一些CI/CD变量传递到下游管道,但无法转发在手动管道运行或使用 API 中添加的变量。

在此版本中,新添加了一个关键字 trigger :forward来控制转发到下游父子管道或多项目管道的内容,这提供了一种灵活的方式来处理下游管道中的变量继承。

部署审批API的多个审批规则(PREMIUM)

之前部署批准支持一个简单的模型,其中执行部署和批准部署的能力都由单个用户列表控制。新版本中可以更灵活、更细致地使用这些规则,并且可以使用API 指定多个控制级别。现在可以支持的一种模型是组织中的部署执行者和批准者之间的职责分离。另一个受支持的模型是需要与多个级别分开批准的情况,例如 QA 测试人员组和安全组。

Helm 图表中默认启用 Kubernetes 的代理服务器

在自建实例中使用Kubernetes代理的第一步是启用代理服务器,这是Kubernetes代理的后端服务。

在GitLab 14.8中,基于Omnibus的安装启用了代理服务器。该功能在过去几个月中已经成熟,因此现在 GitLab Helm图表中默认启用代理服务器,以简化GitLab管理员的设置。除了默认启用之外,代理服务器还接受各种配置选项以根据您的需要对其进行自定义。

Omnibus套件更新

GitLab 14.10 中,Mattermost版本更新到了6.5,其最新版本包括自定义组、跨团队频道导航、 Playbook 导入、导出和复制、改进的面板共享、 Bitbucket 集成、工作区优化、改进的面板体验、波斯语支持​等等。

GitLab Runner 14.10

同期还发布了GitLab Runner 14.10。GitLab Runner是轻量级、高度可扩展的代理,可运行构建作业并将结果发送回GitLab实例。新增加功能包括:

配置工件下载路径;

脚本行时间戳改进。

GitLab 图表改进

GitLab 14.10 包含了Sidekiq的health_checks.port修复,默认端口被设置为3808.。这确保Sidekiq pod将分别监听指标和健康检查,从而Kubernetes修复探测器的行为。

安全和合规性

合规报告个人违规报告(ULTIMATE)

合规性报告可以给出每个MR的违规信息。与之前的版本相比,这是一个巨大的改进,之前的版本只显示最新 MR 有一个或多项违规。新版本允许查看一段时间内的违规历史和模式。

这些违规行为单独列出,因此以查看导致违规行为的原因、涉及的人员以及发生时间。可以选择违规以显示有关导致它的合并请求的更多信息。另外还添加了一些适用性功能,包括过滤和排序,以帮助快速定位到所需的内容。

流式审计事件的用户界面(ULTIMATE)

现在可以使用GitLabUI在组中设置流式审核事件。在组审计事件页面的新Streams选项卡下访问它。

在该界面可以实现:

添加和删​​除流式审核事件目标。

查看流审计事件发送到的位置列表。

上报手动创建的事件(PREMIUM)

事件管理设置为触发新警报的升级策略。在这种情况下,被呼叫的on-call响应者可以通过确认警报来结束寻呼。如果响应者将状态更改回已触发,我们将重新启动升级策略并再次开始分页。当用户手动创建事件时,没有关联的警报,因此无法寻呼待命响应者。

该版本支持对手动创建的事件进行分页。响应者现在能够确认事件页面,或通过将状态重置为已触发来重新启动页面,就像警报一样。

SAST支持更快、更轻松地进行 Java 扫描

GitLab静态应用程序安全测试 (SAST) 现在支持Semgrep扫描Java代码。在支持了JavaScript、 TypeScript 、Python( GitLab 13.12中引入)和Golang(在 GitLab 14.4 中引入)之后这是有一个里程碑。

基于Semgrep的分析器比基于SpotBugs的现有运行速度明显更快,最高可以提高7倍速度。在扫描之前也无需编译代码,比SpotBugs使用也要简单得多。

静态分析和漏洞研究团队合作将规则转换为Semgrep格式,保留大多数现有规则。在转换规则时更新、改进和测试了规则。

如果使用GitLab 管理的SAST模板(SAST.gitlab-ci.yml),Semgrep和SpotBugs 现在都会在发现Java代码时运行。在 GitLab Ultimate中,安全仪表板结合了来自两个分析器的结果,因此不会看到重复的漏洞报告。

在GitLab 15.0中,我将更改GitLab 管理的SAST模板(SAST.gitlab-ci.yml) 以仅运行基于Semgrep的Java代码分析器。基于SpotBugs的分析器仍将扫描其他 JVM 语言,如 Groovy Kotlin Scala

如果对新的基于Semgrep的Java 扫描有任何疑问、反馈或问题,请提交问题。

静态分析分析器更新

GitLab静态分析包括GitLab静态分析团队积极管理、维护和更新的许多安全分析器。14.10版本中,也有大量更新。

Gosec分析器更新到版本 2.11.0

添加潜在目录遍历规则http.Dir(“/”)

即使在包内的不同文件中声明时也检测最低 TLS 版本。

Kics 分析器更新到版本1.5.5:

添加新规则。

修复现有规则。

删除多余的规则。

PMD分析器更新到版本6.44.0:

添加 Java 18 支持。

修复规则。

机密分析器已更新至版本8.6.1:

熵值 添加到所有结果。

跳过仅基于文件路径的规则的内容检查。

gitleaks:allow如果与检测到的秘密包含在同一行中,则添加跳过发现的功能

Semgrep分析器更新到版本 0.86.5:

支持 Go 1.18 泛型。

额外的错误修复和性能改进。

覆盖官方或使用自定义CI/CD模板,则需要更新CI/CD 配置。

手动创建漏洞记录(ULTIMATE)

GitLab的漏洞管理处理和汇总来自其自带许多安全扫描器的安全发现,并且可以无缝整合来自集成的第三方 扫描器 的结果。虽然在统一的体验中提供了有价值的安全信息,但它将漏洞管理限制为仅由当前支持的工具发现的漏洞。

目前正引入手动创建漏洞记录的功能,以极大地扩展漏洞管理可以处理的用例。利用最近发布的通过API创建漏洞记录的能力,创建新的漏洞记录就像输入一些必需的信息一样简单。通过手动创建的漏洞记录,可以提供漏洞记录支持的其他详细信息,包括CVSS分数和建议的解决方案。可以在组、项目和安全中心漏洞报告中查看手动创建的记录。可以像处理任何扫描仪检测到的漏洞一样通过分类和补救工作流程移动记录。

安全策略管理用户体验改进(ULTIMATE)

GitLab 14.10 中完成了几项改善用户管理安全策略体验的举措:

创建新策略时选择策略类型的新工作流程。

保存更改时验证 YAML 语法,包括遇到错误时的具体细节。

跨策略类型的策略详细信息抽屉体验更加一致,包括策略的文本描述。

以前,只有项目所有者才能看到有关策略管理项目的信息。其他角色现在可以在策略页面上看到一个按钮,指示策略管理项目的位置。

对性能、设计和错误状态处理的各种其他改进。

要开始使用GitLab安全策略,请导航到项目> Security & Compliance > Policies

Bug修复

14.10 中一些值得注意的错误修复是:

在访问不存在的集成时修复 500 错误。

自动 Markdown 列表不应添加额外的已完成任务。

键入- – -后按 Enter 不应添加新的 Markdown 列表项。

手动更改时不应忽略 URL 中的组问题排序参数。

服务台从 GitLab Bot 发送重复响应。

修复提交框迷你管道图与 table 同步问题。

部署很多时无法呈现环境详细信息页面。

Deployments->Environments页面显示错误的提交refs/tags。

GitLab Agent for Kubernetes 更强大的请求路由算法。

尝试使用curl请求锁定terraform 状态时修复500。

对一些已编辑的评论做出反应会重置编辑时间戳。

epic.relative_position从CE迁移的实例中缺少列。

许可证扫描静默失败,并在 dotnet -install.sh.

过期的工件仍在占用磁盘空间。

修复编辑迭代时不正确的日期。

在具有权重范围的董事会中创建问题不会增加权重。

新Epic按钮在来宾用户的板列表中可见。

(!=NOT) 过滤器运算符对Epics标签不起作用。

性能改进

在 GitLab 14.10 中,在问题、项目、里程碑等方面性能做了改进:

异步 SAML 成员资格更新。

为组项目API预加载组根祖先。

可用性改进

在GitLab 14.10中,在问题、项目、里程碑等提供了可用性改进:

清楚地表明清理策略是可用的。

一键清除依赖代理缓存。

项目列表:按实际最后更新排序。

将“创建于”和“上次活动”列添加到组和项目页面。

提高Epic树的可用性和与其他小部件的一致性。

重新设计后将提交作者添加到管道页面。

添加用户首选项以自定义差异颜色。

改进了VS Code身份验证中令牌/实例对的验证。

不要在受保护的手动作业页面上向无法运行作业的用户显示运行按钮。

功能删除和变更

依赖扫描默认Java版本更改为 17

变更时间: 2021-05-22

在GitLab 15.0中,对于依赖扫描,扫描程序期望的Java的默认版本将从11更新到 17。Java 17 是最新的长期支持 (LTS) 版本。依赖扫描继续支持相同范围的版本(8、11、13、14、15、16、17),只有默认版本在变化。如果项目使用Java 11之前的默认设置,请务必DS_Java_Version变量设置为match。

手动迭代管理

变更时间: 2023-05-22

手动迭代管理已弃用,将来仅支持自动迭代节奏。创建和删除迭代将在 16.0 中完全删除。更新除 之外的所有迭代字段 description也将被删除。

在 GraphQL API 上,将删除以下突变:

iterationCreate和iterationDelete

更新updateIteration突变将只允许更新迭代的description. 以下参数将被删除:title、dueDate、startDate

高级搜索迁移的过时索引

变更时间: 2021-05-22

由于高级搜索迁移通常需要在很长一段时间内支持多个代码路径,因此在安全的情况下清理这些路径非常重要。我们使用 GitLab 主要版本升级作为安全时间来消除尚未完全迁移的索引的向后兼容性。有关详细信息,请参阅升级文档。

Toggle说明API 的机密性

变更时间: 2023-05-22

使用REST和GraphQL API 切换笔记机密性已被弃用。任何方式都不再支持更新笔记机密属性。正在对此进行更改以简化体验并防止私人信息被无意泄露。

对象存储 的后台上传

变更时间: 15.0 (2022-05-22)

该功能将在15.0中更改或删除。为了降低GitLab的对象存储功能,支持使用 background_upload上传文件已被删除,将在 GitLab 15.0中完全删除。这会影响一小部分对象存储提供程序:

OpenStack 使用OpenStack的客户需要更改他们的配置以使用S3 API而不是 Swift。

RackSpace 使用基于RackSpace的对象存储的客户需要将 数据迁移 到不同的提供商。

GitLab 将发布其他指南以帮助受影响的客户进行迁移。

删除对Debian 9的支持

变更时间: 15.1 (2022-06-22)

根据Debian 9 Stretch长期服务和支持 (LTSS) 官方维护到期。Gitlab将不再提供其GitLab发行版。用户需要升级到Debian 10或Debian 11。

作为守护进程运行的 GitLab页面

变更时间: 15.0 (2022-05-22)

在 15.0 中,将删除对GitLab页面的守护程序模式的支持。

GitLab自我监控

变更时间: 15.0 (2022-05-22)

GitLab我监控为自托管GitLab实例的管理员提供了监控其实例运行状况的工具。 该功能在GitLab 14.9 中已弃用,并计划在 15.0 中删除。

包设置GraphQL权限更改

变更时间: 15.0 (2022-05-22)

GitLab包阶段提供包注册表、容器注册表和依赖代理,以帮助使用GitLab管理所有依赖项。 这些产品类别中的每一个都有可以使用API进行调整的各种设置。

GraphQL的权限模型正在更新。在15.0之后,具有Guest、Reporter和Developer 角色的用户不能再更新这些设置:

包注册表设置;

Container Registry 清理策略;

依赖代理生存时间策略;

为组启用依赖代理;

迁移custom_hooks_dir从GitLab Shell到Gitaly的设置

变更时间: 2022-05-22

custom_hooks_dir设置现在在Gitaly中配置,并将在GitLab 15.0中从GitLab Shell中删除。

下载Composer依赖项的权限更改

变更时间: 2022-05-22

GitLab Composer 存储库可用于推送、搜索、获取有关的元数据和下载PHP依赖项。除了下载依赖项之外,所有这些操作都需要身份验证。

GitLab 14.9中不推荐在没有身份验证的情况下下载Composer依赖项,并将在 GitLab 15.0中删除。从 GitLab 15.0开始,必须进行身份验证才能下载 Composer 依赖项。

容器注册表的 htpasswd 身份验证

变更时间: 2022-05-22

Container Registry支持身份验证使用htpasswd. 它依赖于Apache htpasswd文件,密码使用散列 bcrypt

变更时间: 2022-05-22

由于它没有在 GitLab(产品)的上下文中使用, htpasswd身份验证将在 GitLab 14.9 中弃用,并在 GitLab 15.0 中删除。

user_email_lookup_limit API 字段

变更时间: 2022-05-22

user_email_lookup_limit API字段已弃用,将在GitLab 15.0中删除。在此之前, user_email_lookup_limit别名为 search_rate_limit现有的工作流程将继续有效。

升级更新

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  

特别公告

NFS for Git 存储库存储支持延长至 2022 年 11 月 22 日

在GitLab14.0发布期间宣布,在GitLab 15.0 中停止支持NFS用于 Git 存储库存储。在与客户和内部团队协商后,我们决定将客户支持延长至 2022 年 11 月 22 日。

关于升级到 GitLab 14.10 的重要说明

升级到GitLab 14.10会执行数据库表中不需要的条目的并发索引删除。ci_job_artifacts这可能会运行数分钟,尤其是在表有大量流量并且迁移无法获取锁的情况下。建议让此过程完成,因为重新启动可能会导致数据丢失。

相关文章