按照惯例昨天Gitlab官方发布了GitLab新的月度版本15.10。新版在禁用规则时自动解析SAST结果,一个可以同时查看所有分支相关设置的新视图,能够在Web IDE Beta中创建和切换分支,合规框架报告等。其他功能请和虫虫一起学习。
GitLab 15.10 中发布的主要改进
苹果应用商店整合
从GitLab 15.10开始,可以使用Apple App Store凭据配置和验证项目。然后,可以在CI/CD管道中使用这些凭据来自动发布到Test Flight和App Store。
一起查看所有与分支相关的设置
所有与分支相关的保护现在都显示在一个页面上。要查看的分支及其所有保护方法的统一列表,请转至Settings > Repository > Branch rules。每个分支显示为其配置的合并请求批准、安全批准、受保护分支和状态检查。以前,这些设置按类型分组,因此很难看到特定分支保护的整体视图。
在提交列表视图中通过标签发现提交
识别已标记的提交变得更加简单。在Repository>Commits查看提交列表以查看附加了标签的提交。该视图可帮助了解自标记发布提交的历史。
使用diagrams编辑器在wiki中创建图表
在GitLab 15.10中,可以使用diagrams GUI 编辑器更轻松地在wiki中创建和编辑图表。该功能在Markdown编辑器和内容编辑器中可用,并与GitLab更广泛的社区密切合作实现。
在 Web IDE Beta 中创建和切换分支
当从存储库或合并请求打开Web IDE Beta时,默认使用当前选择的分支。可以使用的更改创建一个新分支,如果不在受保护的分支上,则提交到当前分支。从 GitLab 15.10 开始,可以在Web IDE Beta中进行更改或切换分支时随时创建新分支。这样,无需关闭Web IDE Beta 即可切换上下文,从而提高工作效率。
自动禁用失败的组webhook
为了保护GitLab和整个系统的用户免受任何潜在的滥用或误用,新版本中加入了一项功能来禁用持续失败的组webhook。
返回5xx范围内的响应代码的组webhook被理解为间歇失败并被暂时禁用。这些webhook最初被禁用1分钟,每次重试时最多可延长24小时。
因错误而失败的组 webhook 4xx将被永久禁用。
具有所有者或维护者角色的用户会在应用程序给出告警。
默认情况下,自建GitLab 实例禁用。要为项目或组webhook启用自动禁用失败的webhook,管理员必须启用auto_disabling_web_hooks。
OpenID Connect群组
GitLab中用于身份验证的OpenID Connect (OIDC) OmniAuth 提供程序现在支持管理员、外部和所需组的组声明。这与的SAML实现一致,管理员可以使用 OIDC 和组声明来管理上游用户对GitLab的访问。
改进了包含子关系错误的导入错误消息
迁移GitLab组和项目时,在组导入历史记录页面上列为导入失败的错误并不总是提供足够的信息。
现在包括来自所有嵌套子关系的错误,以明确为什么关系(例如,合并请求)导入失败。更好的错误消息支持调试并加快解决时间。
SAML组锁(2)
SAML组锁允许GitLab管理员防止将其他成员添加到由SAML组链接控制的组中。以前,如果启用SSO强制执行,组所有者可以将非组用户添加到组,前提是该用户已使用SSO登录。如果未启用SSO实施,组所有者可以将任何非组用户添加到他们的组中。
新版本中,如果启用SAML群组锁定,则只能使用SAML群组链接添加用户。
扩展 DORA GraphQL API 以支持多个指标(3)
以前,GraphQL API 每个请求只支持一个指标。新版本中,可以支持多DORA的请求。更改可以提高了DORA指标数据查询时的性能。
Gitlab 的DORA指标,帮助了解DevOps转型中正在实施的流程和已购买的工具的投资回报率。团队也可以将这些指标的变化用作KPI。
举报Epic中用户评论的滥用行为(2)
可以向GitLab管理员报告其他GitLab用户的滥用行为。以前,可以报告特定评论,例如,在问题和合并请求中。现在还可以举报Epic中的评论。
查看系统注释并添加对任务的评论
在此版本之前,无法查看任务的详细更改日志或直接与团队成员进行讨论。任务现在显示系统注释并支持与评论和线程协作。
GitLab CLI v1.26.0 发布
GitLab CLI的v1.26.0版本为使用GitLab CI/CD带来了两个很棒的新功能:
运行流水线计划的能力。
项目和组中的CI/CD变量贡献了导出功能。
项目用户管理的API支持
具有项目所有者角色的用户现在可以使用GraphQL API更改项目非继承用户的最大访问级别。
使用高级搜索更快地找到用户
现在可以使用高级搜索来搜索用户。这个新功能不仅提高了搜索用户的性能,而且还提供了使用高级搜索语法优化搜索的能力。
改进了在管理区域中编辑项目的工作流程
在管理区编辑项目时,用户当前被重定向到相应项目的项目设置页面。该重定向需要多次单击才能返回到原始项目列表,因此对于试图编辑多个项目的管理员来说很麻烦。
为了改进这个工作流程,引入了一个新的项目编辑页面,允许管理员在编辑项目时留在管理区,只需单击一下即可返回项目列表。
学习为 GitLab 配置 Flux
2023年2月,GitLab宣布计划将Flux 与 Kubernetes for GitOps 的代理集成。为了帮助入门,新版本中添加了一个教程来使用GitLab配置Flux以进行生产。
为KAS地址使用专用子域
GitLab的综合安装在主GitLab域上运行Kubernetes 代理服务器 (KAS)。为了与GitLab 图表安装方法保持一致,现在可以在专用子域上为KAS提供 Omnibus安装服务。
GitLab主域上会默认设置/-/kubernetes-agent KAS 地址。
新用户的默认语法高亮主题
设置向新用户或正在查看代码但未登录的用户显示的语法突出显示主题。以前,默认值仅适用于已登录用户,导致未登录用户有时会看到深色和浅色主题突出显示之间的视觉冲突.
GitLab自建实例直接传输迁移不再需要功能标志
通过直接转移迁移带有顶级组的GitLab项目的公开测试版本意味着GitLab自建用户获得了对测试功能的访问权限。但是,实例管理员必须同时启用:
用于迁移组的应用程序设置。
bulk_import_projects用于在组中迁移项目的功能标志。
在新版本中,删除了功能标志,因此只需要应用程序设置。
新版本中GitLab Dedicated实例能够利用该功能。
探索项目、组、片段和主题
新版版本包括一个新页签Explore探索,专门用于浏览和发现GitLab中的各种内容。探索新页签中可帮助查看和搜索不同的内容类型。以前,在搜索内容时很难在类型之间切换。
同样通过此更改,“主题”部分被提升为“探索”部分。更改应更好地适应该功能及其可发现性。
更改有助于促进开源,同时帮助找到与感兴趣的主题相关的内容。
将GitHub存储库协作者导入为GitLab项目成员
直到现在,导入的GitHub项目还没有导入它们的合作者。这意味着没有用户对这些项目有任何权限。作为解决方法,组所有者会在导入之前添加成员。
现在,如果协作者的角色可以映射到GitLab角色,GitLab会将GitHub协作者作为GitLab项目成员添加到导入的项目中。
改进SAML/SCIM配置用户的新体验(2)
当为用户提供SAML或SCIM时,他们电子邮件确认中的链接现在会指示他们通过身份提供商登录。以前,用户会被定向到GitLab登录页面,这可能会造成混淆。
登录通知电子邮件中显示的名称
当的帐户从未知位置登录时,GitLab会发送一封通知电子邮件。此前,这封邮件不包含姓名信息,因此很难判断通知与哪个帐户相关联。此通知电子邮件现在包括用户的全名和用户名。
使用WebAuthn进行双因素身份验证,无需一次性密码
以前,必须先使用基于时间的一次性密码 (TOTP),然后才能在GitLab帐户上添加WebAuthn设备作为双因素身份验证(2FA)方法。
现在,可以添加WebAuthn设备作为2FA方法,而无需使用TOTP。添加 WebAuthn设备作为2FA方法时,必须下载恢复代码,以便在被锁定时可以恢复对帐户的访问权限。
价值流分析中自定义阶段的新配对规则(2)
为了改进价值流分析中开发工作流的跟踪,为MR标签事件和MR合并事件之间的可自定义阶段添加了新的配对规则。
新规则使创建自定义阶段成为可能,例如,测量从MR被标记到workflow::in review合并的时间。
CODEOWNERS定义部分的默认所有者(3)
为文件的每个部分定义默认代码所有者CODEOWNERS。此默认值现在适用于该部分中引用的文件和目录。这样就不必一遍又一遍地重复相同的所有者。仍然可以覆盖单个文件和目录。
在此示例中,所有文件和目录都属于@dev-team,目录README.md除外data-models/。
使用API向Merge Train 添加合并请求(2)
Merge Trains允许对合并请求(MR)进行排序,并在将它们合并到目标分支之前验证它们的更改是否协同工作。以前,要将 MR 添加到合并列车,必须单击 GitLab UI中MR 页面上的按钮。此方法不支持 CI/CD 自动化或某些组织可能想要实施的其他流程。
现在,可以使用Merge Trains API将合并请求添加到Merge Trains,从而通过自动化实现更多控制。
服务台电子邮件的本机附件
客户支持代理经常将屏幕截图和其他文件发送给外部服务台问题作者。但是,如果无法从Internet访问的GitLab实例,或者如果使用的是需要身份验证才能访问问题上传的私有项目,则问题作者将无法访问资产。
在新版本中,最多支持10 MB大的附件到服务台问题评论的文件将作为本机电子邮件附件发送给外部参与者。这允许外部问题作者直接在他们的收件箱中访问资产,而无需通过GitLab访问附件。
Geo 现在验证复制的容器注册表
在新版本中,Geo会自动验证复制的Container Registry的数据完整性。这可确保容器映像在传输或静止时不会损坏。如果Geo被用作灾难恢复策略的一部分,这可以保护免受数据丢失。
代码搜索结果的新语言过滤器(2)
现在可以按一种或多种语言过滤代码搜索结果。新过滤器使用 Elasticsearch 聚合来帮助将结果缩小到特定的编程语言。要使用此功能,必须启用高级搜索。
撤销和创建代理访问令牌触发审计事件(2)
Kubernetes的GitLab代理使用代理访问令牌管理访问。因为它们可用于从 GitLab更新的集群,所以应该定期轮换的代理令牌。GitLab现在会在创建或撤销代理访问令牌时触发审计事件,以支持的安全性和合规性要求。
Omnibus套件改进
GitLab 15.10 升级Mattermost版本到7.8,其中更新了Boards过滤器和组等。此版本还包括安全更新,建议从早期版本升级。
在Omnibus GitLab引入了新的公共版本清单。版本清单文件显示顶级软件版本,重要的是,可以从哪里获取这些版本。这些文件可能需要随时可用以满足不同的云部署要求,因此现在的发布管道将生成一个公共清单版本。
GitLab Runner 15.10
同期也发布了GitLab Runner 15.10。GitLab Runner 与 GitLab CI/CD 协同工作,后者是 GitLab 附带的开源持续集成服务。新的功能包括:
对Kubernetes pod activeDeadlineSeconds的支持。
对自定义 Kubernetes PodSpec 的支持。
新增加gitlab-runner-helper-ocp的ARM64 镜像。
另外还修复了GitLab Runner 15.9中中带来的,Rnner在启动时覆盖config.toml文件的bug。
GitLab 图表改进
添加了将 Azure blob 存储与备份实用程序一起使用的功能。如果正在使用 Azure并希望利用的备份工具,这将非常有用。
引入了一个新的证书容器,该容器certificates基于gitlab-base. 以前,它们构建在 Alpine Linux 之上并命名为alpine-certificates.
Cloud Native UBI8 引入了更小的镜像。通过采用UBI Minimal允许更快速的部署,这些镜像已经变得更小。这是减少跨 GitLab 容器镜像漏洞数量和严重性的更大计划的一部分。
安全和合规性
静态分析分析器更新
GitLab Static Analysis 包括许多由 GitLab Static Analysis 团队主动管理、维护和更新的安全分析器。
15.10 版本新改进和变化有:
KICS分析器 更新至版本 1.6.11。。
PMD Apex分析器 更新至版本 6.54.0。
秘密分析器 更新了新规则。新规则包括:
Sendinblue SMTP 令牌。谷歌云平台 API 密钥。GitLab Runner 身份验证令牌。
Semgrep分析器 更新以完善 Go 规则并改进误报检测。
SpotBugs分析器 改进调试日志记录。
禁用规则时自动解决 SAST 结果
GitLab SAST 现在可以在以下任一情况下自动解决基于Semgrep和KICS的分析器的漏洞:
禁用预定义的规则。
从默认规则集中删除一条规则。
更改可帮助专注于规则更新后仍然相关的漏洞。以前,当规则不再被扫描时,其发现将被标记为“不再检测到”,但需要采取措施来解决它们。新版本中,漏洞管理系统会自动解决这些发现并留下一条注释,说明该规则已被删除,但是该漏洞的历史记录仍然会保存。
该更改将自动解决在最近版本中替换或删除的少量规则的结果。
在新版本中,还删除了一个 JavaScript SAST 规则,该规则会产生过多的误报结果。
GitLab.com 和 GitLab 15.10 中默认启用此功能。在GitLab自建实例上可以禁用名为sec_mark_dropped_findings_as_resolved.
支持2FA Duo方法
登录GitLab时,现在支持基于双时间的一次性密码 (TOTP) 作为双因素身份验证(2FA)方法。
生成新的OAuth客户端密码
对现有的OAuth应用程序,新版本中可以选择更新密码来生成新的客户端密码。通过提供一种获取新秘密的简单方法来提高应用程序安全性。
合规框架报告(3)
以前版本的 GitLab 提供了一份合规性报告,显示合规性违规行为。
在 GitLab 15.10 中,添加了一个合规性框架报告,这样就可以一目了然地看到哪些合规性框架已应用于组中的项目。
依赖扫描的可配置深度(3)
GitLab Dependency Scanning 现在支持一个新DS_MAX_DEPTH变量,允许用户扫描他们的整个存储库以查找锁定文件。默认情况下,此变量默认仅扫描最多两个目录;但是,用户可以将变量设置为更大的数字或值-1以扫描他们的整个存储库。
对新的许可证合规性扫描器的自我管理支持(3)
自建GitLab实例现在完全支持新的许可证合规性扫描方法,包括在离线环境中运行的实例。但是目前是默认禁用两个功能标志。
要试用功能,需要配置启用license_scanning_sbom_scanner和package_metadata_synchronization功能标志,并将Jobs/License-Scanning.gitlab-ci.ymlCI 配置中的模板替换为Jobs/Dependency-Scanning.gitlab-ci.yml模板。
Jobs/License-Scanning.gitlab-ci.yml在GitLab 16.0及更高版本中,将不再支持使用模板扫描的旧方法。
通过过滤出站请求提高安全性
为了防止数据丢失和暴露的风险,GitLab管理员现在可以使用出站请求过滤控件来安全地管理他们的实例。使用此设置,可以阻止所有请求并在允许列表中定义接受的IP地址和域,以便为出站流量建立安全路由。
使用扫描执行策略(SEP)强制执行IaC扫描(3)
用户现在可以要求SAST IaC扫描定期运行或作为项目CI管道的一部分,独立于.gitlab-ci.yml文件的内容。这样可以让安全团队单独管理这些扫描要求,而无需开发人员更改配置。
可以通过在安全与合规性 > 策略页面上创建扫描执行策略来开始。
升级更新
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