GitLab 14.0发布,在DevOps和Git存储等方面有大幅改善


前天,按Gitlab一贯的发版规律,Gitlab官方发布了又一个里程碑大版本GitLab 14.0 。在GitLab 14中,Gitlab DevOps工具链更加现代。GitLab 14 是一个完整的DevOps平台,其中贯穿了安全性、单数据存储支持下可见性和洞察力,支持无缝集成和可扩展系统,用户和企业从中获得速度和效率的收益,其详尽的功能请随虫虫一起学习。

GitLab 14.0主要功能

Epic面板

Epic面板通过持续传达Epic状态来调整团队和组织。之前版本的GitLab要求列表中查看和排序Epic以查看整体状态。Epic面板在一个统一的地方可视化和优化所有Epic,使用可自定义的拖放界面,任何用户都可以轻松理解和协作。

Epic面板也是管理和可视化理想Epic工作流的游戏规则改变者,例如创作工作流状态(草稿、写作、完成)、DevOps 工作流状态(例如计划、开发和生产中)或任何其他互斥的说明可以使用范围标签进行建模。使用 Epic面板可视化工作流程使能够提高可预测性和效率。

Terraform 模块注册表

Terraform 模块在构建整个组织的标准基础架构组件方面发挥着核心作用。在 GitLab 13.12更老的版本中,GitLab 用户必须使用第三方Terraform 模块注册表、本地模块或基于Git的模块。虽然这些选项运行良好,但它们无助于模块的分发,并且它们缺乏适当的版本控制支持,这给模块用户带来了风险。GitLab 14.0使用 Terraform 模块注册表扩展了IaaS。现在,可以使用 GitLab 中内置的Terraform 模块注册表来发现具有语义版本控制支持的 Terraform 模块,以支持升级和维护。此外,还可以使用 GitLab CI/CD 轻松发布模块。

在遵循Terraform 的最佳实践的同时,建议在专用的GitLab项目中开发每个Terraform模块。为了简化到注册表的转换,用户可以从单个GitLab存储库托管和发布多个模块。

简化的顶部导航菜单

GitLab 14.0 引入了全新的、简化的顶部导航菜单,可帮助用户以更少的点击次数更快地到达目的地。新的菜单提供了以前的项目、组和更多菜单的组合功能。只需单击一下,就可以访问项目、组和实例级功能。此外,全新的响应式视图改善了小屏幕上的导航体验。

VS Code 中合并请求评论

作为一名开发人员,通常大部分时间花在本地开发环境中。当被分配了一个合并请求进行审查时,需要离开编辑器并在GitLab内执行该审查。在GitLab中执行审核时,可能还需要使用本地编辑器来获取有关更改的更多背景信息。

适用于 Visual Studio Code (VS Code) 的GitLab 工作流3.21.0版本现在支持完整的合并请求审查过程,包括线程。在 VS Code 中选择GitLab图标以打开侧边栏以显示正在审查的合并请求。选择合并请求概述以查看合并请求的完整详细信息和讨论。

侧边栏还包含合并请求中所有更改文件的列表。选择文件会打开差异比较,供查看VS Code中的更改。在查看差异时,可以阅读文件上留下的反馈,并通过选择行号和创建评论来创建新评论。在VS Code中提供的所有评论和反馈都可以在 GitLab 网络界面中找到,让开发者可以轻松地在VS Code中执行评论。

全新设计的侧边栏

GitLab很大,而且功能越来越丰富。随着新的功能和类别的引入,密集的左侧边栏导航变得不那么直观了。

GitLab 14.0 中,重新设计和重构了左侧边栏,以提高可用性、一致性和可发现性。新版本中一些指向周围功能的链接,将“操作”菜单中的功能分成三个不同的菜单,改进了视觉对比度并优化了间距,以便所有菜单项都可以舒适地放在较小的屏幕上。这些更改旨在更好地匹配DevOps生命周期心智模型,并在项目和组中导航时提供更可预测和更一致的体验。

使用 WYSIWYG Markdown 编辑器编辑wiki页面

许多GitLab wiki使用 Markdown 格式,对于一些用户来说,Markdown 是高效协作的障碍。在新版本中,现在可以在wiki使用丰富、现代的 Markdown 编辑体验,因此可以放心地进行编辑。

即时反馈和可视化编辑工具有助于使wiki编辑更加直观,并消除协作障碍。完成后,GitLab 会将更改保存为Markdown,因此想要直接编辑Markdown的用户可以这样做。甚至可以在新编辑器中输入Markdown,它会在输入时自动格式化文本。

GitLab 14.0 将内容编辑器引入Wiki,支持大多数基本 Markdown 内容类型,如标题、粗体和斜体文本、列表、代码块和链接。对整个GitLab Flavored Markdown 规范的全面支持将在即将发布的版本中提供。计划在未来在 GitLab 的其他领域提供内容编辑器。

集群管理项目模板

在新版本中,不再使用基于CI/CD模板的集群管理方法。集群管理是管理 Kubernetes 集群以提高在集群上运行的应用程序可用性的能力。旧方法隐藏了太多逻辑,限制了应用程序的自定义和扩展。使用新方法,可以轻松地从项目模板创建集群管理项目并完全控制您的应用程序。使用新模板创建的项目包含集群管理作业所需的代码,包括对多个应用程序的内置支持。可以轻松地将项目扩展到其他应用程序并完全拥有它们。

此外,将使用 Helm v3 安装新应用程序。如果以前使用 Helm v2 安装了GitLab 托管应用程序,请查看Helm 迁移指南和GitLab 托管应用程序迁移指南。CI/CD 作业输出还将指导完成这些迁移。

在 GitLab 14.0 中,集群管理项目仅支持基于证书的集群集成。计划在下一个版本中添加对 GitLab Kubernetes 代理的支持。

使用初始模板预填充 CI/CD 管道编辑器

GitLab中的管道编辑器是和CI/CD 管道交互时的一站式工具。以前,在使用编辑器编写第一个管道时,会看到一个空白配置。虽然对于经验丰富的管道作者来说非常有用,但对于那些刚刚开始的人来说,这是一个飞跃。

在新版本中,如果项目没有配置管道,编辑器会预加载3阶段管道的示例模板。用户可以立即保存并运行此管道,以查看它在项目中的运行情况。最重要的是,它还具有详尽地语法的注释,以及帮助开始自定义模板以满足需求的提示。

组级别合并请求的提前期(ULTIMATE)

作为GitLab中本地支持DORA4 指标的努力的一部分,合并请求图表的提前期现在可在组级别使用。新版本中扩展了GitLab 13.11 中完成的工作,可以使用一个图表来显示将合并请求部署到生产环境(不仅仅是在单个项目中,而是跨组聚合)所需的时间。可以全面了解多个项目的吞吐量。

项目级价值流分析的水平导航

项目级价值流分析的各个阶段现在以水平布局显示。这有助于可视化价值流各个阶段的工作流程。它还与集团级价值流分析中的导航体验相匹配。

用于将组添加到 DevOps采纳表的改进界面(ULTIMATE)

DevOps采纳表通过按组和子组进行比较,深入了解 GitLab 在整个组织中的采用情况。以前,最多可以向表中添加200个组,较大的组织可以拥有数千个 GitLab组。现在可以使用可搜索的下拉列表将任何子组添加到表中。

跟踪代码所有者的使用情况(ULTIMATE)

代码所有者是GitLab中代码审查过程的重要组成部分。当代码所有者被明确标识时,贡献者可以看到谁应该审查对文件或存储库的贡献。代码所有者功能还可用于建立合并请求批准流程。现在,可以跟踪组织中的哪些团队在其开发工作流程中使用代码所有者功能。

如果想推动代码所有者的采用,请按代码所有者列对DevOps采纳表进行排序,以查找尚未采用该功能的团队,以便可以轻松确定哪些团队需要帮助入门。或者,查找已成功配置代码所有者的团队并获取提示和反馈。DevOps采纳表在组级别和实例级别可用。

Wiki 编辑的Slack 通知中包括指向差异的链接

Slack通知服务可以在用户编辑Wiki页面时通知。Slack消息为提供有关编辑的有用上下文,包括项目、页面名称和提交消息。但是,有时,提交消息没有提供足够的上下文,需要有关内容如何更改的更多信息。

现在,可以单击Slack 消息中的比较更改以立即查看差异,从而节省时间并减少因不明确或不完整提交消息而造成的混淆。

用于环境操作的预定义CI/CD变量

如果想使用environment:关键字在部署作业之间重用脚本和配置,则很难根据部署作业执行的操作类型排除某些行为。例如,一个environment: actionofstop可能是一个停止a的作业review_app,并且不希望您的部署脚本运行。

新版本中environment: action:的值可用作CI_ENVIRONMENT_ACTION预定义的 CI/CD 变量,从而比以往任何时候都更容易配置一个适用于所有部署作业的脚本。

组或子组安装 PyPI 包

可以使用项目的包注册表来发布和安装PyPI包。当安装PyPI包时,必须指定该包所在的项目。如果项目数量较少,这很有效。如果在一个组中嵌套了多个项目,可能很快会发现自己添加了数十个甚至数百个不同的源。

对于拥有多个团队的大型组织,团队通常将包与源代码和管道一起发布到项目的包注册表。但是,他们还必须能够轻松安装来自组织内其他项目的依赖项。现在可以在组级别安装包,因此不必记住哪个包位于哪个项目中。为此,可以使用简单的API来指定包:

GET groups/:id/packages/pypi/files/:sha256/:file_identifier.

还可以将输出写入文件,或将包描述符作为HTML 文件返回。

功能标志用户列表

以前,要访问用户列表,必须导航到“功能标志”页面下的单独选项卡。这种设计模糊了特征标志和用户列表之间的关系,因为用户列表是特征标志的一个子特征。在性能版本中,用户列表现在位于功能标志的子页面下,这改进了工作流程并使它们之间的关系更加清晰。

动态更新事件服务级别协议计时器(PREMIUM)

GitLab 13.5 中引入的事件服务级别协议(SLA) 计时器显示了事件违反SLA之前的剩余时间。但是,用户必须刷新页面以更新计时器。从GitLab 14.0开始,无需刷新页面,计时器每15分钟动态更新一次。

数据库负载平衡免费开放

GitLab 的数据库负载平衡器支持跨多个数据库服务器分发只读查询。对于拥有数千用户的GitLab实例,使用负载均衡器可以减少主数据库的负载并提高响应速度,从而加快GitLab内的页面加载速度。

在新版本中,负载均衡器从高级版免费开放,以让更多用户受益于此功能。

升级Ruby on Rails到 6.1

在新版本中,Ruby on Rails升级到了6.1版,以利用应用程序框架的最新改进。

性能栏显示使用了多少内存

性能标准允许系统管理员和软件开发人员能够了解GitLab页面的性能。提高所用内存的可见性对于软件开发人员很重要,因此可以提高 GitLab 的性能和用户体验。在新版本中,新添加了一个内存字段,用于显示消耗的内存量和为当前请求分配的对象。选中后,将显示一个带有附加信息的视图。有了这些信息,软件开发人员就可以更早地发现内存问题,并开发出更多内存效率和性能更高的功能。

在组级别识别已配置的用户

在新版本中,添加了识别配置用户和贡献者的功能。针对已配置的用户显示新的企业标签。这有助于用户识别组通过SCIM自动化创建的帐户,而不是用户手动创建的帐户。

默认情况下启用实例级 DevOps使用报告(ULTIMATE)

现在默认启用实例级DevOps使用报告。DevOps使用报告显示组织中正在使用 GitLab的团队的信息:

问题、合并请求、批准、Runner、管道、部署、扫描。

通过将组添加到采纳表,比较整个组织中GitLab的使用情况。可以使用DevOps使用报告方式有:

验证是否从GitLab获得了预期的投资回报。

确定在采用GitLab方面滞后的特定群体,以便可以帮助推进。

确定采用了特定功能(例如管道)的组,并向对开始使用这些功能感兴趣的其他组提供提示。

这只是衡量组织中DevOps使用情况并评估收益,要了解接下来要添加的内容,DevOps使用报告也可在组级别获得。对于SaaS用户,通过查看顶级组中的 DevOps使用报告,获取整个组织的使用情况。

在 GitLab 用户配置文件上设置代词

代词已添加到GitLab用户配置文件中。代词出现在“个人资料”选项卡中的用户名旁边,可以用来:

决定是否在个人资料中添加代词。

自我识别并输入您喜欢的任何代词,无需从预定义列表中进行选择。

除了更具包容性之外,GitLab还希望帮助人们在回复评论时使用正确的代词以尊重人们的身份。

Fork时编辑默认路径和项目名称

Fork项目使用户能够拥有原始存储库的精确副本,在其中进行试验、应用更改并提交对父项目的贡献。分支应该具有有意义的名称来解释其目标,如果项目有Fork,可能需要一个项目的多个分支。

在新版本中,GitLab支持在创建fork时直接编辑项目名称和项目slug。现在可以为同一个项目创建多个分支,每个分支都有不同的名称,都在同一个组中。

添加“~”到 CI/CD 变量掩码支持字符

必须安全管理存储在CI/CD变量中的密码。可以通过屏蔽变量来隐藏作业日志中的变量值,但GitLab仅支持某些字符。新版本中支持在值中使用“~”来屏蔽变量,这扩展了该功能以支持从其他秘密提供者平台生成的更多秘密。

确定哪些作业触发了下游管道

此前,在查看管道视图时,很难确定哪个作业触发了下游管道。从14.0开始,每个下游管道都会显示触发它的作业的名称。这使得在触发下游管道的复杂管道中跟踪执行流变得更加容易。

通过UI删除关联的包文件

可以使用GitLab包注册表来发布、安装和共享依赖项。当发布依赖项时,会生成多个文件,包括包存档。在GitLab 14.0之前,要删除此类文件,必须使用API。GitLab 14.0 中,现在可以使用UI删除与给定包相关的文件以及包本身。

由于维护整洁的注册表可能具有挑战性,因此目标是通过添加更多关于如何删除未使用文件的选项,让流程更轻松、更高效。

更改问题的类型

在某些情况下,可能希望更改问题的类型。例如,可能希望将问题升级为事件,以确保团队正确处理问题。要更改问题的类型,请编辑问题并从问题类型选择器菜单中选择问题类型。

Grype的容器扫描集成(ULTIMATE)

GitLab容器扫描现在可以选择使用Grype扫描引擎而非默认的Trivy引擎。这为用户提供了选择容器扫描引擎的灵活性和选择。对两款开源扫描仪进行了比较。但是,由于每台扫描仪都是独一无二的,可能希望自己进行比较以决定哪种扫描仪最适合。用户可以通过设 CI变量来试 Grype扫描仪:

CS_ANALYZER_IMAGE: registry.gitlab /security-products/container-scanning/grype:4。

REST 和 GraphQL API 中可用的项目存储位置

随着散列存储的引入,将不好发现项目的存储位置。系统管理员能够在项目的管理UI上查找路径,但对于许多项目来说这样做是不切实际的。在新版本中,新添加了公开项目存储信息的API接口。在REST API中,这个接口是

GET /projects/:id/storage.

对GraphQL,该diskPath字段现在在Repository对象中可用。

GitLab Runner 14.0

同期还还发布了GitLab Runner 14.0。新功能包括:

Windows Runners下默认shell为pwsh;

引入Ubuntu风格的runner-helper镜像。

修复一些Bug:

PowerShell不能与FF_USE_LEGACY_KUBERNETES_EXECUTION_STRATEGY设置为 false一起使用;

在shell执行器中永久阻塞Go例程;

失败原因job_canceled可以发送给Rails,失败并返回 500 错误

Gitlab Runner无法解析GitlabURL-Kubernetes 执行器的bug。

Omnibus改进

GitLab 14.0 包括Mattermost 5.35.3。由于引入了即将推出的新功能所需的后端数据库架构,v5.35 版本的迁移过程的性能受到显著影响。根据数据库的大小、类型和版本,升级时间应该会比平时更长。这可能从几分钟(平均情况)到几小时(最坏情况,仅限 MySQL 5.x)不等。在此过程中,还应该预期数据库 CPU 使用率会出现中度显著峰值。v5.35.3 引入了搜索文件的新功能以及批量用户导入期间使用的密码生成逻辑的一些更改。管理员应立即重置批量导入过程中生成的所有用户的密码,并且其密码甚至一次都没有更改。v5.35.3 还包含高级安全修复,建议升级。

此前,新的GitLab 实例会在安装后默认提示用户输入初始root密码,这意味着匿名用户可以先到达那里设置root密码并进行控制。新版本中,如果用户未提供初始 root 密码,则会随机创建一个。这提高了新部署 GitLab实例的默认安全性。

Omnibus GitLab docker镜像中现在包含 BusyBox,但删除了作为预安装编辑器的vim和nano。BusyBox汇集了许多其他工具的最小版本,通过将BusyBox设为默认编辑器,可以获得许多在容器内部调试时有用的其他工具。

安全和合规性审计

合并相同的DAST 漏洞聚合为一个漏洞(ULTIMATE)

在 GitLab 13.12 及更早版本中,扫描中发现的所有DAS 漏洞都针对发现漏洞的单个URL列出。当修复为单个文件或配置更改时,这可能会产生许多漏洞。例如:每个HTTP响应一起发送的服务器标头的问题将在站点的每个页面上报告,而不是报告为多次出现的单个问题。

为了减少管理漏洞的开销,GitLab将在多个页面上发现的相同漏洞合并到 DAST 报告中的单个报告漏洞中。漏洞详细信息包括发现漏洞的所有URL的列表,而不是在每个页面的漏洞列表和仪表板中创建的单个漏洞。

新的报告功能不会追溯组合以前扫描中发现的漏洞。它仅适用于在 GitLab 14.0 及更高版本中执行的扫描。

默认情况下强制执行 SSH 密钥过期

添加到GitLab的过期SSH 密钥现在默认禁用。这将有助于使GitLab实例更加安全。以前,添加到GitLab的过期SSH密钥默认启用,除非管理员明确禁用,否则可以使用。

此更改会影响GitLab SaaS上使用的过期SSH密钥。如果密钥已过期或即将过期,需要更新密钥和使用它们的任何服务。我们关于SSH密钥的文档提供了有关如何创建新 SSH 密钥的有用步骤。

自建实例的管理员仍然可以配置允许使用过期的密钥。

安全报告广义细节结构(ULTIMATE)

自动安全扫描是任何安全开发过程的重要组成部分。有各种各样的工具和技术涵盖了从源代码扫描到部署后应用程序和基础设施扫描的整个SDLC。虽然这些工具中的任何一个的最终目标都是发现已知和潜在的漏洞,但来自任何给定扫描仪的信息可能会有很大差异。确实存在对扫描输出数据进行标准化的努力,但他们往往只关注一类扫描技术,甚至是一组特定的工具。这对需要汇总各种扫描仪发现的安全团队来说是一个巨大的挑战。如果没有统一的方法来标准化不同的发现,查看每个扫描仪输出的独特细节可能是非常麻烦。

GitLab安全报告模式中新的通用详细信息结构优化这个体验,可以轻松地将各种安全扫描器集成到GitLab中。现在,可以进一步使用丰富的格式选项来查找详细信息。新结构可以轻松地将大多数工具的现有输出映射到JSON报告格式,同时自动添加一致的呈现逻辑。在不牺牲提供丰富漏洞发现数据的能力的情况下的灵活性是新结构背后的主要目的。使用预定义数据类型在开放结构中提供详细信息。预定义的类型处理数据验证以及GitLab内的标准化UI呈现。例如,提供整数、URL、表格,甚至 GFM(GitLab Flavored Markdown)。这允许对如何呈现查找细节进行精细控制,同时保持 GitLab 内部的整体体验一致。

容器扫描与 Trivy 集成(ULTIMATE)

GitLab中的容器扫描现在默认使用Trivy引擎。此更改为客户提供更及时的漏洞情报更新、更准确的结果以及对更多操作系统的支持。使用默认设置运行容器扫描的用户会无缝自动切换到GitLab 14.0中的新引擎。

SAST分析器固定到特定的版本

随着GitLab安全扫描工具的成熟,需要为发布过程添加更多的粒度。此前,GitLab 为所有的分析器和工具共享了一个主要版本号。这要求所有工具共享一个主要版本并防止使用语义版本编号。从14.0开始,GitLab SAST 删除了托管的 SAST.gitlab-ci.yml CI 模板中的全局变量SAST_ANALYZER_IMAGE_TAG,以支持分析器作业变量在 SAST 供应商模板中设置“major.minor”标签。每个分析器作业现在都有一个作用域SAST_ANALYZER_IMAGE_TAG变量,该变量将由 GitLab 主动管理并设置为相应分析器的“主要”标签。要固定到特定版本,只需将变量值更改为特定版本标记。如果覆盖或维护自定义版本,SAST.gitlab-ci.yml将需要更新CI模板以停止引用全局SAST_ANALYZER_IMAGE_TAG并将其移动到范围分析器作业标签。强烈鼓励继承和覆盖托管 CI 模板,以确保CI模板面向未来。此更改将允许使用固定major.minor版本更精细地控制未来的分析器更新。

静态分析分析器更新

GitLab 静态分析由一组许多安全分析器组成,GitLab 静态分析团队积极管理、维护和更新这些分析器。14.0发布的分析器更新包括覆盖范围、错误修复和改进。

Semgrep更新到2.8.0版;

修复了多行通用模式的错误行号;

使用SAST_EXCLUDED_PATHS 传递给 semgrep 以在semgrep运行时排除;

性能优化;

将url添加到报告中规则的主要标识符以链接到基础规则;

GoSec更新到3.1.0版;

移除SAST_GOSEC_CONFIG支持;

添加COMPILE变量以支持在需要时跳过依赖项获取;

添加GOSEC_GO_PKG_PATH变量以提供设置go构建应用程序的位置的选项;

更新依赖获取以仅下载包而不是构建/安装默认情况下:

Flawfinder 更新至2.0.17版;

SpotBugs更新至2.28.3版;

更新的依赖项:

PMD-Apex更新到版本 2.12.3:提高规则准确性,修复错误。

ESLint更新到7.27.0版。

注意,该分析器计划在即将发布的版本中被Semgrep取代。

如果包含GitLab托管的供应商 SAST 模板(SAST.gitlab-ci.yml),则无需执行任何操作即可接收这些更新。但是,如果覆盖或自定义自己的CI模板,将需要更新CI配置。如果想继续使用任何分析器的特定版本,现在可以固定到分析器的次要版本。固定到以前的版本将阻止接收自动分析器更新,并要求在 CI 模板中手动增加分析器版本。

GitLab Chart改进

对于 GitLab 14.0,预计Kubernetes 的最低版本为 1.16。

Kubernetes 代理服务器 (KAS) 部署无法指定imagePullSecret。将导致 K8s 因未授权而失败。现在,随着 pullSecrets 的出现,镜像获取成功并且 Pod 启动。

Cert Manager升级到 1.2.0。

Grafana 镜像版本升级到 6.9.1。Chart部署的Grafana功能现在与Omnibus(在 7.5.5 上)相当。

GitLab Geo改进

GA中对 PostgreSQL 高可用性的Geo支持(PREMIUM)

Patroni是PostgreSQL高可用性的解决方案,它也允许在Geo Secondary上配置高可用的PostgreSQL备用集群。当将辅助站点用作灾难恢复策略的一部分时,该配置很重要,因为它允许系统管理员镜像主站点和辅助站点上的数据库节点数量。这样在故障转移后,无需配置额外的数据库节点即可重新获得高可用性。

新版本中Geo使用Patroni为高度可用的PostgreSQL配置提供普遍可用的支持。

重新设计Geo站点仪表板(PREMIUM)

Geo复制和验证许多不同的数据类型。系统管理员需要监控其Geo站点的健康状况,以了解是否存在任何需要注意的问题,例如项目无法同步或校验和不匹配。重新设计的Geo站点仪表添加了更多有用的指标,例如数据类型的同步和验证摘要,以及各个数据类型组件的验证状态栏。还改进了页面的组织方式,减少了显示重要信息所需的点击次数。

Bug修复

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

清理策略可能会卡在正在进行的状态;

漏洞报告上的活动过滤器在组级仪表板上引发错误;

管道安全选项卡上的扫描器过滤器不过滤结果;

在容器扫描中未找到误导性 Dockerfile 错误;

每日容器扫描更新被破坏;

cilium 1.8.1 图表在最新版本的 GKE 中表现不佳;

共享过滤搜索栏不允许选择多个标签;

VSA - 删除标签过滤器后无法添加新标签过滤器;

VSA - 无法删除或编辑持久化的默认阶段;

DevOps采纳工具提示显示不正确的数据;

生产力分析:趋势线图表未加载,因为n.response未定义;

标签过滤不适用于 Slack 通知集成;

diffs_metadata 返回 500 错误;

无法编辑具有未选中可合并性状态的 MR;

无法查看合并请求的旧差异版本;

除非选中、保存和取消选中,否则“防止作者批准 MR”将被忽略;

SSH 密钥过期通知电子邮件未针对过去已过期的 SSH 密钥发送;

项目永远陷入索引并使用大量资源;

全局搜索结果中的合并请求引用错误;

“取消管道”按钮在未经许可的情况下对用户可见;

只有external_pull_requests更改不起作用;

使用可选需求会导致管道视图中出现渲染错误;

将用户首选项中的正确 Gitpod URL 用于自我管理的实例;

修复gitlab:incoming_email:check13.12 更改后的 rake 任务;

从需求导出中的描述字段中删除额外的字符;

使用非唯一项目后缀时防止服务台电子邮件被拒绝;

修复一些不适用于 GraphQL 板列表的过滤器;

GraphQL EpicsResolver 不处理timeframe参数;

无法为以前可以启用的项目启用通知开关;

stateDiagram-v2不呈现带有状态描述的美人鱼;

延迟更新打开合并请求并在 Geo 二级上发布计数徽章;

性能改进

在每个版本中,我们都继续大步提高 GitLab 的性能。我们致力于使每个 GitLab 实例更快。这包括 GitLab.com,一个拥有超过 100 万用户的实例!

在 GitLab 14.0 中,我们正在为问题、项目、里程碑等提供性能改进!GitLab 14.0 的一些改进是:

提高负载下合并请求列表 API 的性能;

UpdateMergeRequestsWorker 可能很贵;

引用Epic中的 N+1 问题;

启用片段以使用参考过滤器缓存;

启用标签以使用参考过滤器缓存;

可用性改进

在GitLab14.0中,在问题、项目、里程碑等提供可用性改进。重点改善包括:

组概览分析:用单个stat替换指标卡。

显示与包关联的哈希值。

当合并请求中的最新管道未通过时,将“Start/Add Merge Train”按钮设为红色。

功能变更和删除

NFS for Git存储库存储

迁移日期:2022 年6月22 日

随着 Gitaly Cluster普遍可用性, GitLab 14.0中停止NFS for Git存储库存储的的开发(错误修复、性能改进等)。将在 14.x 中继续为Git存储库的NFS 提供技术支持,但在GitLab 15.0中删除对 NFS 的所有支持。

Gitaly Cluster提供了巨大的好处,例如:

可变复制因子。

强一致性。

分布式读取能力。

当前使用 NFS for Git 存储库的客户建议迁移到 Gitaly Cluster。

计划搬迁日期:

Terraform CI 模板的重大更改

迁移日期:20221年6月22 日

Terraform CI模板更新到最新版本。新模板是为 GitLab Managed Terraform 状态设置的,依赖于 GitLab terraform-images镜像,以围绕 GitLab 的基础设施即代码功能提供良好的用户体验。

当前稳定版和最新版模板不兼容,从 GitLab 14.0 开始,当前最新版模板成为稳定版模板,如果运行自定义init作业, Terraform 管道可能会遇到意外故障。

代码质量 RuboCop 支持已更改

默认情况下,如果使用代码质量模板,代码质量功能不支持 Ruby 2.6+。为了更好地支持 Ruby 的最新版本,默认的 RuboCop 版本已更新,以添加对 Ruby 2.4 到 3.0 的支持。因此,删除了对 Ruby 2.1、2.2 和 2.3 的支持。

容器扫描引擎 Clair

默认容器扫描引擎 Clair 在 GitLab 13.9 中已弃用,并在GitLab 14.0中删除并由 Trivy 取代。

DAST 环境变量重命名和删除

GitLab 13.8 重命名了多个环境变量,以支持它们在不同工作流程中的更广泛使用。在 GitLab 14.0 中,旧变量已被永久删除。使用这些变量的任何配置都必须更新为新的变量名称。在 GitLab 14.0 及更高版本中使用这些变量的任何扫描都将无法正确配置。这些变量是:

DAST_AUTH_EXCLUDE_URLS ->DAST_EXCLUDE_URLS。

AUTH_EXCLUDE_URLS->DAST_EXCLUDE_URLS。

AUTH_USERNAME->DAST_USERNAME。

AUTH_PASSWORD->DAST_PASSWORD。

AUTH_USERNAME_FIELD->DAST_USERNAME_FIELD。

AUTH_PASSWORD_FIELD->DAST_PASSWORD_FIELD。

DAST_ZAP_USE_AJAX_SPIDER->DAST_USE_AJAX_SPIDER。

DAST_FULL_SCAN_DOMAIN_VALIDATION_REQUIRED将被删除

在 GitLab 14.0 中重命名默认浏览器性能测试作业

浏览器性能测试已在performance默认命名的作业中运行。随着GitLab 13.2 中引入负载性能测试,这种命名可能会令人困惑。要清楚其工作运行浏览器性能测试,默认作业名称从browser_performance改变performance到模板中。

默认 DAST 蜘蛛开始在目标 URL 处爬行

在 GitLab 14.0 中,DAST 删除了当前在开始爬虫时将扫描重置为主机名的方法。在 GitLab 14.0 之前,蜘蛛不会从 URL 的指定目标路径开始,而是会重置 URL 以在主机根目录开始爬行。GitLab 14.0改变为新变量默认DAST_SPIDER_START_AT_HOST以false更好地支持用户的开始抓取,并在指定的URL进行扫描,而不是主机根URL的意图。此更改有一个额外的好处:如果指定的路径不包含指向整个站点的链接,则扫描可以花费更少的时间。这样可以更轻松地扫描应用程序的较小部分,而不是在每次扫描期间抓取整个应用程序。

新存储库的默认分支名称为main

每个 Git 存储库都有一个初始分支,master默认命名。它是您创建新存储库时自动创建的第一个分支。未来的Git 版本会将Git 中的默认分支名称从master更改为main。与 Git 项目和更广泛的社区协调,GitLab 更改了SaaS和自 GitLab 14.0 开始的自建实例新项目的默认分支名称。这不会影响现有项目。

GitLab 已经引入了一些更改,允许在实例级别(自建实例用户)和组级别(对于 SaaS 和自建实例用户)更改默认分支名称。

GraphQL 删除字段

根据GraphQL删除流程,以下在 13.7 之前放弃的字段在 14.0中完全删除:

Mutations::Todos::MarkAllDone, Mutations::Todos::RestoreMany-:updated_ids
Mutations::DastScannerProfiles::Create, Types::DastScannerProfileType-:global_id
Types::SnippetType —— :blob
EE::Types::GroupType, EE::Types::QueryType-:vulnerabilities_count_by_day_and_severity
DeprecatedMutations (concern**)- AddAwardEmoji, RemoveAwardEmoji,ToggleAwardEmoji
EE::Types::DeprecatedMutations (concern***)- Mutations::Pipelines::RunDastScan, Mutations::Vulnerabilities::Dismiss,Mutations::Vulnerabilities::RevertToDetected

依赖扫描的删除

依赖扫描的一些删除生效。

以前,要排除 DS 分析器,您需要将其从默认的分析器列表中删除,并使用它来设置DS_DEFAULT_ANALYZERS项目 CI 模板中的变量。我们确定避免运行特定分析器而不失去新添加的分析器的好处应该更容易。因此,我们要求您在可用时从DS_DEFAULT_ANALYZERS到迁移DS_EXCLUDED_ANALYZERS。以前,为了防止 Gemnasium 分析器在运行时获取咨询数据库,您需要设置该GEMNASIUM_DB_UPDATE变量。但是,这没有正确记录,并且其命名与等效BUNDLER_AUDIT_UPDATE_DISABLED变量不一致。因此,我们要求您在可用时从GEMNASIUM_DB_UPDATE到迁移GEMNASIUM_UPDATE_DISABLED。

updated_at从部署 API删除过滤器

从项目部署 API接口提取数据以填充 GitLab 中的自定义仪表板,可能已经注意到没有办法限制 API 结果仅显示最新更改。为了克服这个问题,必须检索所有记录,逐一检查结果,并仅处理updated_at在检索到的最后一批中的最新值之后更新的记录。为了使这个过程更加高效和高效,该 API在 GitLab 14.0 中发生了变化。updated_after和updated_before参数将被替换finished_after和finished_before参数。这将使用户能够更有效地选择他们有兴趣检索的部署。

外部管道验证服务代码更改

对于使用实验性外部管道验证服务的自建实例,GitLab 接受的错误代码范围将减少。当前,当验证服务返回响应代码时,管道将失效从400 to 499。在 GitLab 14.0 及更高版本中,管道将406: Not Accepted仅对响应代码无效。

删除了Geo外部数据包装器设置

正如GitLab 13.3 中所宣布的,以下配置设置/etc/gitlab/gitlab.rb已在 14.0 中删除:

geo_secondary['db_fdw']
geo_postgresql['fdw_external_user']
geo_postgresql['fdw_external_password']
gitlab-_rails['geo_migrated_local_files_clean_up_worker_cron']

GitLab OAuth 隐式授权

GitLab 放弃OAuth 2 隐式授权流程,因为它已被OAuth 2.1删除。

从 14.0 开始,无法使用 OAuth 2 隐式授权流程创建新应用程序。14.4 不再支持现有的 OAuth 隐式授权流。在 14.4 版之前将现有应用程序迁移到其他受支持的OAuth2 流。

Container Registry 中的 GitLab Runner 助手镜像

在 14.0 中,从 GitLab Container Registry 而不是 Docker Hub 中提取 GitLab Runner助手镜像

GitLab Runner 安装忽略skel目录

在 GitLab Runner 14.0 中,安装过程skel在创建用户主目录时默认会忽略该目录。

Gitaly Cluster SQL 主选举人已被移除

现在 Praefect 支持每个存储库的主要选举策略,已经删除了sql选举策略。在per_repository选举战略是新的默认设置,如果没有指定的选举策略,会自动使用。

如果已经配置了sql选举策略,必须在升级迁移

Helm v2 支持

Helm v2 于2020 年11月正式放弃,此后不久该stable存储库从 Helm Hub 中除名。随着 GitLab 14.0 的发布,其中将包括GitLab Helm chart的 5.0 版本,Helm v2 将不再受支持。

图表用户应升级到 Helm v3以部署 GitLab 14.0 及更高版本。

已删除旧版功能标志

旧版功能标志在 GitLab 13.4 中变为只读。GitLab 14.0 删除了对旧功能标志的支持,因此必须迁移到新版本。可以先记下遗留标志(屏幕截图),然后通过 API 或 UI 删除标志(不需要更改代码),最后创建一个与以下名称相同的新功能标志您删除的旧标志。此外,请确保策略和环境与已删除的标志相匹配。

旧存储已移除

由于在GitLab 13.0宣布,原有的存储已GitLab 14.0删除。

限制返回的项目 GET /groups/:id/

为了提高性能,将从GET /groups/:id/API 调用返回的项目数量限制为 100。仍然可以通过GET /groups/:id/projectsAPI 调用检索完整的项目列表。

pwsh为新注册的Windows运动员默认的shell

在 GitLab Runner 13.2 中,Shell 执行器中添加了 PowerShell Core 支持。在 14.0 中,PowerShell Core pwsh现在是新注册的 Windows 运行程序的默认 shell。Windows CMD仍可用作Windows 运行程序的shell选项。

迁移SAST_DEFAULT_ANALYZERS至SAST_EXCLUDED_ANALYZERS

从13.9 开始,迁移到SAST_EXCLUDED_ANALYZERS SAST.gitlab-ci.yml文件中。鼓励在其项目 CI 文件中使用自定义 SAST 配置的任何人迁移到这个新变量。如果您没有覆盖SAST_DEFAULT_ANALYZERS,则不需要任何操作。CI/CD 变量SAST_DEFAULT_ANALYZERS已经被删除

新的Terraform 模板版本

随着不断开发 GitLab 的 Terraform 集成,为了最大限度地减少客户中断, Terraform 维护了两个 GitLab CI/CD 模板:

在“最新版本”的模板,这是GitLab的小版本之间的频繁更新(如13.10,13.11,等等)。

该“主要版本”模板,其中仅在主要版本更新(如13.0,14.0,等等)。

在 GitLab 的每个主要版本中,“最新版本”模板都会成为“主要版本”模板,继承了“最新模板”设置。由于我们为 Terraform 集成添加了许多新功能,因此“主版本”模板的新设置可以被视为重大更改。

最新的模板支持Terraform 合并请求小部件,并且不需要额外的设置来使用GitLab 管理的 Terraform 状态。

OpenSUSE Leap 15.1

对OpenSUSE Leap 15.1 的支持正在被放弃。14.0 将取消对 15.1 的支持。现在仅提供对openSUSE Leap 15.2软件包的支持。

PostgreSQL 11 支持

PostgreSQL 12 将是 GitLab 14.0 中所需的最低版本。它对索引、分区和一般性能优势进行了重大改进。

从 GitLab 13.7 开始,所有新安装默认为版本 12。从 GitLab 13.8 开始,单节点实例也会自动升级。

trace从jobs API 端点中删除不推荐使用的参数

GitLab Runner 在 GitLab 13.4 中进行了更新,以在内部停止将trace参数传递到/api/jobs/:id端点。GitLab 14.0trace完全弃用了此接口的所有其他请求的参数。

从DAST报告中删除旧字段

作为向 GitLab 中所有安全扫描程序迁移到通用报告格式的一部分,DAST 正在对 DAST JSON 报告进行更改。某些遗留字段在 13.8 中已放弃,并已在 14.0 中完全删除。这些字段是@generated,@version,site,和spider。这不应影响任何正常的 DAST 操作,但会影响以自动方式使用 JSON 报告并使用这些字段的用户。鼓励任何受这些更改影响并出于业务原因需要这些字段的人打开一个新的 GitLab 问题并解释需求。

删除 GitLab 页面的旧存储

为了使 GitLab Pages 与云原生兼容,从 GitLab 14.0 开始,将 GitLab Pages 使用的底层存储架构更改为最近推出的 ZIP 存储。

迁移到新的 ZIP 档案架构是自动设计的,但是,如果在迁移后看到404 Not Found某些页面,则自动迁移可能已失败。为了简化向 ZIP 存储的过渡,新提供了一个从 GitLab 14.0 到 14.2的临时use_legacy_storage标志,但将在 GitLab 14.3 中将其删除。此标志将允许 GitLab 和 GitLab Pages 使用非 ZIP 部署来提供内容。

删除标签 API 中的发布说明

GitLab 14.0 删除了对标签 API 中发布描述的支持。

移除许可证合规性

在 13.0 中,删除了 License-Management CI 模板并将其重命名为 License-Scanning。一直通过警告旧模板的用户切换来提供向后兼容性。在14.0 中,将完全删除 License-Management CI 模板。

删除 DAST 默认模板阶段

在 GitLab 14.0 中,删除了当前DAST.gitlab-ci.yml模板中定义的阶段,以避免出现模板覆盖 DAST 用户手动更改的情况。此更改是为了响应客户问题,其中模板中的阶段在与自定义 DAST 配置一起使用时会导致问题。由于此删除,gitlab-ci.yml未指定dast阶段的配置必须更新以包含此阶段。

删除 SAST 分析器SAST_GOSEC_CONFIG变量以支持自定义规则集

随着GitLab 13.5中SAST 自定义规则集的发布,为 Go 分析器 (GoSec) 的配置选项提供了更大的灵活性。因此,我再计划支持不太灵活的SAST_GOSEC_CONFIG分析仪设置。此变量在 GitLab 13.10 中已放弃。GitLab 14.0 删除了旧的SAST_GOSEC_CONFIG variable. 如果SAST_GOSEC_CONFIG在 CI 文件中使用或覆盖,请更新您的 SAST CI 配置或固定到旧版本的 GoSec 分析器。

删除 Ubuntu 19.10 (Eoan Ermine) 包

Ubuntu 19.10 (Eoan Ermine) 已于2020年7月17日星期五终止。在 GitLab Runner 14.0 中,软件包分发中不再提供 Ubuntu 19.10 (Eoan Ermine)。

/usr/lib/gitlab-runner从包中删除符号链接

在GitLab转轮13.3,一个符号链接从加入/user/lib/gitlab-runner/gitlab-runner到/usr/bin/gitlab-runner。在 14.0 中,符号链接已被删除。

删除?w=1URL 参数以忽略空格更改

为了根据用户的喜好为用户创造一致的体验,GitLab 14.0 中删除了通过 URL 参数切换空白更改的支持。

删除FF_RESET_HELPER_IMAGE_ENTRYPOINT功能标志

删除FF_SHELL_EXECUTOR_USE_LEGACY_PROCESS_KILL功能标志

删除FF_USE_GO_CLOUD_WITH_CACHE_ARCHIVER功能标志

在 14.0 中,删除了以上三个功能标志。

删除secret_detection_default_branch作业

为确保秘密检测同时扫描默认分支和功能分支,在托管模板中引入了两个单独的秘密检测 CI 作业(secret_detection_default_branch和secret_detection)Secret-Detection.gitlab-ci.yml。这两个 CI 作业在 CI 规则逻辑中造成了混乱和复杂性。这种弃用将rule逻辑移到script部分中,然后确定secret_detection作业的运行方式(历史、分支、提交等)。如果重写或维护的自定义版本SAST.gitlab-ci.yml或者Secret-Detection.gitlab-ci.yml,您必须更新您的CI模板。

删除 GitLab 页面的磁盘源配置

从 GitLab 13.0 开始,基于GitLab PagesAPI 的配置已经可用。它替换了diskGitLab 14.0 中删除的不受支持的源配置,无法再选择。应该停止使用disk源配置,转而使用gitlab基于 API 的配置。要从“磁盘”源配置迁移,请gitlab_pages['domain_config_source'] = "gitlab"在/etc/gitlab/gitlab.rb文件中进行设置。建议您在更新到 GitLab 14.0 之前进行迁移,以在升级之前识别和解决任何潜在问题。

删除旧版 DAST 域验证

用于 CI/CD 扫描的 DAST 域验证的旧方法在 GitLab 13.8 中已弃用,并在 GitLab 14.0 中删除。如果DAST_FULL_SCAN_DOMAIN_VALIDATION_REQUIRED环境变量true在gitlab-ci.yml文件中设置为,并且Gitlab-DAST-Permission站点上的标头未设置为,则此域验证方法仅禁止扫描allow。这种两步法要求用户在选择退出使用标头之前选择使用该变量。

删除 Docker Machine 自动缩放的非高峰时间模式配置

在 GitLab Runner 14.0 中,删除了旧的配置选项off peak time mode。

从 DORA 指标 API删除冗余时间戳字段

该部署频率项目级别的API接口被放弃,取而代之的是DORA 4 API,它整合了所有的指标下一个API与具体指标为必填字段。因此,不允许添加未来扩展并导致性能问题的时间戳字段将被删除。使用旧 API,示例响应为{ "2021-03-01": 3, "date": "2021-03-01", "value": 3 }.第一个键/值 ( "2021-03-01": 3) 将被删除并替换为最后两个 ( "date": "2021-03-01", "value": 3)。

删除已完成构建指标转换的成功和失败

在 GitLab Runner 13.5 中,引入failed并success声明了一项工作。为了支持普罗米修斯规则,我们选择了转换success/failure到finished度量标准。在 14.0 中,转换现在已被删除。

删除对 Windows Server 1903 镜像的支持

在 14.0 中,我们删除了 Windows Server 1903。Microsoft 于 2020 年 8 月 12 日终止了对该版本的支持。

删除对 Windows Server 1909 镜像的支持

在 14.0 中,我们删除了 Windows Server 1909。Microsoft 于 2021 年 5 月 11 日终止了对该版本的支持。

SAST_ANALYZER_IMAGE_TAG在 SAST CI 模板中删除

随着 GitLab Secure 扫描工具的成熟,需要为发布过程添加更多的粒度。以前,GitLab 为所有分析器和工具共享一个主要版本号。这需要所有工具共享一个主要版本,并防止使用语义版本编号。在 GitLab 14.0 中,SAST 删除了SAST_ANALYZER_IMAGE_TAG 托管SAST.gitlab-ci.ymlCI 模板中的全局变量,支持分析器作业变量major.minor在 SAST 供应商模板中设置标签。

每个分析器作业现在都有一个作用域SAST_ANALYZER_IMAGE_TAG变量,它将由 GitLab 主动管理并设置major为相应分析器的标签。要固定到特定版本,请将变量值更改为特定版本标记。如果您覆盖或维护 的自定义版本SAST.gitlab-ci.yml,请更新您的 CI 模板以停止引用全局SAST_ANALYZER_IMAGE_TAG,并将其移动到范围分析器作业标签。我们强烈鼓励继承和覆盖我们的托管 CI 模板,以确保您的 CI 模板面向未来。此更改允许您使用固定major.minor版本更精细地控制未来的分析器更新。

Ruby 版本更改为Ruby.gitlab-ci.yml

默认情况下,该Ruby.gitlab-ci.yml文件包含 Ruby 2.5。

为了更好地支持最新版本的 Ruby,模板更改为 use ruby:latest,目前为 3.0。

相关问题:将ruby 版本 2.5 更新到 3.0

从 DevOps采纳 API 中删除的细分

DevOps使用报告的第一个版本有一个Segments的概念。段很快从报告中删除,因为它们在组和项目之上引入了额外的复杂层。DevOps使用报告的后续迭代侧重于比较跨组而不是细分市场的采用情况。GitLab 14.0从 GraphQL API 中删除了对Segments 的所有引用,并将它们替换为Enabled groups。

删除了服务模板

GitLab 14.0中删除了服务模板。它们用于将相同的设置应用于大量项目,但仅在项目创建时才这样做。

虽然他们解决了部分问题,但后来证明更新这些值是一个主要的痛点。项目集成管理通过使您能够在组或实例级别创建设置以及该命名空间中继承这些设置的项目来解决此问题。

Sidekiq 队列选择器选项不再接受“实验性”前缀

GitLab 支持队列选择器为给定进程仅运行后台作业的子集。引入时,此选项具有“实验性”前缀(experimental_queue_selector在 Omnibus 中,experimentalQueueSelector在 Helm 图表中)。

不再支持“experimental”前缀。相反,应使用queue_selector Omnibus 和queueSelectorHelm 图表。

Ubuntu 16.04 支持

Ubuntu 16.04已于2021年4月停产,不再接收维护更新。强烈建议用户升级到更新的版本,例如 20.04。

GitLab 13.12 将是最后一个支持 Ubuntu 16.04 的版本。

Unicoren移除以支持 Puma 进行 GitLab 自我管理

GitLab 14.0 中删除了对 Unicorn 的支持,取而代之的是 Puma。Puma 具有多线程架构,比 Unicorn 等多进程应用服务器使用更少的内存。在 GitLab SaaS上,使用 Puma 后内存消耗减少了40%。

更新 Auto Deploy 模板版本

在 GitLab 14.0 中,将Auto Deploy CI 模板更新到最新版本。这包括依赖 v2 auto-deploy-image 的新功能、错误修复和性能改进。Auto Deploy CI 模板 v1 将被放弃。

由于v1 和v2 版本不向后兼容,对已经部署了应用程序的用户,项目可能会遇到意外失败。

更新CI/CD模板以停止使用硬编码master

CI/CD 模板已更新,不再使用对master分支的硬编码引用。在 14.0 中,它们都使用指向项目配置的默认分支的变量。如果您的 CI/CD 管道依赖于我们的内置模板,请验证此更改是否适用于您当前的配置。例如,如果有一个master分支和一个不同的默认分支,对模板的更新可能会导致管道行为发

WIP 合并请求重命名为“合并请求草案”

合并请求的 WIP(进行中)状态向审阅者发出信号,表明相关合并请求尚未准备好合并。WIP 功能重命名为Draft,这是一个更具包容性和不言自明的术语。Draft清楚地传达了有问题的合并请求尚未准备好进行审查,并且不对正在取得的进展做出任何假设。Draft还减少了新用户、非英语使用者和任何不熟悉 WIP 首字母缩略词的人的认知负担。

Web应用程序防火墙 (WAF)

Web应用程序防火墙 (WAF) 在 GitLab 13.6 中已放弃,并从 GitLab 14.0 中删除。WAF 在架构设计中具有固有的局限性,这使得 WAF 难以满足传统上对 WAF 的预期要求。通过删除 WAF,GitLab 能够专注于改进产品中可以为用户提供更多价值的其他领域。

删除CI_PROJECT_CONFIG_PATH和CI_PROJECT_CONFIG_PATH

GitLab 14.0删除了CI_PROJECT_CONFIG_PATH预定义的项目变量,取而代之的是CI_CONFIG_PATH,它在功能上是相同的。如果CI_PROJECT_CONFIG_PATH在管

更新升级

Omnibus版

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

yum updata/install gitlab-ce

就能自动完成升级:

可以通过gitlab实例的帮助查看版本信息以及是否升级到最新版本:

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

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

删除旧的 ElasticSearch 迁移。通过删除旧的 ElasticSearch 迁移,升级 GitLab 时执行高级搜索迁移将更加容易。

GitLab 14.0 将仅支持从GitLab 13.12 迁移。所有以前的版本必须先升级到 GitLab 13.12,然后才能升级到 GitLab 的最新主要版本 GitLab 14.0,以完成所有 ElasticSearch 迁移。

在升级到 GitLab 14.0 之前,必须升级到 PostgreSQL 12。从 GitLab 14.0 开始,PostgreSQL 12 是所需的最低版本。PostgreSQL 11 已被删除,不再受到官方支持。需要为 PostgreSQL 升级计划一些停机时间,因为在执行升级时数据库必须停机。如果使用 GitLab 提供的 PostgreSQL 数据库,则无论安装方法如何,都应确保数据库是 GitLab 13.12 上的 PostgreSQL 12。

在使用 Patroni 升级 PostgreSQL之前,多节点数据库实例需要从repmgr切换到Patroni。然后可以更新和重新同步地理辅助节点。

在升级到 GitLab 14.0 之前,必须完全迁移到散列存储。

在升级到 GitLab 14.0 之前,必须迁移到 Puma。

举报
评论 0