GitLab 12.3发布,新增加Web应用防火墙和生产力分析等

昨天,以既定的版本计划,Gitlab发布了新的月度版本GitLab 12.3。同时Gitlab公司也是喜事不断,宣布完成了2.68亿美元的E轮融资,资金充裕之下,希望能带来更好的产品和功能。GitLab 12.3版本带了哪些功能提升和变化呢,按照惯例请追随虫虫一起学习。

主要功能

Web应用防火墙

现代Web应用程序面临了越来越多的安全挑战,安全性不容忽视。Web应用程序防火墙WAF可以用来监控和识别恶意的尝试和攻击行为通过告警或者实时阻断来Web应用程序。GitLab 12.3中内置在GitLab SDLC平台中的Web应用程序防火墙,用来是监视和告警与Kubernetes集群有关的安全性问题。未来的将扩展WAF功能,用来以阻止恶意流量,自主创建和管理防火墙规则。该版本WAF的启用需启用Kubernetes集群,在集群中安装Ingress应用程序时,GitLab会将附加modsecurity Web应用程序防火墙(WAF)插件到集群。

WAF能够确定到应用程序的HTTP或HTTPS通信是否包含恶意代码,例如SQL注入,跨站点脚本CSS或木马等。

自带的WAF预先配置了一组强大的规则,即OWASP ModSecurity Core规则(CRS),可直接检测许多不同类型的攻击。

生产力分析(PREMIUM及以上)

各地的软件交付团队都需要正确的信息和见识,以提高生产力和效率。通常,看不见的瓶颈和障碍会迫使团队等待和浪费时间,而不是提供新功能。

Gitlab 12.3新增加生产力分析功能用来帮助团队和领导者更好地了解小组和项目的整体生产力和有效性。生产力分析将帮助团队及其领导者发现最佳实践,以提高生产力。

最初版本主要基于合并MR所需的时间,GitLab将使钻取数据和学习可以指导未来改进的见解成为可能。在大多数组织中,领导者会负责多个项目,而组级分析工作区旨在提供跨多个项目的生产力和绩效见解以及可见性。现有的过滤器,可以支持在特定日期范围内向下钻取到特定组员或组中的标签。

合规性增强

遵守法守纪是软件团队面临的新的挑战,国内随着信息安全法以及等保3.0的发布对软件合规性要求会越来越高。GitLab 12.3这次也带来这方面的有趣的功能。在GitLab的12.3版本中MR批准规则提供了一种防止团队合并引入不支持的许可证的代码的方法。每个分支都需要代码所有者批准,才能保护分支并要求代码所有者批准更改。

如果有严格的许可证合规性限制,则可以在合并请求中找到列入黑名单的许可证时,将许可证合规性功能设置为禁止合并,这样可以防止新引入许可证。当前,可以在项目设置中为"许可证检查"组设置批准者,然后按照文档中概述的指示进行检查。

组级集群部署/环境的全局视图(PREMIUM及以上)

预配置组级集群是运营商为开发人员提供应用程序开发平台的好方法。扩展集群资源可能具有挑战性,并且需要全局了解资源使用情况。

集群页面上新的"环境"部分概述了所有使用Kubernetes集群的项目,包括已配置的部署/环境以及每个环境使用的Pod数量。

分析工作区

工程和产品团队可以跨越多个GitLab组和项目,但是传统上大多数分析都是在项目级别开发的。新版本中心增加了这分析工作区,用户可以在该工作区中汇总组,子组和项目之间的图表。Analytics工作区将使团队和领导者更容易分析和管理团队指标。在GitLab 12.3中 ,纳入了组级和项目级生产力分析和组级周期分析。在后续版本中,将会增加选择多个组和子组,移植实例的所有分析功能。

设计管理通知(PREMIUM及以上)

GitLab 12.2中,增加了设计管理的初始版本。为继续增强这部分功能,确保可以通知用户。新班中,设计对话将会为提到的用户创建待办事项,并根据他订购设置发送通知。这有助于确保重要的反馈信息不会遗漏并且可以采取行动。未来版本中,这些对话将会添加到"主要讨论"标签中,以简化对话流程。

设计管理状态和讨论次数(PREMIUM及以上)

在GitLab 12.2中提供的设计管理,允许将设计直接上传到问题。它们被上载到问题内的单独选项卡中,并且用户不清楚每个版本的Designs中的活动。新版本在上传设计时,每个版本都会添加状态图标,以告知是新设计还是现有设计的更改。我们还增加了有关设计的讨论数量,以更好地通知用户正在进行的对话。

合并请求批准规则的API(STARTER及以上)

合并请求的批准规则允许通过指定合格的批准者和每个批准者的最小批准数量来交流谁应参与代码审查。批准规则显示在合并请求小部件中,因此可以轻松找到下一位审阅者。

在GitLab 12.3中,已将对批准规则的支持添加到了项目和合并请求的API中。

未解决讨论的​​键盘快捷键

审查,讨论和解决反馈是GitLab中代码审查的基础。跳转到下一个未解决的讨论按钮可以让我们轻松地快速从讨论转到讨论。

在GitLab 12.3中,新的n和p键盘快捷键可让我们快速跳至"合并请求"中的下一个和上一个未解决的讨论,让审查更改更加方便。

临时API:要求代码所有者的每个分支批准合并请求(PREMIUM及以上)

使用合并请求批准来限制将代码推送到受保护分支的方式有助于提高代码质量和实施合规性控制。但是,并非所有合并请求都以稳定分支为目标,并且并非所有稳定分支都需要相同的控件。

在GitLab 12.3中,可以要求特定分支的代码所有者批准(通过API),以防止将更改直接推给具有代码所有者的文件,或者将更改合并到未经代码所有者批准的情况下。

注意:此功能仅可通过GitLab 12.3中的API使用。在GitLab 12.4中,可以通过"保护的分支"设置使用它。

rules关键字控制管道行为

管道中的only/except规则可以具有许多隐式行为,并且随着管道中添加的越来越多,很难理解给定作业是否要在不同情况下运行。新版本引入一个新rules:语法将使实现和理解复杂规则变得更加容易。该语法是可选的,并且可以与当前的only/except方法存在于相同的管道中,但不能存在于相同的作业中。

interruptible关键字,指示是否可以安全取消作业

新的interruptible关键字可用于指示如果由于同一作业的新运行而变得多余,是否应取消该作业。关键字默认为false,因此应使用它来指定可以安全停止的作业。仅当启用了自动取消冗余管道功能时,才使用此值。

这有助于避免在管道中重复不必要的工作,从而降低成本并提高管道效率。

only/except: external_pull_requests

GitLab CI具有"外部存储库"功能,可以允许客户将外部存储库用于源代码控制,并给GitLab CI/CD使用。但是,到目前为止,CI_PIPELINE_SOURCE始终显示push,因为它基于拉镜像而不是外部仓库或webhook。这使得GitLab我们无法正确地支持only/except: merge_requests-样式选项。在12.3版中,我们解决了此限制。

从CI/CD删除容器映像

GitLab容器注册表允许用户利用GitLab CI/CD来构建镜像和标签并将其推送到项目。容器注册表的更改是通过一个名为"CI Registry User"的服务帐户进行的,该帐户使用预定义的环境变量CI_REGISTRY_USER从.gitlab-ci.yml中调用。此前,此服务帐户可以将新标签推送到注册表,但是缺少取消标签镜像的权限。这阻止了特定于分支的镜像被删除,从而导致了额外的存储成本,并且由于大量不需要的标签而在注册表列表给用户时造成了不便。

在12.3扩展了CI_REGISTRY_USER的权限,可以允许删除镜像的标记,因此可以在常规CI/CD流程中清理特定于分支的标签,并使用Gi​​tLab CI/CD来自动执行清理脚本。

执行完整的DAST活动扫描时验证域(ULTIMATE)

现在,可以确保DA​​ST仅针对故意配置用于DAST扫描的域执行活动扫描。

这有助于确保DAST主动扫描不会意外针对可能正在提供内容或用于生产能力的域运行。

被动DAST扫描没有变化,因为被动扫描不会对扫描的站点产生负面影响。

SAST Spotbugs分析器已新增加Java 11(ULTIMATE)

SAST SpotBugs分析器已更新,增加对Java 11扫描。

可以通过在项目中设置SAST_JAVA_VERSION环境变量来启用此功能。

合并请求管道的"运行管道"按钮(PREMIUM及以上)

合并请求的管道最近引入了一种在合并请求的上下文中运行管道的新方法,但是触发这些管道之一的新运行的唯一方法是通过推送。在此版本中,新添加了一个按钮以启动新管道,从而使重试失败的管道更加容易。

用户定义的CI变量可通过Auto DevOps用于Docker构建

CI变量使您可以定制如何运行流程以构建应用程序,并将其作为CI管道的一部分。从GitLab 12.3开始,可以将用户定义的CI变量的可用性扩展到Auto DevOps中的docker build,数据可作为新的build secret使用。

可以使用AUTO_DEVOPS_BUILD_IMAGE_FORWARDED_CI_VARIABLES变量列出Docker构建中可用的变量列表。

Knative组和实例级集群支持

组和实例级集群现在支持安装Knative,这是一个基于Kubernetes的平台,用于部署和管理无服务器工作负载。允许多个项目使用单集群的GitLab Serverless功能。

指标仪表板的折线图

在可视化指标时,通常用户会为特定的指标选择不同类型的可视化(例如,CPU的折线图,磁盘空间的面积图)。为了帮助实现这一目标,新版本添加了折线图,用来增强监控功能。

快速操作以添加/删除有关问题的Zoom会议

同步协作是任何交战的关键部分。现通过直接使用Zoom嵌入此功能来简化启动会议桥并吸引所有必需方参与的步骤数。用户启动缩放会议后,他们可以使用快速操作并输入Zoom会议URL(将其附加到问题上。一个按钮将出现在问题的顶部,使用户可以直接访问会议桥。解决事件后,可以使用/remove_zoom删除Zoom会议。

该功能通常可GitLab官网仓库使用,也支持在自建实例上使用,可以通过启用issue_zoom_integration功能标志。

通过Git HTTP推送时,Geo显示延迟(PREMIUM及以上)

对于偏远地区的用户而言,获取大量数据可能会花费很长时间。通过使用Geo复制存储库,在远程用户附近创建只读辅助节点,从而减少克隆和获取大型存储库的时间。由于辅助节点落后于主节点,因此只要在HTTP上使用git push,GitLab现在就可以提供复制延迟的估计。这可以提高了使用Geo节点的可见性,并允许用户检测复制延迟的问题并将其报告给系统管理员。

由于协议限制,使用git pull时此消息不可用。

Geo原生支持Docker Registry复制

Geo本机支持在主要和次要Geo节点之间复制Docker注册表。这使Geo用户可以在附近的辅助节点上使用Docker注册表。该方法与存储无关,可用于对象存储或本地存储。

使用分布式objec时对于Docker注册表的存储,主要和辅助Geo节点可以使用相同的存储类型。这种方法不依赖于Geo的本地复制功能。

为选定的OAuth提供商禁用2FA

使用强制两因素身份验证的组织以及使用2FA的身份提供者的组织可能会发现需要两次的身份验证。由于有了社区的贡献,现在可以在GitLab中为选定的OAuth身份提供商绕过2FA。对于那些使用可处理2FA的提供程序的用户,登录GitLab成为更友好,更轻松的体验。

IP地址限制支持多个子网(ULTIMATE)

通过IP地址来限制组活动,GitLab 12.3引入了指定多个IP子网的功能。对于地理分布的组织,这有助于使此功能更加出色。大型组织现在支持指定多个IP范围,而可以将传入流量限制为满足其特定需求。

IP地址组限制中包含的API请求(ULTIMATE)

GitLab 12.0引入了通过IP地址限制群组活动的方法。新版本对该功能进行了增强,增加了对API活动的限制,如果传入请求不遵守组的限制,则该请求将被拒绝。这为具有合规意识的企业提供了一个扩展的访问控制方法,涵盖了UI和API调用,从而解决了一个重要问题。

通过HTTP压缩Git ref广告

当获取对Git存储库的更改时,Git服务器会发布存储库中所有分支和标签的列表。这称为ref广告,对于大型项目可能为数兆字节。

在GitLab 12.3中,当通过HTTP进行获取时,将对受支持的客户端压缩ref公告,从而减少正在传输的数据量并加快获取操作的速度。

Git Push事件的审核日志(STARTER及以上)

可以通过重写Git历史记录以更改提交,作者和时间戳,这为开发人员编写清晰有用的历史记录成为可能。但是对审核,这是一个问题。

在GitLab 12.3中,可以将添加提交,重写历史记录或以其他方式修改存储库的Git推送事件添加到审核日志中。默认情况下,禁用推送事件的审核日志,以防止GitLab实例具有很高的Git写流量时性能的下降。

在即将发布的版本中,默认情况下将启用Git推送事件的审核日志。

更智能的Web IDE默认提交选项

此前,Web IDE在进行提交时默认将其提交给当前分支。这使那些具有权限的人很容易误推送到master或其他受保护的分支。新版本在Web IDE中进行更改时,默认的提交选项更加智能,可以防止对错误的分支进行更改。 Smar的ter commit选项可防止具有写访问权的用户意外推送到master和protected分支。当用户没有写访问权时,将提供其他详细信息,说明为什么选项不可用。此外,新的提交选项还支持有或没有现有合并请求的非默认分支提交。

CI/CD管道的作业超时

不同的作业具有不同的执行特征,并且可能需要针对每个作业设置不同的超时。可以在.gitlab-ci.yml中的作业中添加timeout:关键字以及一个指示作业失败前等待的分钟数的数字来配置超时。

管道触发器的状态检查(PREMIUM及以上)

此前改进了跨项目管道之间可以相互触发的方式,但是仍然缺少的一件事是让触发管道等待或确认触发管道是否成功。在版本中,引入了depends and wait策略,可以自动为处理。如果要触发depend的管道,则它将等待管道完成,并在完成触发作业之前验证它是否成功。如果选择wait,它将等待其完成,但无论通过/失败状态如何,都将继续进行。

API端点以列出组的Docker映像/标签

GitLab容器注册表允许用户通过命令行,CI/ CD或API将Docker镜像/标签构建并推送到他们的项目中。但是,在GitLab 12.3之前,没有提供对组级别的镜像/标签的任何可见性,这是​​用户的普遍要求。

新版本添加了两个API端点,这些端点将显示到组级别镜像和标签,用以帮助提高容器注册表的可见性和可发现性的第一步。接下来,将利用API创建一个组级浏览器,作为容器注册表用户界面的一部分。

不依赖Docker-in-Docker的SAST扫描(ULTIMATE)

现在可以选择不使用Docker-in-Docker进行SAST扫描。可将SAST扫描配置为不需要提升的特权。

编辑漏洞解除原因(ULTIMATE)

新版本中可以编辑和删除漏洞解除原因,以便于管理漏洞信息,添加和更新漏洞的上下文。

改善Pages的初始设置体验

为了改善Pages的用户体验,新添加了一条横幅,通知用户可能的初始设置时间。

显示用于部署的Kubernetes集群

新版本中作业详细信息页面显示用于给定部署的Kubernetes集群的名称。在群集名称上为项目所有者和维护者提供了一个链接,该链接将直接链接到群集详细信息页面。

JupyterHub用于组级Kubernetes集群

组级集群现在支持JupyterHub的安装,将JupyterHub的可用性扩展到项目级和组级集群。

通过Slack中的Slash命令关闭问题

故障处理过程中需要使用聊天工具来解决现代IT事件。该工具需要与您正在管理的系统以及实际执行修复的工具紧密集成。在还原服务和更新外部利益相关者的过程中,您要尽可能减少上下文和工具的切换。

在12.3中,在基于Slack的ChatOps产品提供的命令集中添加了一个额外的斜杠命令。现在通过Slack关闭问题,而无需切换工具,只需找到有问题的问题,然后手动将其关闭。

用于项目和组成员更新的系统挂钩

系统挂钩可在GitLab中发生各种事件时触发请求,从而实现强大的自动化。由于社区的贡献,现在系统挂钩中支持项目和组成员身份更改。

S/MIME电子邮件签名

现在,可以使用S / MIME对GitLab发送的通知电子邮件进行签名,以提高实例级别的安全性。

Omnibus改进

现在通过在gitlab.rb中指定证书来支持对外部Postgres服务器的SSL身份验证。

GitLab 12.3包括Mattermost 5.14,它是开源的Slack替代品,其最新版本包括键盘可访问性改进,增强的Jira集成等。此版本还包括安全更新,建议从早期版本进行升级。

GitLab Runner 12.3

同时还发布了GitLab Runner 12.3,更改包括:

添加初始最佳实践文档

更新PowerShell ErrorActionPreference文档

无效的服务错误现在指定了确切的服务

使用PowerShell核心兼容命令创建目录

修复cmdlet失败时退出代码为零的情况

启用对长路径的支持

包含"短令牌"值的公开变量

设置帮助程序图像的默认PATH

要了解详细变化介绍,可以参考GitLab Runner变化文档。

性能提升

GitLab 12.3中的性能改进包括:

通过删除N + 1查询来加快列表问题并通过API合并请求

销毁父对象时更快地删除关联事件

迁移GetCommitSignatures RPC从Ruby到Go。

迁移GitLab Shell授权检查从Ruby到Go。

功能弃用

手动配置.gitlab-ci.yml安全功能标志不在支持

.gitlab-ci.yml配置文件中手动配置使用DEP_SCAN_DISABLE_REMOTE_CHECKS或DS_DISABLE_REMOTE_CHECKS标志变量被其删除,不再受支持。

如果使用供应商模板,则将通过变量和参数更改来使配置保持最新。

去除日期:2019年9月22日

gitlab-monitor工具重命名为gitlab-exporter

为了避免与更广泛的GitLab Monitor功能集混淆,gitlab-monitor工具已被重命名为gitlab-exporter。gitlab-exporter是Prometheus Web导出器,可让管理员管理GitLab实例,而GitLab Monitor功能可监视使用GitLab构建的应用程序。如果使用的是Omnibus,则必须更新gitlab.rb文件。

变更日期:2019年9月22日

将私人项目中的公共项目和子组更新为私人可见性

在GitLab 10.0中,进行了一项更改,用于明确私有项目中公共项目和子小组的可见性设置。由于应用了限制性最强的可见性设置,因此尝试在私有组中将项目或子组设置为公开组会导致可见性更改而被拒绝。

为防止现有项目和具有公共可见性的子组出现错误,私组中的所有公共项目和子组将在GitLab 12.5中从公共更新为私有。

希望对特定项目或子组的可见性设置较少的限制,则只需将其移出私有组。

变更日期:2019年11月22日

升级更新

Omnibus打包自建安装的实例,可以使用发行版的包管理器一键升级。比如CentOS下可以直接通过yum updata/install gitlab-ce自动完成升级过程。

举报
评论 0