GitLab 13.2发布,JS静态扫描,负载性能测试,设计活动等功能

按照月度的版本计划,昨天GitLab官方发布了有一个个新的月度版本GitLab 13.2。该版本在简化项目计划,更好地协作,通过Wiki页面的差异更改更快地反馈信息,并通过负载性能测试提高整体性能/效率等方面做了改进。有关功能请追随虫虫一起学习。

概述

简化敏捷项目计划和管理

管理不同团队的工作流和计划任务可能会打断正常开发活动。Gitlab为了解决此碎片化的问题,提供最小可行的变化(MVC)的解决方案,通过迭代分解工作成更小,更易于管理,大块,使项目规划更加容易-。如果团队利用Jira进行项目管理,支持更轻松地在GitLab中查看Jira问题。如果Epic计划和管理大型项目,新支持使用机密Epic保护敏感内容。当需要更新几个相关的Epic时,可以批量编辑Epic,以减少标签过载和更新所需的点击次数。

更好的协作以获得更快的反馈

清晰的沟通是有效协作的关键,因为它使开发团队能够在将变更推向生产之前更快地获得有关变更的反馈。Gitlab 13.2中支持区分Wiki页面的更改,这使得页面版本之间的编辑历史记录比较变得更快,更简单,类似于查看存储库中的文件。

实时反馈.gitlab-ci.yml通过启用实时换行和自动补全功能,使CI管道更新更加有效。在配置CI管道或切换上下文以获取所需信息时,无需记住所有参数。

设计师是团队中非常重要的成员,13.2包括对设计管理的重大改进,可以更轻松地查找设计的过程,因此花费的时间更少,官方的GitLab Figma插件简化了从Figma上载到GitLab问题的过程。

改进的性能和效率

Gitlab 13.2提供了新的更新,以提高团队的效率和性能。应用程序性能是每个开发团队都面临的挑战,新的负载性能测试可以轻松地将自定义负载测试作为CI/CD管道的一部分运行,以更好地了解应用程序在压力下的性能。

GitLab Geo通过使用本地GitLab节点来帮助远程团队更有效地工作,并且为项目提供了改进的复制性能,以确保本地内容是新鲜的。

最后但并非最不重要的一点是,如果需要提供合规性数据或更有效的方式来显示审核过程中生产的相关变化,则GitLab的CI检验结果将包含在Release Evidence中,以便于访问。

GitLab 13.2主要功能改进

将问题分配给迭代(STARTER及以上)

在此版本之前,无法在GitLab中将问题与多个时间框关联。对于遵循Scrum或XP的团队来说,这尤其成问题。这样的团队通常需要将问题与迭代/冲刺相关联,同时还要将该问题滚动到运行时间更长的里程碑,例如程序增量。

GitLab-Figma插件

最近,GitLab产品设计团队和开源Pajamas设计系统转移到了Figma。GitLab创建了一个新的Figma插件GitLab-Figma,用它插件可以轻松地从Figma上传到GitLab Issues。这样Designs的协作变得更加快捷,容易。通过无缝的工作流程将设计环境与源代码管理连接起来。GitLab 13.2中,在Figma目录中启动了官方插件GitLab-Figma。

集群运行状况监视

要了解系统性能,开发团队必须监视基础架构的运行状况和性能。作为2020年礼物的一部分, Monitor阶段的群集运行状况已经从GitLab Ultimate被免费,移到了GitLab Core。

从GitLab 13.2开始,所有用户都可以在GitLab用户界面连接集群并监视其运行状况。

使用GitLab Composer存储库管理PHP依赖项(PREMIUM及以上)

PHP开发人员需要一种共享和使用项目依赖项的机制。Composer是PHP的依赖项管理器,利用它可以声明项目所依赖的库,并进行依赖项管理。

新版本GitLab中的提供了内在的Composer信息库。PHP开发人员可以轻松地的来发现和项目依赖项的管理。通过与Composer集成,GitLab提供了一个集中的位置,可以在与源代码和管道相同的位置查看这些软件包。Package Registry中的PHP依赖项将在All选项卡下列出,不是Composer特定选项卡。通过特定Composer选项卡的功能已经被添加到里程碑在未来会实现。

将敏感的工作组织成机密Epic(PREMIUM及以上)

新版本中,可以将一系列相关的机密问题整理成机密Epic。对于在财务,人力资源或安全等领域工作用户,经常需要处理无法公开或无法公开查看的项目。为了更好地支持客户管理所有共同达到共同目标或项目的多个机密问题,机密功能扩展到Epic中。

代码所有者部分(PREMIUM及以上)

在大型组织中,独立团队可能对应用程序的某些部分具有共同的兴趣,例如,付款处理公司可能会有负责代码库公共部分的开发,安全和合规性团队。三个团队可能都需要对代码更改进行审核。根据更改的文件来管理代码所有者时,每个文件路径只能匹配一个代码所有者。

在GitLab 13.2中,代码所有者部分允许每个团队独立配置自己的代码所有者。可以将规则用于共享路径,可以添加多个团队作为审阅者,让合理的组来审核相关代码,这有助于提高代码质量,也能提高效率。

将Fargate对ECS的支持添加到Auto DevOps和ECS模板中

为了简化在AWS云下的部署。Gitlab提供了一个CI/CD模板,利用它可部署到AWS ECS/EC2目标,甚至将其连接到Auto DevOps。在EC2中扩展容器实例是一个挑战,为此有用户选择使用AWS Fargate。

在新版本中,通过添加模板实现对Fargate支持,该模板也继续与Auto DevOps一起使用,更多用户可以从中受益。

GitLab官网仓库启用高级全局搜索

在此版本之前,想要进行跨项目代码搜索的GitLab官网用户必须先克隆一份存储库到本地,再进行搜索,耗时耗力。GitLab 13.2中,Bronze和更高级别的GitLab用户组可以使用Advanced Global Search在UI中直接执行组范围的代码搜索。Advanced Global Search增加了在一个组中的所有项目中搜索代码的功能,提高了搜索的相关性和性能,允许范围界定,并启用Advanced Search Syntax。这将使在GitLab中搜索内容的体验更加强大,从而使用户可以更轻松地找到他们的内容。


将功能标志与相关问题相关联(PREMIUM及以上)

新版本中增加了将相关问题与其各自的功能标志关联的功能。例如,可以链接引入功能标记本身的问题。这个关系在功能标志的详细信息中可见。这也将使直接从功能标志本身跟踪问题的里程碑和状态变得更加容易,用以更好地了解功能细节。

在GitLab中查看Jira问题列表(PREMIUM及以上)

对于使用Jira作为主要工作跟踪工具的组织,贡献者跨多个系统工作并维护可能是一个挑战。

在新版本中的Jira集成的扩展中,项目管理员可以选择显示GitLab项目内部的Jira问题列表。这使主要在使用Git工作的开发人员可以保持工作状态,而无需再关注Jira来跟踪分配的问题等。未来计划中该插件将进一步增加包括注释,状态更改(转换)等功能。

负载性能测试(PREMIUM及以上)

新版本中,支持使用负载性能测试来运行自定义的负载测试。开箱即用的负载性能测试将报告已配置的检查通过百分比,90%和95%请求的首字节时间(TTFB)的以及每秒的平均请求数(RPS)。这样可以轻松地将结果与通用基准进行比较,并可以在确定合并代码之前直接在合并请求中查看结果。

GitLab UI中可用的托管应用程序日志

在对事件进行分类或验证服务状态时,必须能够在整个应用程序堆栈中浏览K8S Pod日志。此前GitLab用户界面只会显示已部署的应用程序日志(源自CI/CD部署到群集的应用程序的日志)。

在GitLab 13.2中,可以直接从GitLab用户界面搜索托管应用程序日志。

Core中的多个Kubernetes集群部署

使用GitLab和其一起部署的多个K8S集群之前需要高级许可证。部署到多个集群甚至对于单个贡献者也是有用的。

从GitLab 13.2开始,支持部署到多个集群。

.gitlab-ci.yml创建发布(PREMIUM及以上)

之前曾在12.10中,提供了一种从.gitlab-ci.yml文件自动创建发行标签的方法。

在新版本中,通过将release关键字作为GitLab Runner可以解析的步骤来公开,使用起来更加轻松自然。无需再添加脚本调用Release API来创建发行版。只需将在.gitlab-ci.yml中配置参数即可。

在发布证据中包括CI测试结果(ULTIMATE)

GitLab通过添加CI测试结果来扩展Release Evidence功能。这些由管道生成的作业工件将自动会打包在发布证据的JSON文件中。

使用Jsonnet动态生成子管道配置

GitLab 12.9曾中发布了Dynamic Child Pipelines功能,它允许在运行时生成.gitlab-ci.yml文件。例如,当希望运行时行为更加动态时,这对于monorepos是一个很好的解决方案。

在新版本中,通过包含一个项目模板来演示如何使用Jsonnet生成YAML,可以在运行时创建CI/CD YAML变得更加容易。Jsonnet是一种数据模板语言,它提供允许完全参数化的YAML配置的函数,变量,循环和条件。

审核事件中的批准组更改(STARTER及以上)

审核事件已经捕获了合并请求批准所做的更改。在13.2中,通过向批准组添加有关更改的详细信息来完成循环。进行更改合并请求批准规则时,可以看到更完整的更改视图。

将实例级合并请求设置作用域标记到符合性的项目(PREMIUM及以上)

以前,当管理员在"管理区域"中配置合并请求设置时,实例中的所有项目都会继承这些设置。对于希望将不同的,更灵活的要求应用于不受管制的项目的客户而言,这种继承模型过于广泛。

新版本中,使管理员能够指定希望在其上强制执行这些实例级设置的项目合规性框架标签,从而提供了更大的灵活性。选中框架标签后,只有带有相应合规性框架标签的项目才会继承这些设置,并且只能由管理员在实例级别进行编辑。

该功能使注重合规性的组织可以确保未经授权的用户无法编辑这种严格的职责分离控制,这将在合规性方面造成差距。

该功能仅仅适用于自建gitlab实例。

从"问题列表"批量编辑Epic中的多个问题(PREMIUM及以上)

通常有必要将多个问题分配给Epic,以共同组织工作。新版本可以一次批量编辑多个问题的Epic任务。可以从"问题列表"中执行此操作,从而减少了将工作正确分配所需的选项卡和单击次数。

导入问题时将Jira用户映射到GitLab用户

将问题从Jira导入到GitLab时,可以在运行导入之前将Jira用户映射到GitLab项目成员。这使导入者可以针对要移至GitLab的问题设置正确的报告者和受让人。

REST API支持以重新排序问题

新版本中,可以通过REST API更改问题的相对顺序。在此版本之前,无法以编程方式对问题进行重新排序。对于尝试支持自定义Board接口的API使用者而言,这曾经是个棘手的问题。

批量建议

在合并请求中提出更改建议可以使提议的建议变得容易,但是如果收到很多建议,则一一应用这些建议会很慢。使用"批量建议",可以一次应用多个建议,更快,更轻松。对保持合并请求提交历史记录的整洁也大有裨益。

Gitaly群集TLS支持

Gitaly Cluster新支持传输层安全性(TLS),当同时为Gitaly和Praefect组件启用TLS时,Gitaly及其客户端,GitLab和Praefect之间的所有通信都会被加密。在将GitLab部署到具有其他不受信任的内部服务的网络时,这很有用。

以前,GitLab和Gitaly之间的通信支持TLS加密,但是使用Praefect(Gitaly Cluster的组成部分)时不支持加密。

使查找问题的设计更加容易

由于设计是产品开发过程的重要组成部分,而且要能很容易找到已创建并添加到问题中的设计。

在13.2之前,已经具有设计选项卡,但是已经将设计上移,被转移到问题描述的下方。这会鼓励更多的协作,并确保每个人都能在问题描述的下方看到设计。

Web IDE中.gitlab-ci.yml的实时反馈

GitLab CI是快速且高度可配置的,但是可能很难记住所有配置参数,并且错误可能会使得.gitlab-ci.yml文件无效。为了更轻松地配置的GitLab CI管道,Web IDE在编辑.gitlab-ci.yml文件时提供了实时更新和完成功能。

Web IDE内联提供了提示和完成反馈以及工具提示,以帮助理解为什么会出现错误。

Gitaly Cluster的事务性写入beta版

Gitaly Cluster允许在多个热Gitaly节点上复制Git存储库。通过消除单点故障来提高容错能力。但是,由于写操作当前是异步复制的,因此GitLab服务器最初仅具有一个更改副本。

在GitLab 13.2中,可以为Gitaly Cluster启用对Git存储库的事务写操作。启用此选项并将更新推送到GitLab时,写操作将被代理到副本Gitaly节点。将使用两阶段提交协议在Gitaly节点之间协调写操作,以便它们就存储库的新状态达成共识。当前,写事务仅限于通过HTTP和SSH Git接口推送的操作,并且不包括通过GitLab接口(如Web IDE)进行的写操作。

代码质量合并请求小部件已被免费

在9.3版本中,GitLab Starter/Bronze版本中添加了代码质量扫描,可以直接在合并请求中查看代码质量的变化。从该数据对于任何规模的团队(包括个人贡献者)都是有价值的。

在13.2中,都可以在合并请求中查看代码质量报告。

CI工件路径中的文件排除

使用新的exclude语法,可以防止将特定文件添加到工件。这样就无需显式引用应添加到工件中的每个文件夹的路径,避免包含过多文件夹。对通配符(全局和双星全局)的支持使排除整个子目录变得容易。

从合并中删除MR时发出通知(PREMIUM及以上)

如果将合并请求添加到MergeTrain,但由于问题被系统删除,会以"待办事项"任务的形式收到通知。所以可以放心地将MR添加到MergeTrain中,知道合并将自动发生,或者将收到失败通知。如果合并不成功,则可以快速纠正错误并重新提交MR。

触发作业与下游管道的视觉关联

如果查看了一个复杂的管道图,希望有一个简单的方法来知道哪个作业触发了特定的下游管道,该功能已经被支持。

在新版中,只需将鼠标悬停在下游管道上,即可看到一个工具提示,该工具提示为触发该管道的作业命名。无需浏览所有作业名称即可找到一个,因为悬停操作还会在上游管道中突出显示触发作业。

合并请求中的多种Terraform计划支持

在单个Terraform管道中,可能会影响多个基础结构环境。以前,GitLab仅对单个环境启用了合并请求中预期更改的快速概述。

从GitLab 13.2开始,Terraform Merge Request小部件支持多个Terraform工件文件。

从GitLab用户界面访问Opsgenie(PREMIUM及以上)

Opsgenie是用于操作任务(包括警报和事件管理)的流行IT服务管理工具。

在GitLab 13.2中,可以直接在GitLab中启动Opsgenie工作流程。

自动分组相同的告警以减少噪音(PREMIUM及以上)

维护IT服务的团队每天都会收到成百上千个告警。新版本中manbetx客户端会去重数据并对其筛选,然后再发出告警,提供告警计数,使告警列表可管理和有用。将告警与从告警创建的事件进行关联,可帮助跟踪已解决的告警以及还需要分类的警报。

OAuth用于手动配置的Prometheus服务器

要使用手动配置的(外部)Prometheus服务器,GitLab认证用户可能会出现问题。

在Gitlab 13.2中,可以使用OAuth,以确保身份验证安全且易于管理。

使用PromQL设置指标仪表板变量

在Gitlab 13.2中可以使用PromQL在指标仪表板中设置变量。PromQL查询可以返回值列表,以用作指标仪表板中的动态变量。

指标仪表板的vanity URL

GitLab 13.2引入了vanity指标仪表板URL,以帮助用户在不同的仪表板和项目之间快速导航。

零停机时间为高级全局搜索重新编制索引(STARTER及以上)

在先前版本的Advanced Global Search中,如果需要重新编制索引,则必须计划Advanced Global Search关闭。删除索引并创建新索引时,搜索将不可用。在13.2中,添加了索引别名,可以通过在管理员设置中按一下按钮来重新索引而不会造成任何停机。

选择延迟项目删除(PREMIUM及以上)

在GitLab 13.2中,改进了项目删除体验,使其在所有版本中均保持一致,并引入了组级别的切换功能,使用户可以在永久删除之前启用删除延迟时间。此前免费版本是立即删除,而对收费用户是延迟7天清理。

新版本中所有版本删除项目后会立即删除该项目。为了确保在此工作流程中仍然具有灵活性,对付费版本的用户可以在组级别自定义设置"启用延迟的项目删除"。

从问题列表中批量编辑问题健康状况

在管理和计划多个问题时,分别更新每个问题的健康状况可能很麻烦。

在新版本中,可以从问题列表一次选择多个问题进行批量操作。

折叠路线图上的里程碑(PREMIUM及以上)

在共享、查看或展示路线图时,通常需要最小化某些部分或调整为合适的受众显示的信息。GitLab新版本允许最小化路线图的里程碑部分,以显示更多Epic或隐藏不必要的信息。

新的Epic创作页面(PREMIUM及以上)

通过新的Epic创建页面,只需一步即可创建Epic并填写描述,添加标签并设置开始/到期日期。

按最新活动查看Epic提要(PREMIUM及以上)

从最早到最新的讨论和系统注释的默认顺序对于某些用例非常有用。但是,当团队处于分类和应急模式时,就显得无足轻重,因为需要一直滚动到Epic的末尾才能看到最新的更新。

新版本中支持颠倒默认顺序,并与活动Feed互动,最顶部的是最新项目。对Epic的首选项将单独保存在本地存储中,并自动应用于个人查看的每个Epic。

新存储库的可配置默认分支名称

创建新的Git存储库时,默认情况下,创建的第一个分支名为master。GitLab新版本中允许实例管理员为通过GitLab界面创建的新存储库配置默认分支名称。

跟踪设计中的活动

GitLab设计中目前已经添加了活动,用于在的用户个人资料,组页面和项目页面上上传,修订和评论设计方案,可以一目了然地跟踪对设计的操作。

GitLab Core中的可选合并请求批准

代码审查是每个成功项目的基本实践,一旦合并请求状态良好,就需要批准,这是审查过程的重要组成部分,因为它清楚地传达了合并变更的能力。对于Core用户,通常是通过发表评论或点赞来完成,但是这些批准形式很容易丢失。

在13.2中,具有开发者权限的任何人都可以在GitLab Core中批准合并请求。这使审阅者很明显如何获得批准,并使维护者更容易知道何时准备合并更改。批准在GitLab Core,但是在Starter及更高级别的用户需要批准才能将代码合并到代码库中。

将Wiki重定向到Confluence工作区

在13.2中,新添加了Confluence集成,可将项目的左侧边栏直接链接到新选项卡中的Confluence工作区。

Wiki页面差异

Git用户经常严重依赖文件差异来观察,查看和跟踪内容更改。在GitLab 13.2中,新增加了对在Wiki页面上查看差异的支持。可以通过Wiki提交历史记录无缝查看两个版本之间的逐行内容更改。

覆盖徽章的自定义文本

使用多个coverage徽章,但每个徽章计算不同值的项目只能coverage用作每个徽章的文本。这使得弄清楚该值的含义很麻烦。

项目维护者或所有者,可以自定义Coverage徽章的文本,以更好地区分项目上显示的多个Coverage徽章。

查看和管理组runner


新版本中可以利用新的组管理用户界面(UI)来管理组织的运行者。在该新用户界面中,可以查看,编辑,暂停和停止与组关联的任何Runner。这样可以更轻松地一次解决多个项目的Runners潜在问题。

验证标签清理策略正则表达式

可以通过创建每个项目的标记清除策略来定期从Container Registry中删除较旧的标记。这些策略基于用户创建的正则表达式。不幸的是container_repository:cleanup_container_repository,与这些表达式相对应的工作遇到了25%的错误率。该Gitlab::UntrustedRegexp作业认为正则表达式无效,并且当策略失败运行时,不会通知任何人。

注释.gitlab-ci.yml中的非部署作业

从历史上看,environment:action关键字不能准确地表示未导致部署的环境作业,例如批准中的作业和为将来的部署构建映像。

在GitLab 13.2中,作业新包含一个prepare关键字,以使非部署环境作业的状态更加清晰,使其保持准确并代表部署活动。

对Terraform State API的只读访问

目前,没有维护者访问权限的GitLab用户无法与Terraform命令(包括)交互terraform plan,该命令会创建对开发工作流程有用的执行计划。

在GitLab 13.2中,具有开发者角色的用户获得对Terraform状态API的只读访问权限,从而使更多用户可以做出贡献而不会冒着使用不当的风险。

告警详细信息页面显示系统备注

当更改警报的状态,将其分配给团队成员或通过警报创建问题时,GitLab会跟踪这些事件并将它们显示在告警详细信息页面上的备注部分。备注为响应者提供了有用的上下文,使团队在对告警进行分类时可以更好地进行协作,并防止不必要的重复工作。

指标仪表板中面板的键盘快捷键

在GitLab 13.2中支持使用键盘快捷键与指标仪表板进行交互。使用键盘快捷键,可以在对事件进行分类的同时快速浏览仪表板,从而加快响​应流程。

在告警列表中搜索纯文本

告警通常很嘈杂。为了帮助找到需要分类的相关警报,并优化显示警报的列表,可以在告警列表中进行纯文本搜索。

触发测试以进行告警集成

配置告警系统以将告警路由到GitLab REST端点后,可以触发测试告警以确保正确配置了系统。

用于高级全局搜索的Amazon ECS角色身份验证(STARTER及以上)

AWS上连接到Amazon Elasticsearch Service以启用Advanced Global Search时,只能通过使用静态证书或EC2 IAM角色Aws::InstanceProfileCredentials。新版中,作为附加的身份验证选项,可以将IAM角色用于Amazon ECS任务。

Patroni可作为repmgr的实验替代品

对于自建的GitLab实例,可以选用Patroni作为PostgreSQL复制和故障转移替代解决方案。用Patroni取代repmgr,带来了很多改进。使用Patroni,发生故障的主节点在恢复联机时会自动作为备用节点添加回群集。Patroni的添加也使无法添加对PostgreSQL 12的支持,也无法在Geo辅助站点上支持PostgreSQL复制和故障转移。Patroni与Geo的结合使用目前正在测试中,目前还尚不支持。

Repmgr将在Omnibus GitLab中继续可用,直到GitLab 14.0。

Omnibus的改进

自带的Nginx响应的最小大小已经从10,240字节压缩到250字节。这样可以减少需要多个数据包的请求数量,并减少加载网页所需的时间。

Omnibus安装软件已经支持Ubuntu 20.04和SLES 12.5。

GitLab 打包的Chef版本更新到Chef 15。

GitLab打包Mattermost版本更新到 5.24,包括改进的最终用户搜索,改进的会话体验等等。它还包括安全更新,建议从早期版本升级。

配置对象存储的设置已合并,可以在中的同一部分中配置所有对象的对象存储gitlab.rb。这是一项巨大的改进,使对象存储配置更加高效,包括能够将单个凭据用于多个S3存储桶中的对象存储。可使GitLab Workhorse可以直接使用其S3客户端上传文件,而无需使用预先签名的URL。

GitLab Runner 13.2

同期发布了GitLab Runner 13.2,更新包括:

在Shell Executor中启用PowerShell Core支持;

向Docker网络添加标签;

和下面的bug修复

图像名称无效时,Kubernetes运行程序超时。

在PowerShell执行程序中支持UNC路径。

设置git TLS配置时,使用CI URL代替克隆URL。

所有更改详见GitLab Runner 变更文档

GitLab Runner对IBM Z上的Linux的支持

使用IBM大型机的GitLab客户和贡献者正在采用现代的DevOps实践,并希望能够直接在其硬件上运行GitLab Runners。基于不断增长的兴趣来扩展对z/OS大型机的平台支持,提供了初始版本GitLab Runner二进制Docker和帮助程序镜像,可以使用其在Linux下的s390x体系结构上IBM Z环境本地运行和执行CI作业。

GitLab Helm chart改进

跨多个发行版完成的工作最终导致初始化基于Rails的Pod的时间减少了5倍以上,并应用程序启动时间减少了25%。可以显著更快地对Webservice和Sidekiq部署扩展。

K8S 1.13 为最低受支持的版本,不再支持K8S 1.12及更老的版本。

项目更快的Geo复制性能(PREMIUM及以上)

GitLab Geo使分布式团队可以更有效地工作,创建并维护本地的GitLab副本可以减少延迟,避免文件远程下载造成的延迟。

在此次对Geo的更新中,改进了数据库管理更改的方式。为了确定需要从主数据库复制什么,Geo将跟踪数据库与只读辅助数据库进行比较。如果Geo的数据库查询超时,则无法成功复制数据。

在GitLab 13.2中,使用了一种新方法来同步工程,从而消除了数据库语句超时的可能性。新版本还改进了所有数据源的辅助节点删除数据的方式,从而提高了GitLab Geo的总体可扩展性和性能。

这些迭代减少了Geo对Foreign Data Wrappers的依赖,后者是为提高性能而添加的,但是这使Geo更加复杂且难以维护。

gitlab Geo高可用集群更新

Geo支持复制GitLab软件包注册表(PREMIUM及以上)

Geo新支持将Package Registries复制到辅助节点,从而允许分布式团队从最近的Geo节点访问它们,从而减少了延迟并改善了整体用户体验。此外,在故障转移到辅助节点时,还可以从辅助节点还原Package Registry资产。

Geo支持在Geo辅助数据库上暂停数据库复制(PREMIUM及以上)

Geo将数据从一个主要Geo节点复制到一个或几个Geo辅助节点。虽然Geo支持通过管理员界面暂停对存储库和文件的复制,但无法暂停数据库复制。

在13.2中,Geo支持在辅助Geo节点上使用新的gitlab-ctl geo:pause和gitlab-ctl geo:resume命令暂停和恢复所有复制数据的复制,包括PostgreSQL数据库。

这使系统管理员可以在辅助地理节点上暂停所有复制,同时在主要地理节点上执行关键维护操作。如果主节点发生故障,则不会将任何更改复制到已暂停的辅助节点,然后可将其用于故障转移。

Geo的故障转移preflight-checks命令检查复制状态(PREMIUM及以上)

使用GitLab Geo执行故障转移时,系统管理员应使用该命令执行许多预检检查gitlab-ctl promotion-preflight-checks。

在GitLab 13.2中,该gitlab-ctl promotion-preflight-checks命令自动检查复制状态并通知结果,从而删除了以前手动执行的步骤。该gitlab-ctl promote-to-primary-node命令还支持强制模式,这意味着即使某些预检检查失败,故障切换仍将继续。

Geo设置表单更易于阅读和验证输入(PREMIUM及以上)

系统管理员可以使用管理员界面为各个节点调整地理设置。到目前为止,这些表单包含一些过时的用户界面元素,显示了太多可选信息,并且某些输入未得到正确验证。

在GitLab 13.2中,单独的Geo节点设置和常规Geo设置会验证用户输入,并分为不同的部分(例如,性能和资源管理),以使系统管理员更容易找到相关设置。

安全和合规性审计

容器主机监视和阻止

容器主机监视和阻止此初始功能允许安全管理员通过监视和有选择地阻止主机级别的意外活动来在保护其上在运行的容器。该类活动包括进程启动,文件更改或打开的网络端口。该功能使用Falco提供监视功能,并用AppArmorPod安全策略提供阻止功能。

切换个人访问令牌(PAT)到期的执行(ULTIMATE)

新版本中,当定义了生存期限制并且个人访问令牌达到或超过了生存期限制时,可以切换PAT凭证过期的实施。这种可选的实施方式为组织提供了灵活的方式来管理组织的证书轮换。此项更改是更大解决方案的一部分,解决方案使GitLab中的凭据管理既对组织有效,又对开发人员友好。

JavaScript和TypeScript SAST分析器免费开放

为了帮助开发人员编写更好的代码,而不必过分关注于常见安全问题。静态应用程序安全测试(SAST)通过允许开发人员在编写代码时轻松识别常见的安全问题并主动缓解,从而帮助防止了安全漏洞。

GitLab作为回馈社区的一部分,Gitlab新版本中对JavaScript和TypeScript的SAST分析器(ESLint)免费给社区core开放。未来将继续将其他开源(OSS)SAST分析仪免费给Core。

显示凭据清单中已过期或已撤销的SSH密钥和PAT(ULTIMATE)

管理用户凭据是任何合规性计划的重要组成部分,并且要求负责确保遵循策略的合规性专业人员具有可见性。凭据清单会突出显示已过期的所有SSH密钥或个人访问令牌(PAT)。此外,还将突出显示已撤销的PAT,以向合规专业人士提供进行用户凭据审查所需的必要见解。

Bug修复

GitLab 13.2中修复了很多Bug,包括:

修复预接收hook不适用于符号链接路径;

推送以以下内容开头的文件后修复500错误;

修复Conan软件包上传时的500错误;

当项目包含句点时,修复存储库归档中的404错误;

修复审核事件IP地址的错误显示;

大小写混合的用户/组网站的页面URL不正确;

从环境为空状态中删除按钮;

页面访问控制不会在身份验证中获取自定义CA证书;

更新Git TLS设置以配置回购URL,而不是GitLab URL;

修复PowerShell执行程序中对UNC路径的支持;

搜索框不再显示项目或组;

高级搜索无法在某些特殊字符后搜索低级驼峰式令牌;

高级搜索无法在没有空格的情况下搜索等号;

高级搜索佣金任务gitlab:elastic:index无法按设计工作;

代码覆盖率图表日期从最新到最旧的顺序;

Epic中添加问题失败时显示错误消息;

当服务台问题移至未启用服务台的项目时显示警告;

订阅降级后,无法从父级中删除子Epic;

竞争条件使创建重复标签成为可能;

处理卡死的Jira导入作业,并通过适当的超时消息使它们失败;

从Jira Server导入不起作用;

首次提交合并请求时显示误导性消息;

刚创建管道时,更改"无法检索管道状态"错误状态;

使用API更新环境变量的作用域失败;

当文件访问仅限于项目成员时,审核员用户无法访问公共项目和内部项目;

竞争条件使创建重复标签成为可能。

性能改进

在GitLab 13.2中,在问题,项目,里程碑等方面提高性能,其中一些性能改进包括:

搜索API:提交范围;

群组搜索API:merge_requests范围;

加快显示作业日志;

用于高级搜索索引的文件路径正则表达式;

差异树的列表;

差异线注释按钮;

查看代码时一次显示一个文件;

在GraphQL中查询子主题时的最大页面大小限制;

在Ci::BuildNeed上启用BulkInsertSafe。

功能弃用

TSLint Secure分析仪的弃用和计划中的拆除

删除日期:2020年9月22日

ESLint Secure分析器的最新更新包括对TypeScript的新支持,该支持得到了积极维护。自2019年以来,TSLint项目已被弃用,转移到ESLint。Gitlab已经将这些分析仪整合到了GitLab的ESLint分析仪中,TSLint分析仪已过时。

GitLab将在13.2 中弃用TSLint Secure分析器,并已从SAST模板中删除TSLint作业定义。对于利用自动DEVOPS或include在GitLab安全SAST模板无需进行任何操作,当更新到GitLab 13.2会自动帮你更新。建议任何在自定义CI模板中使用TSLint SAST作业的人迁移到更新的ESLint作业。

在此转换之后下一次执行SAST作业时,可能会看到以前显示的TSLint漏洞被标记为"已解决",并且看到ESLint的新TypeScript漏洞。由于来自ESLint的新的独特漏洞签名与旧的TSLint作业扫描漏洞签名不同,因此该行为可预期。

转换GitLab Bandit Secure分析仪OS镜像

变更日期:2020年9月22日

为了简化和更新GitLab安全SAST分析仪, GitLab Bandit Python分析仪镜像从Debian Buster 改变为Alpine Linux。该变更可以减小镜像大小,并提高分析仪的速度和安全性。

尽管预计影响有限,但该变化向后不兼容。如果使用a before_script构建Python项目依赖,则应在升级到GitLab 13.4之前对其进行测试。在SAST故障排除文档中添加相关内容。

升级更新

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

有关升级到GitLab 13.2的重要说明

具有多个Web应用程序节点的GitLab安装必须先升级到13.1,然后才能升级到13.2。这是由于Rails的重大更改,如果不遵循此升级路径,可能会导致授权问题。

GitLab 13.2.0 启用了电子邮件验证。升级后,如果某些用户在登录时意外遇到404或422错误,或者在使用命令行时出现阻止消息,则可能是未确认其账户。在这种情况下,先请他们检查电子邮件以获取重新确认链接。

Pre-receive和update服务器端Git hook,已经在Go中被重实现。若想要改为使用原始Ruby版本,需要设置对应可以用的功能标志。

举报
评论 0