按照预期发版计划,昨天GitLab官方发布了又一个新的月度版本GitLab 13.5。该版本在通过协作和DevOps,让开发团队成员之间,各个工具之间进行协作。有关功能请追随虫虫一起学习。

概述

移动应用程序安全性扫描

Gitlab安全扫描功能,可以帮助并赋予开发人员查找和修复安全漏洞的能力,但他们还希望iOS和Android移动应用程序具有相同的功能。根据集成指南,社区将 MobSF引入到合并请求管道和安全仪表板,以及SAST和所有其他GitLab安全扫描结果。

这种新的Mobile SAST语言覆盖范围和现有的对Swift和Java项目的模糊测试,现在为移动应用程序提供了有价值的安全测试解决方案。

分组Wiki

分组可以通过多种方式进行协作,现在提供了更多协作方式。新版本可以在团队级别上为提供一个中心协作点。随之而来的是,会在侧栏中找到更深层次的Wiki导航,以便于导航。

基于社区贡献,现在可以直接从GitLab界面轻松启动Gitpod Workspace。

在事件期间,可能很难从多线程讨论中了解事件的顺序。使用事件中讨论的新时间线视图,可以切换讨论的时间线视图。

代码片段和模板有助于共享

代码片段有助于组成员之间的代码共享。单个代码现在支持包含多个文件的代码段,因此可以创建和共享由多个部分组成的复杂代码段。

模板可促进跨团队的最佳实践和一致性。新版本中,将有将更多模板,例如新增加了模板,用于Terraform的新的GitLab CI/CD以及新的SAST配置UI,该为没有CI/CD经验的用户启用GitLab CI/CD SAST模板。

跨工具协作

GitLab希望其他工具和谐集成。无论是获取第三方安全扫描程序结果,还是与其他DevOps工具集成,都可以无缝集成展现。通过Generic Package Registry,可以在原始包中尚不支持的GitLab中存储其他二进制类型,并将二进制包可以作为发行附件,从而使发行和构建团队可以在GitLab中有效地工作。

GitLab 13.5主要功能改进

组Wiki(PREMIUM及以上)

对于许多团队而言,使用GitLab Wiki进行计划和文档编制是其工作流程的关键部分。尽管很受欢迎,但团队仍在努力限制Wiki仅在项目级别可用的局限性。从事多个项目的团队需要为每个存储库创建单独的Wiki,从而带来更好的体验。

使用Omnibus GitLab安装GitLab Kubernetes代理(PREMIUM及以上)

上个月,为随Helm安装的自我管理的GitLab实例推出了GitLab Kubernetes代理。

新版本增加了对官方Linux软件包的支持。在新的Kubernetes集成中,代理通过从GitLab提取新更改来协调部署,而不是GitLab将更新推送到集群。

GitLab中查看集群成本管理数据

许多用户创建了自己的脚本,以更好地了解其集群成本。但是,现在可以在GitLab用户界面中查看群集成本和资源使用情况的概述。该集成基于Kubecost的基础上cost-model,用户灵活地洞悉集群的各个级别。使用提供的成本模板查看每月节点成本以及GitLab托管应用程序的成本,或者使用Kubecost提供的九种指标和GitLab的Prometheus查询功能构建更复杂的自定义仪表板。

查看群组时启用实例级共享Runner

GitLab SaaS包括Linux和Windows运行程序,这些运行程序很容易使用,可以运行的GitLab CI/CD管道作业。某些组织要求其CI/CD作业只能在自建实例的运行程序上运行,因此,在每个项目上禁用实例级共享运行程序的使用会导致不必要的管理开销。

新版本中,管理员可以在组级别启用或禁用共享运行程序。管理员还可以允许组覆盖全局设置,并在每个项目的基础上使用共享运行器。

手动作业触发下游或子管道

以前,不可能将触发作业配置为等待手动操作。这使得配置下游或子管道触发器以等待用户在运行之前单击它们具有挑战性。

在新版本中,增加了添加when: manual触发作业的功能。使用该关键字使触发作业等待,直到单击''Play''按钮。这样可以更好地控制下游管道和子管道,使其仅在希望它们运行时才运行。

直接从GitLab启动Gitpod工作区

工程师拥有复杂的开发环境,可能需要花费一些时间来设置和进行测试更改或探索具有挑战性的新项目。一个项目的入门通常涉及以下文档,安装依赖项,并希望与运行的其他服务没有冲突。此过程可能很耗时,容易出错,并且可能无法准确地复制配置以测试项目并为项目做出贡献。

通过将Gitpod集成到GitLab中,可以直接从GitLab界面轻松启动Gitpod工作区。在GitLab上编辑项目时,存在一个新的下拉选项可在GitPod中打开该项目:

Gitpod允许使用代码定义项目的配置,因此可以一键启动预构建的开发环境。这些环境是通过.gitpod.yml项目内部的文件配置的,其中包括Docker配置,启动任务,编辑器扩展等选项。这种灵活的配置是项目代码的一部分,使开发人员可以快速开始进行项目工作。

多个文件代码段

工程师经常使用片段来共享代码,可重用组件,日志和其他项目的示例。这些有价值的信息通常需要其他上下文,并且可能需要多个文件。共享指向多个文件或多个片段的链接使用户将这种上下文拼凑在一起并理解所呈现内容的范围具有挑战性。

在GitLab 13.0中,通过为片段提供基于Git存储库的版本控制支持奠定了基础。在查看代码并理解其目的时,版本控制及其提供的历史记录是重要的上下文,但可能还不是全部。

GitLab现在在单个代码段中支持多个文件,用户可以创建由多个部分组成的代码段。它将其用途扩展到无限的可能性。例如:

包含脚本及其输出的代码段。

包含HTML,CSS和JS代码的摘要,可以轻松预览结果。

包含docker-compose.yml文件及其关联.env文件的代码段。

一个gulpfile.js文件加上一个package.json文件,一起用于引导项目和管理其依赖项。

在单个代码段中提供所有这些文件,为可以共享的内容类型和查看它们时提供的上下文提供了更多选项。

通用软件包注册表

GitLab Package Registry产品中支持多种语言。但是,存储尚不支持的其他二进制类型。

在GitLab 13.5中,可以将原始的程序包(就像在Nexus中一样)添加到通用程序包注册表中。展望未来,此功能有助于为发布资产创建基础,并允许附加二进制包,从而使可以更轻松地使用GitLab打包和发布软件。

将二进制包附加到发布

新版本中可以将二进制文件附加到的发行标签gitlab.ci-yml。这扩展了对发行资产的支持,使其不仅包括资产链接或源代码,还包括二进制文件。这使得开发团队更容易采用GitLab并使用它来自动化发布过程。


功能标记灵活的部署策略

使用策略时,粘性或体验一致性仅由用户ID决定,这可能是个限制;例如,匿名用户不受到策略的影响。

通过使能够基于会话ID,用户ID或随机(无粘性)定义粘性,新版本改进了推出策略。这使可以更好地控制部署,并支持匿名用户。

功能标志可用于所有层

在GitLab 11.4中, 引入了功能标记。在GitLab 12.2中,引入了百分比推广和用户ID功能标记策略。在GitLab 13.1中,引入了功能标记用户列表,并在每个环境中支持多种功能标记策略。

目前已经正式完成将功能标志移至Core供CE用户免费使用。

部署到AWS EC2的模板

为了帮助更有效地部署到AWS Elastic Cloud Compute(EC2),新增加了一个模板,展示如何入门。通过此模板,可以首先利用AWS CloudFormation API来配置自己的基础架构。然后,将先前构建的工件推送到AWS S3存储桶,并将内容部署到AWS EC2实例。

用户可以在配置中包括模板,指定一些变量,他们的应用程序将立即部署并准备就绪。

新用户注册所需的批准

为了在不损害安全性的情况下为了减轻GitLab管理员的操作负担,GitLab 13.5引入了新的实例级选项,要求任何新用户帐户都需要管理员的批准。默认情况下,此选项是禁用的,但启用后,将需要实例管理员的手动批准,才能完成用户注册。

在新板上自动添加待办事项和待办事项清单

在大多数情况下,尽可能简化工作流程将为团队提供最佳服务。为了鼓励这种情况,并使初次使用董事会的工作效率更高,更易上手,现在创建新的董事会将自动预先填充''待办事项''和''待办事项''列表,以便直接处理问题。

跨子组和项目同步迭代(STARTER及以上)

当前在组级别创建迭代,并且无法在子组或项目的上下文中查看迭代的报告。对于根据最小特权原则进行操作的组织而言,这是个问题。这也使大型组织难以使用相同的迭代节奏,同时也为每个小组和项目提供了一种跟踪其进度的方式。

为了解决这个问题,现在迭代是沿组的层次结构继承的,从而为每个子组和项目提供查看查看范围在其上下文中的迭代报告的功能。

此更改还使组织可以具有更大的灵活性,并可以控制他们要如何使用迭代。从顶级组配置迭代,以按照相同的时间表对齐所有组和项目,或者每个子组可以独立管理自己的迭代节奏。

深度Wiki导航

在GitLab 13.5中,随着组Wiki的发布,在如何查看和导航Wiki的文件结构方面有了另一个巨大的改进。当前,如果有多个文件夹级别,则很难查看位置或了解Wiki的结构。这使导航,查找页面和思维导图变得困难。

在新版本中,在边栏中引入了Wiki深层嵌套,因此可以查看所有页面并进行相应导航。

将YouTube视频嵌入到静态网站编辑器中

GitLab 13.5在静态站点编辑器的WYSIWYG模式下包括一个新的格式化选项,使只需单击几下即可轻松嵌入YouTube视频。在模式窗口中输入完整的嵌入URL或YouTube视频ID后,静态网站编辑器会在光标处插入正确的HTML块,并在编辑器中显示视频的缩略图。

不需要复制和粘贴格式正确的HTML即可将视频嵌入Markdown文件中,并且知道所包含的视频正确无误,就可以放心地编辑文档。Gitlab已经针对YouTube视频嵌入对其进行了优化。

允许一维平行矩阵

以前,parallel: matrix以并行方式运行作业矩阵的关键字仅接受二维矩阵数组。如果要为某些作业指定自己的值数组,这是有限制的。

在新版本中,具有更大的灵活性,可以以最适合的开发工作流程的方式运行作业。可以在一维数组中运行作业的并行矩阵,从而使管道配置更加简单。这是实践中的一个基本示例,它将针对不同版本的Node.js运行3个测试作业,但是可以将这种方法应用于特定的用例,并轻松地在管道中添加或删除作业:

限制每个报告解析的单元测试数量

现在,可以从JUnit报告格式的文件中解析的测试数量受到限制,这些文件在一个构建中上载以供''测试摘要''和''单元测试''报告使用。对于GitLab在线仓,对于一个构建中的所有JUnit报告格式文件,最多可解析的测试数量为500,000。

作业日志中的预折叠部分

作业日志通常包含很长的部分,因此当扫描日志以查找特定信息时,很难进行解析。

现在,可以将作业日志部分设置为默认折叠。为了使解析更加容易,只需[collapsed=true]根据需要在CI/CD配置文件中添加作业脚本即可。

使用API​验证扩展的GitLab CI/CD配置

编写和调试复杂的管道并不是一件容易的事。可以使用关键字来帮助减少管道配置文件的长度。但是,如果想事先通过API验证整个管道,则必须分别验证每个包含的配置文件,这既复杂又费时。

现在,可以通过API验证管道配置的完全扩展版本,其中include包括所有配置。现在,调试大型配置变得更加容易和高效。

''程序包注册表''页面上的更多Conan接口信息

可以使用GitLab Conan存储库来发布和共享C和C++依赖项。当使用Package Registry用户界面查找或验证依赖项时,很难区分不同版本的依赖项。用户界面显示了名称和版本,但不包含conan_user或conan_channel。这两种方法通常用于区分不同的程序包。例如,以下配方将在用户界面中显示为Hello version 1.0。

Hello/1.0@trizzi/stable

Hello/1.0@trizzi/beta

Hello/1.0@other_user/stable

现在,所有路径都显示在用户界面中,从而使查找和验证所需包装变得更加容易。

配置选项支持将部署密钥推送到受保护的分支

在版本12.0中,更新了部署密钥,以便具有写访问权的密钥不再能够将提交推送到受保护的分支。作为此限制的解决方法,一些用户删除了对master分支的访问限制,使其不受保护,并允许所有开发人员推送到master。

这会增加安全风险,因此为了提供更好的选择,Gitlab决定通过配置设置重新启用以前的行为。

启用gitlab-pages守护程序发送预压缩的br文件

为了改善GitLab页面加载时间,新增加了对Brotli压缩文件的支持。这有助于降低每页所需的带宽,从而缩短站点加载时间。

与API中的项目版本相关联的支持组里程碑(PREMIUM及以上)

对于GitLab中跨多个项目工作的发布经理,通常使用组里程碑来收集计划发布的相关项目,GitLab版本可以与项目里程碑相关联,新版中可以通过Releases API将组里程碑与项目版本相关联。

GitLab托管集群的可自定义名称空间

GitLab托管集群的用户现在可以在创建集群时选择在每个项目中使用单个名称空间,或在每个环境中使用单个名称空间。每个项目使用单个名称空间可以简化查找审阅应用程序的过程,而每个环境使用单独的名称空间可以提供额外的安全性。

查看Kubernetes代理商列表(PREMIUM及以上)

GitLab现在通过在GitLab用户界面中显示代理及其配置来帮助管理Kubernetes代理。计划在将来的发行版中为代理提供更多管理工具。

有关事件讨论的时间线视图(PREMIUM及以上)

manbetx客户端打不开评论和线索是在事件上进行协作的好方法,但是如何才能从线索化讨论中按时间顺序理解发生的一切?

新版中可以将讨论视为评论时间表,以帮助团队了解在战斗中发生的事件的顺序,并进行有效的事后评估。

删除价值流(PREMIUM及以上)

在GitLab 13.3中,通过将每个组的多个价值流引入了Value Stream Analytics。现在,可以删除在组中创建的任何自定义值流。

合并请求分析过滤器控件(STARTER及以上)

在GitLab 13.3中,引入了合并请求分析功能,可帮助更有效地评估合并请求吞吐量的效率和生产力。

GitLab 13.5引入了过滤器控件以合并请求分析。这可帮助根据筛选条件(例如,接受人,作者,标签,里程碑或分支)在合并请求分析中优化数据范围。

添加需求描述(ULTIMATE)

如果可以在工具中添加其他详细信息,例如验证标准,验收标准和基本原理,则需求管理可以提高生产率。

GitLab需求管理现在支持用户添加详细信息和内容,以在启用了GitLab Markdown的每个需求的描述字段中简化对需求的管理。

一键删除问题标签

从过去需要单击三次的才能删除问题中标签:从服务器中获取标签的新列表,然后使用搜索框找到要删除的标签。考虑到GitLab用户每天大约要删除55,000次问题,因此这是不直观且效率低下的。新版本中可以单击一下删除问题的标签。

分支的访问控制将覆盖代码所有者的要求(PREMIUM及以上)

合并请求批准限制了将代码推送到受保护分支的方式。这对于提高代码质量和实施合规性控制很有帮助。要求特定分支的代码所有者批准很有用,以防止未经代码所有者批准而直接更改文件。但是,它缺乏灵活性,无法自动使用默认分支上的更新标签,版本或部署跟踪器等用例。

先版本中,可在分支保护设置中将用户或组指定为''允许推送'',则他们可以直接推送到为代码所有者批准而配置的受保护分支。因为分支保护设置是GitLab项目的主要访问控制机制,所以此设置现在优先于''代码所有者''设置。

从静态站点编辑器编辑合并请求描述

工程最佳实践鼓励包括简洁的标题和说明以及对文件所做的任何更改。所提供的上下文在审核过程中以及用于记录更改的理由或动机非常有价值。

静态站点编辑器尽可能从编辑器中抽象出尽可能多的Git工作流。一种方法是使用默认的分支名称,合并请求标题和描述。这样就可以进行简单的一键提交,但是生成的合并请求缺少该关键上下文。

在GitLab 13.5中,现在可以在更改中包括一个可选的标题和描述,以填充更具描述性和实用性的合并请求。

单击即可将合并请求标记为''草稿''

即使没有准备好合并代码,创建合并请求也是与他人共享文稿并开始对话的好方法。为了向其他人发出信号,表示还没有准备好对文稿进行审查或合并,可以在合并请求标题前加上draft(以前称为wip)。这很有用,但是需要进入编辑模式,导航到合并请求标题,然后键入所需的前缀。

为了更快地使用此功能,在合并请求页面的右上角直接引入了''标记为草稿''和''标记为就绪''按钮(而无需编辑其描述即可更改)。只需单击一下,就可以表明工作正在进行中,尚未准备好进行合并,反之亦然。

PostgreSQL 12可用性

GitLab 13.3中,启动了与PostgreSQL 12的初始兼容性,并且可以在自建GitLab实例中可选启动。

GitLab 13.5中,已经完全支持PostgreSQL 12,包括在具有Geo和PostgreSQL集群的部署中。要在群集中使用PostgreSQL 12,必须使用Patroni进行复制和故障转移。PostgreSQL 12不支持使用repmgr进行复制和故障转移。

PostgreSQL 12将成为13.6中新安装的GitLab的默认版本。对于现有GitLab部署的升级,它将成为13.7中的默认版本,并可以选择退出并保留在PostgreSQL 11上。

可选缓存失败的管道

当管道获取大量外部依赖项(例如NPM)时,如果无法选择对失败的管道上的依赖项进行高速缓存。新版本中可以选择保存缓存,而不管作业状态如何,这可以在失败的管道上进行迭代时节省时间和资源。

仅在作业/管道成功时才进行缓存仍然是默认设置。这可以防止未清除的不完整依赖项缓存导致后续管道失败。新版本中可以设置何时总是安全地启用缓存,支持增量构建并帮助加快到达第一个绿色管道的过程。

允许更轻松地从告警页面回滚

当收到部署触发的告警时,由于告警缺少其他上下文,因此很难立即了解发生了什么。

在新版中,现在可以单击直接链接以快速导航到相关环境并获取所需的上下文。这样可以更轻松地了解需要注意的环境。在环境页面中,如果需要,还可以轻松查看相关部署并回滚到以前的部署。

服务水平协议倒数计时器(PREMIUM及以上)

服务水平协议(SLA)对于客户而言至关重要。违反SLA可能会增加收入,并降低客户满意度和信心,但是要监视SLA的多个活动事件则具有挑战性。SLA倒数计时器使用户可以配置特定的SLA,并在事件上显示SLA倒数,以帮助确保满足SLA并使客户满意。

查看告警集成列表

运营团队管理集成到其中央事件管理平台中的许多告警工具。当配置界面,身份验证密钥和重要URL位于不同位置时,管理和维护这些工具和集成非常复杂且令人困惑。

新版中,GitLab项目在设置>操作>告警中为团队提供了一个列表,用于查看和修改告警配置。

Omnibus的改进

为Patroni添加了附加功能,Patroni是Omnibus中用于PostgreSQL复制和故障转移的新解决方案。使用newrestart和reloadsub命令,可以重新启动Patroni或在领导者数据库节点上重新加载Patroni配置,而无需触发自动故障转移。revert-pg-upgrade现在支持该命令以还原由Patroni管理的集群的PostgreSQL升级。

现在,可以使用SSL证书对PostgreSQL数据库进行客户端身份验证,以代替使用密码。该功能将需要自己的SSL证书管理解决方案才能使用此功能。

GitLab 13.5包含了Mattermost 5.27,它是开源的Slack替代产品。最新版本包括可轻松安装和维护Mattermost的Mattermost Omnibus(Beta),以及安全更新。

Gitlab Runner 13.5

同期还发布了GitLab Runner 13.5。GitLab Runner和GitLab CI/CD协同工作,GitLab CI/CD是GitLab附带的开源持续集成服务。新增功能:

允许用户设置kubernetes本地临时存储请求和限制;

提供Docker镜像以在Google Compute虚拟机上自动安装GitLab Runner

引入变量以指示当前构建状态;

将标签添加到由GitLab Runner创建的Docker缓存卷;

Windows上bash作为shell程序使用的Runner通过反斜杠而不是正斜杠传入路径/。

Bug修复

修复Debian的存储库为arm64提供32位ARM二进制文件的bug。

更多内容请参考GitLab Runner变更文档。

安全和合规性审计

自定义SAST和秘密检测规则(ULTIMATE)

GitLab静态应用程序安全测试(SAST)和密码检测现在支持自定义检测规则。这允许GitLab用户更改漏洞检测默认设置,以根据组织的喜好调整结果。SAST自定义规则集允许排除规则并修改现有规则的行为。密码检测支持禁用现有规则并添加新的正则表达式模式,以允许检测任何类型的自定义秘密。

可以通过将新文件添加到.gitlab名为sast-ruleset.toml或secret-detection-ruleset.toml包含以正确符号表示的自定义的文件夹中来定义自定义规则集。可以了解有关此文件格式的更多信息,并官方SAST自定义规则集和Secret Detection自定义规则集的文档中查看示例。

提供对顶级组的最小访问权限(PREMIUM及以上)

为了帮助组织使用具有更细粒度访问控制的SAML SSO,组所有者可以为用户分配最小的访问角色。具有最小访问权限的用户可以在UI中以及通过API列出组。但是,无法浏览资源,项目和子分组等详细信息。可以在供应时为SSO/SCIM将此角色设置为默认角色,或者将其分配给顶级组中的现有用户。

对iOS和Android移动应用程序的SAST支持

GitLab SAST现在支持移动应用程序,包括用Objective-C和Swift编写的iOS应用程序,以及由移动安全框架(MobSF)支持的用Java和Kotlin编写的Android应用程序。最初,该分析仪支持源代码分析,打算在将来扩展对.ipa和.apk文件的二进制扫描的支持。

凭据选项卡''SSH''证书列表增加删除按钮(ULTIMATE)

管理名称空间包括确保知道谁有权访问以及如何访问。为了提高SSH密钥的安全性,应该能够在适当的时候删除用户的SSH密钥。为了支持此控件,新添加了一个删除按钮,供自我管理的管理员根据需要删除这些密钥。

现在,可以从证书列表管理用户的SSH密钥。

审核事件捕获失败的两因素身份验证登录(PREMIUM及以上)

GitLab名称空间的完全可追溯性和可审核性对于成功的安全合规性计划至关重要。重要的是要知道两因素身份验证尝试何时失败,因为这表明用户或恶意行为者知道帐户密码,但无权访问第二因素设备。

现在,在GitLab 13.5中,可以评估失败的两因素身份验证尝试的次数,以帮助做出决定。可以在实例级别的''审核事件''表中找到失败的两因素身份验证尝试。在将来的迭代中将提供对组级别的支持。

改进的安全扫描合并请求体验

现在所有用户都可以使用SAST和Secret Detection,Gitlab改善了所有GitLab用户在合并请求中与安全扫描结果进行交互的体验,从而使任何人都可以更轻松地访问安全扫描结果。以前的安全扫描结果只能在''管道概述''页面上访问,用户必须知道在哪里可以找到它们。

现在,所有合并请求将显示是否已运行安全扫描并帮助用户找到作业工件。计划在接下来的几个版本中继续改善这种体验。此更改不会更改Ultimate用户的MR体验。

更新nodejs-scan SAST分析器以使用njsscan v0.1.5

新版中更新了Node.js SAST分析器,其中添加了100多个新的检测规则。这个版本也改变检测规则,由njsscan v0.1.5的和semgrep支持,在新SAST自定义规则集。

针对C/C ++和NodeJS漏洞的改进的SAST严重性数据

当可从安全扫描分析仪获得时,GitLab静态应用程序安全测试将提供已识别漏洞的严重性数据。最近更新了NodeJS(nodejsscan)和C/C++(flawfinder)的分析器,以增加对严重性数据的支持。该数据将有助于增加安全批准规则的可用性和准确性,因为更少的漏洞将报告''严重''。将来,将增加其他分析器缺少漏洞元数据的功能,并添加一种机制,以允许自定义漏洞元数据,使组织能够定制结果以匹配其风险状况。

SAST配置用户界面的改进(ULTIMATE)

该GitLab SAST配置UI工具已经扩展到支持更多的设置选项,现在可以更新现有GitLab CI/CD文件简单。这种配置经验使非CI/CD专家可以更轻松地开始使用GitLab SAST。该工具可帮助用户创建合并请求以启用SAST扫描,同时利用最佳配置实践(例如使用GitLab管理的SAST.gitlab-ci.yml模板和正确覆盖模板的设置)。

配置UI现在支持特定SAST分析器设置的配置,允许组织根据自己的安全偏好来定制SAST结果。现在,配置用户界面还可以更新现有的简单.gitlab-ci.yml文件,从而允许该工具与已经安装了GitLab CI/CD的项目一起使用。在即将发布的GitLab版本中,还将向GitLab Core用户扩展对该工具的访问。

GitLab Helm chart改进

已添加''任务运行器'' chart的文档。Task Runner用于执行管理任务,例如rake任务和备份。新文档说明了可以为Task Runner配置的设置,并提供了使用示例。

Geo复制外部合并请求差异和Terraform状态文件

Geo现在支持将外部合并请求差异和Terraform状态文件复制到辅助节点,从而允许分布式团队从最近的Geo节点访问它们,从而减少了延迟并改善了整体用户体验。此外,在故障转移到该辅助节点时,还可以从辅助节点还原该数据。

在使用情况页面上跟踪Pipeline Artifact存储

在最初发布PipelineArtifacts之后,存在一种使用存储的工件,但未在''存储使用配额''页面上进行跟踪。这意味着无法准确表示实际有多少可用存储空间。

现在Job和PipelineArtifacts都由Artifacts标签表示,因此可以确切知道Artifacts占用了多少存储空间。

容器注册表清理策略的重大改进

对标签使用清除策略从容器注册表中删除不需要的标签时,可能已经注意到,并非总是像期望的那样删除标签。结果,很可能必须手动使用GitLab API进行干预才能批量删除注册表标签,或者忽略了该问题,从而增加了存储成本。

此外,可能会遇到策略在其中运行但仅部分完成的问题。当策略尝试删除许多镜像而超时时,会发生这种情况。如果发生这种情况,它将在策略的下一次计划运行中继续删除标记。继续前进,将看到一条警告,表明尚有部分运行的策略。这样,可以决定是否要手动进行干预。

使用新标签上的镜像摘要创建发布

Docker支持不可变的镜像标识符,采用了这种最佳实践来更新云部署镜像。标记新镜像时,还以编程方式在构建镜像摘要时对其进行检索,并创建发行说明以将该摘要有效地传达给用户。这样可以保证服务的每个实例都运行完全相同的代码。可以回滚到镜像的早期版本,即使该版本未标记(或不再标记)。如果在部署过程中推送新镜像,这甚至可以防止出现竞争情况。

通过AutoDevOps进行增量部署与Kubernetes 1.16兼容

GKE中的集群已于2020年10月6日自动升级到Kubernetes v1.16。新更新了Auto DevOps,以支持此版本的增量部署以继续按预期工作。此升级影响使用定时增量部署连续部署到生产的用户,以及自动部署到登台但手动部署到生产的用户。

将Auto DevOps升级到Helm 3

Auto DevOps旨在立即为用户带来出色的易用性和安全性最佳实践。到目前为止,Kubernetes环境中的Auto DevOps要求在群集上安装Helm v2。考虑到蒂勒的根访问权限,这带来了安全风险。随着Helm v3的推出,不再需要Tiller。

当前的GitLab版本最终支持Helm v3,因此可以放心,将获得最新的出色功能和安全更新。对于GitLab托管群集,可以按照官方文档升级Helm安装。请注意,Helm 2支持预计将在2020年11月左右结束。

使用GitLab和Terraform快速入门

新的GitLab CI/CD模板使无需任何人工即可设置Terraform管道,从而降低了团队采用Terraform的进入门槛。

Bug修复

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

扩展版本的NuGet软件包无法上传的问题;

容器注册表清理策略策略不会删除镜像的问题;

报告者级别不足以浏览软件包列表;

组级别的部署令牌在Maven组终结点上失败;

Go get 对于深层嵌套项目失败,并显示500错误;

软件包名称包含句点时,无法安装Python软件包;

存在旧版PostgreSQL实例时,Auto Deploy遇到错误;

''新/编辑版本和新片段''页面上的''预览更改''不起作用;

最新版本v0.4.0之后未更新最新的docker标签;

威胁监控策略编辑器的各种UI修复;

''隐藏隐藏''切换在管道安全仪表板中不起作用;

从漏洞创建问题会生成空问题;

SAST Spotbug设置SAST_JAVA_VERSION:11不起作用;

具有自定义CA的SAST eslint无法编写gitconfig;

允许通过Git使用项目访问令牌;

对于需要接受服务条款的实例,允许使用Project Access令牌;

删除令牌后删除项目访问令牌用户;

史诗筛选器不适用于开始日期或截止日期排序;

'' Epic!=''的问题搜索不起作用;

搜索将返回未排序的结果,以查找渴望加载的范围;

代码搜索未在搜索结果中标识正确的代码blob;

搜索结果中的代码链接应使用默认分支名称而不是提交哈希;

GEO:修复了存储移动后项目/设计/Wiki存储库无法重新同步的问题;

GEO:修正Wiki/设计,而在主要站点上没有存储库的尝试一次又一次地同步

GEO:修复程序包文件视图默认情况下不起作用;

性能改进

在每个版本中,将继续在改善GitLab性能方面取得重大进展。Gitlab致力于提高每个GitLab实例的速度。在GitLab 13.5的性能改进工作集中于请求zip文件时的Cache dataOffset和symlink。

功能变更

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

变更日期:2021年5月22日

目前浏览器性能测试在默认performance情况下的作业中运行。随着GitLab 13.2中的负载性能测试的引入,该命名可能会造成混淆。为了抢到测试是在浏览器性能测试,GitLab 14.0模板中默认作业名称修改为browser_performance。

删除logstash容器注册表日志格式化

变更日期: 2021年1月22日

目前GitLab支持的日志格式:

对应用程序日志的文本,JSON和logstash日志格式。

对访问日志的文本,JSON和组合日志格式。

Gitlab 将删除logstash和组合格式,只支持使用两个选项文本和JSON统一所有应用程序和访问日志的格式。

删除Container Registry日志hook

删除日期: 2021年1月22日

容器注册表当前支持只能用于电子邮件通知的日志记录hook。基于日志条目的告警通常由单独的工具处理。据所知,GitLab用户都没有依赖此功能,并未使用它。该功能的实现与底层的日志记录库紧密耦合,这会对影响可用功能切换时的依赖关系。为了简化注册表功能和配置,将删除对日志记录hook的支持。

删除Container Registry maxidle和maxactive Redis池设置

删除日期: 2021年1月22日

当前为Redis连接池公开的一些配置设置与基础Redis客户端绑定,并且在替代库中没有等效设置。在改进Redis集成(例如增加对Sentinel的支持)的工作时,以功能更丰富的替代方法来替换当前的Redis客户端依赖项,从而更好地为其提供支持。为此,需要替换绑定到当前客户端库的Redis池配置设置:

删除redis.pool.maxidle和redis.pool.maxactive设置。

添加redis.pool.size(最大连接数),redis.pool.minidle(最小空闲连接数)和redis.pool.maxlifetime(可以重用连接的最大时间)设置。

保持Container Registry代理透传缓存

根据对GitLab管理员进行调查后,Gitlab决定将不会删除该功能。

本proxy部分允许将Container Registry设置为上游存储库的本地镜像。

Container Registry删除对Bugsnag的支持

删除日期: 2021年1月22日

Bugsnag是容器注册表支持的错误报告服务之一,目前没有用户依赖此服务。 GitLab推荐使用。为了简化和合并受支持的错误报告服务,打算增加对支持,并删除对Bugsnag的支持。

Container Registry删除对NewRelic的支持

删除日期: 2021年1月22日

NewRelic是容器注册表支持的错误报告服务之一,目前没有用户依赖此服务。 GitLab推荐使用。为了简化和整合支持的错误报告服务,打算添加对Sentry的支持,并删除对NewRelic的支持。

删除使用Docker注册表API v1的请求

删除日期: 2021年1月22日

GitLab将于2021年1月22日停止Docker注册表v1 API拉取功能.Docker在2019年6月停止对该功能的支持了,该功能使GitLab团队可以专注于为提供更多价值并针对当前注册表用例的功能和修补程序。

通过完成以下步骤,GitLab上的v1注册表API的现有用户可以移至v2注册表API:

将Docker Engine更新到17.12或更高版本,以便与v2注册表API兼容。

如果在GitLab中具有v1格式的内容,则可以使用较新的Docker客户端(比1.12更新的版本)将其移至v2格式,以重建镜像并将其推送到GitLab。

停止对CentOS 6的支持

变更日期: 2020年11月22日

CentOS 6将于2020年11月到期。GitLab13.6将是在CentOS 6上部署GitLab的最后一个受支持的版本。建议升级到CentOS 7或8。

计划弃用的GraphQL字段将在13.6中永久删除

变更日期: 2020年11月22日

按照GraphQL弃用过程,在12.x中弃用的以下字段将在13.6中永久删除:

Types::CommitType - :latest_pipeline

Types::GrafanaIntegrationType - :token

Types::IssueType

Types::EpicIssueType - :designs

Types::MergeRequestType - :merge_commit_message

Types::TimelogType - :date

升级更新

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.5的重要说明

已发现有些实例可能会受影响,这些实例的升级到13.5.0后,会有assertion错误。官方正在努力立即发布13.5.1以解决此问题。

在此期间,可以采用一种简单的解决方法:

chmod 02770 /var/opt/gitlab/git-data/repositories

Workhorse套接字的默认路径从中的更改/var/opt/gitlab/workhorse/socket为/var/opt/gitlab/workhorse/sockets/socket13.5。gitlab-ctl reconfigure升级期间需要A来应用此更改。如果使用SELinux并指定了自定义套接字路径

相关文章