今日GitLab官方博客宣布发布一个新的版本12.2。该版本带来了设计管理,并增加对管道的有向无环图来帮助团队优化管道,改善协作,管理括项目相互依关系。更多详细功能请追随虫虫一起学习。
更快,更灵活的管道
CI管道的目标是自动化手动构建和测试任务,加速软件交付,同时减少错误和bug。对于某些用例,GitLabCI/CD管道有时候并不是很有效。GitLab12.2,中新增加有向无环图(DAG,DirectedAcyclicGraphs)用来创建和管理详细作业依赖性,而不是依赖于顺序阶段。这样可使CI管道可以更快,更高效。
对于更复杂的管道,需要在上一阶段完成之前在一个阶段中启动作业。例如,当项目在多阶段管道中生成Android和iOS应用程序时,你可能希望iOS部署在所有iOS测试通过后立即启动,而无需等待所有Android测试也通过。为了解决这样的用例并提供强大而灵活的工具来定义复杂的管道,新版本为.gitlab-ci.yml添加了needs:关键字,用于定义作业之间的关系。
needs关键字允许我们将一个作业指定为另一个作业的先决条件。成功完成先决条件作业后,下一阶段依赖它的作业会立即启动,而无需等待上一阶段中的其他作业完成。该功能在GitLab的内部是通过使用有向无环图(DAG)来实现的,当GitLab配置生成管道时,它使用复杂的规则集来确定作业的顺序,而不是简单地控制阶段所有作业。这样实现更高效的流水线执行,并为更高级的功能奠定基础。
设计管理(PREMIUM及以上)
软件开发是一项团队工作,目标是让每个人都能轻松做出贡献。在12.2中新增加了设计师角色和设计管理。
设计管理允许设计人员和开发人员通过留在设计中特定点的评论来更紧密地协作设计。该功能目前还只是源于GitLab内部设计师特定工作流程的开始,只有单一事实来源的问题的价值。通过提供一种结构化的方式来提供反馈并围绕设计进行讨论,希望广大前端设计人员参与该功能讨论和提供建议和做出贡献。设计管理目前还是alpha功能,随时可能变化,另外设计管理需要启用大文件存储(LFS)。
跨项目合并请求依赖(PREMIUM及以上)
大的系统通常跨多个项目,在项目代码之间具有相互依赖性,尤其代码合并更顺序很重要。GitLab新版本支持跨项目合并请求依赖关系,可以定义这些依赖关系,防止由于代码错误的合并顺序而导致的问题。更少的错误可以减少返工,并更快地部署你的更改。
GitLab版本12.2主要功能
按域限制组成员身份(PREMIUM及以上)
对于具有安全意识的组织,对项目的访问权限和组的控制非常重要,要确保只有合适的人员可以访问。新版中可以将组成员资格限制为仅使用与所选域名匹配的电子邮件地址的用户,如果你的域名为XXX,则只有使用XXX域名为后缀的电子邮件地址才能进入该组,这样防止项目所有者误添加非组织的用户,导致的权限泄露。
功能标志发布百分比(PREMIUM及以上)
现在可以选择发布百分作为功能标记的发布策略。发布百分比可以让每个环境和每个标志单独设置百分比。配置百分比卷展栏并启用该标志后,该功能将显示为已配置的百分比。这允许你执行受控的部署,监视目标环境的行为以确保结果符合预期。
功能标志的用户ID部署策略(PREMIUM及以上)
你现在可以选择用户ID作为功能标记的发布策略。用户ID策略允许你指定以逗号分隔的用户ID列表,然后仅为指定的用户切换功能标志。这可以让你针对特定群组或用户群的细分群体来定位测试功能。
合并请求中的安全批准(ULTIMATE及以上)
为了确保合并请求不会引入新漏洞的,新版本中需要特定人员审核并批准更改。这使使得团队更容易遵循你的合规性政策,并确保在未经明确批准的情况下,新漏洞不会无意中被引入代码库。
运行手动作业时指定变量
新版本中可以在启动手动作业时覆盖/提供正在运行的作业使用的新变量。这样可以更轻松地将可配置的自定义和/可重用作业设置为管道的一部分,并使实施管道作业时更容易进行故障排除。
Scoped环境变量功能迁移到Core免费版本
最初在GitLabPremium9.4中引入,将环境变量范围扩展到特定环境的能力现在已经迁移到GitLabCore。在配置不同变量(比如,访问不同的环境相关基础结构的不同私钥)以及在开发生命周期中使用多个环境时,此功能提供了极大的灵活性。NPMRegistry支持个人访问令牌身份验证(PREMIUM及以上)
GitLabNPMRegistry允许Javascript开发人员使用他们的GitLab实例构建,发布和版本化NPM包。NPM要求用户使用OAuth进行身份验证,在12.2之前,GitLab个人访问令牌不支持OAuth。用户被迫要生成他们自己的令牌(在GitLab之外),也无法使用双因素身份验证。
12.2新版本中开始支持使用GitLab个人访问令牌进行身份验证。GitLab个人访问令牌也可与双因素身份验证无缝工作,还可以设置范围和过期策略。只需使用个人访问令牌更新.nprmrc文件,然后开始将包发布并下载到GitLabNPMRegistry。
维护者创建子组
对于优先考虑敏捷性的大型组织而言,子组是一种有价值的工具,可以在不断扩展的情况下保持实例的有序性。现在为组所有者提供选项,以授予维护者创建子组的能力。启用此选项后,组中的维护人员将能够独立且快速地移动,而无需团队所有者的干预以保持其项目的有序性。
改进差异扩展
查看代码变化差异时,大多数未更改的行都是隐藏的,因此很容易快速浏览到更改的行。但有的时候需要更多的背景,来获取更多的信息。GitLab12.2中,隐藏线范围现在可以全部或逐步显示。之前隐藏的线条范围只能从范围的底部逐步显示。
设置代码所有者为组(PREMIUM及以上)
了解谁应该检查你的更改通常并不明显。将代码所有者分配给文件可以轻松实现。分配后,你可以在查看文件时查看代码所有者,并自动将其添加为合并请求批准者。
在GitLab12.2中,可以分配组以及GitLab用户名和电子邮件作为代码所有者。分配为组可防止代码所有者在团队更改时失去同步,尤其是在使用LDAP管理组成员身份时。
设计管理上传
设计人员和开发人员现在可以通过GitLab的设计管理上传,在问题中协作设计资产。设计可以上传到问题内的新区域,以便于跟踪和协作。
容器注册表的多选删除
保持容器注册整洁很有必要。随着时间的推移,容器镜像会累积并占用大量磁盘空间。而且太多标签可能会显著的减慢容器注册表管理页面的加载时间,使其难以使用。
此前,维护容器注册表有一些选项,可以使用批量标记删除API和垃圾回收来自动清理,但需要你编写和维护额外的脚本。也可以从管理页面手动删除镜像和标签,但是需要一个一个手动操作,非常繁琐耗时。
新版本中改进了容器注册表的UI,可以支持更快地进行手动操作。可以一次选择多个标签,选择镜像时候也会自动选择所有相关标签。这样可以更轻松地维护注册表,降低存储成本并保持页面性能稳定。
环境级别的Kubernetes名称空间
在多个环境中使用相同的Kubernetes集群可以为你带来很高的效率。例如,dev和stage都使用相同的集群,则管理开销会下降,因为你只需要管理一个集群,并且基础架构成本会降低,Kubernetes可以将两个环境中的pod安排到较小的节点集上。
此前GitLab不能很好地支持该用例,项目中的所有环境都部署在同一个命名空间中。如果你希望每个环境具有单独的权限(例如,希望允许工程部署到dev但不是阶段),则需要为每个环境使用单独的群集。GitLabKubernetes集成现在为每个项目环境使用专用命名空间,可以为每个项目环境单独精细配置权限,可以利用在多个环境中使用相同群集所带来的效率。
这允许Kubernetes用户在不同环境中重用相同的集群,而无需将所有环境部署到同一名称空间中。此外,云运营商现在能够为每个环境精细配置权限,以允许用户部署到某些但不是所有环境。
从K8sGitLab托管应用程序卸载相关组件
通过GitLabKubernetes集成安装的组件,现在可以通过集群页面通删除。这些组件包括Helm,CertManager和Knative。
禁用组或项目电子邮件通知
无论用户单独设置如何,所有者现在都可以在组或项目级别禁用电子邮件通知。
如果在组级别激活它,它将级联到父组中的所有子组和项目。
锁定文件以防止单个主机上的多个运行器实例
在单个主机上运行多个实例gitlab-runner可能会导致一些极其混乱且难以调试的行为。由于这不是预期用途,新版本引入了一个防止意外发生的文件锁定。
改进了
和:字符的变量掩码新版本变量屏蔽中增加了对两个额外字符的支持,GitLab自动隐藏更加精细,提高对不同类型的信息的屏蔽能力。
通过API读写用户的管理员备注(STARTER及以上)
为用户编写管理员注释可以成为大规模管理GitLab用户库的有用工具。通过UI编写备注很快就会变得难以管理。用户API新版中增加对读取和写入管理员备注功能,使实例管理员比以往更容易管理用户备注。
安全仪表板作为组的默认视图(ULTIMATE及以上)
现在可以将组安全仪表板设置为组视图的默认界面。值得注意的是,这是基于单个用户设置的,所以团队中的每个人都可以选择他们最感兴趣的视图。
该设置可以让
转载请注明:http://www.0431gb208.com/sjszyzl/1436.html