Dec 28, 2022 - 极狐GitLab  
15.7

极狐GitLab 15.7 发布极狐GitLab CLI 和基于浏览器的DAST的正式版本

极狐GitLab 15.7 版本,新功能包括GitLab CLI、基于浏览器的DAST的正式版本、对来自默认分支以外的GitOps部署的支持等等。

沿袭我们28日发布的传统,今天带来了极狐GitLab 15.7 版本,新功能包括GitLab CLI、基于浏览器的DAST的正式版本、对来自默认分支以外的GitOps部署的支持等等。

这些只是本次发布的版本中70多项改进中的几个亮点。请继续阅读,查看所有更新。

极狐GitLab 15.7 主要功能

GitLab CLI介绍

命令行是软件工程师工具包中最重要的工具之一,他们的大部分处理和工作都是围绕着这些工具进行的。他们会自定义他们的CLI,并在执行任务时,通过拓展程序来确保工作效率的最大话。CLI是开发人员完成工作所依赖的脚本和工作流程的核心工具。

为了支持更多已经在工作中使用命令行的开发者,我们采用了开源项目glab做为极狐GitLab CLI的基础。CLI使你不需要切换应用程序或标签,就能在极狐GitLab中将Git和你的代码结合起来。

GitLab CLI介绍

在个人命名空间内共享对代理的CI/CD访问

极狐GitLab代理为使用CI/CD来管理你的Kubernetes集群提供了一个更安全的解决方案。你可以通过共享代理连接的访问权限,在多个项目和组中使用一个代理。在以前的版本中,你不能与个人命名空间共享访问。这个版本增加了对个人命名空间的CI/CD连接共享的支持。你现在可以从你个人命名空间下的任何项目中使用一个代理。

在个人命名空间内共享对代理的CI/CD访问

支持来自默认分支以外的GitOps部署

在以前的版本中,Kubernetes的极狐GitLab代理只能用于存储在主分支上的manifest文件。这种模式有已知的局限性,例如,你不能将下一个版本的manifest存储在发布分支上,并在一个临时环境中进行测试。

现在,你可以在manifest项目配置的同时指定一个Git描述。除了主分支,你还可以从另一个分支、一个git标签或特定的提交中同步你的manifest文件。

支持来自默认分支以外的GitOps部署

用你的SSH密钥签署提交文件

现在签署提交文件变得更简单了。使用SSH密钥来签署提交,向别人证明一个经过验证的提交是由你撰写的。

以前签署提交的方法需要GPG密钥或X.509证书,这两种方法都不能用于登录极狐GitLab。现在增加了对SSH密钥的提交签名的支持,使得重新使用认证密钥对来签署提交文件成为可能。如果你已经用SSH密钥认证了极狐GitLab,那么在你的本地Git配置中添加三行代码,就可以对未来提交的所有内容进行签名。

默认情况下,在当前配置文件中的所有SSH密钥都可以用于认证和签署提交。如果要确保一个密钥只用于其中一个目的,请上传一个新的密钥。


极狐GitLab 私有化部署版本支持 Jira Cloud app

对于私有化部署的极狐GitLab,我们很高兴地宣布支持“Jira Cloud app”!

从这个版本开始,你可以把私有化部署的极狐GitLab实例链接到Jira云,并启用Jira开发面板。这项功能支持将智能提交、合并请求、分支、构建、部署和功能标志的更新同步回Jira开发面板。你可以将“GitLab for Jira Cloud”应用与你的基本Jira集成配对。

欲了解更多信息,请参阅连接GitLab for Jira Cloud应用程序的私有化部署实例

如果你使用Jira Server或Jira Data Center,你应该使用[Jira DVCS连接器]](https://docs.gitlab.com/ee/integration/jira/dvcs.html)。

极狐GitLab 私有化部署版本支持 Jira Cloud app

通过更新变量来重试手动作业

当运行手动作业时,用户可以指定作业中使用的额外CI/CD变量。然而,如果你想重试同一作业,总是不得不使用与第一次相同的变量。如果想用不同的变量运行作业,就必须运行一个新的流水线。

在这个版本中,我们增加了在每次运行手动作业时指定变量的能力,包括在重试作业时。这带来更大的灵活性和便利性,可以随心所欲地重试手动作业,每次运行都有不同的变量集。


基于浏览器的DAST一般可用(GA)

在经过极狐GitLab 13.2提供测试版后,我们在极狐GitLab 15.7正式发布基于浏览器的DAST分析器。

这个新的分析器是完全内部开发的,利用浏览器来验证、抓取和扫描网络应用的漏洞。传统的DAST分析器使用基于代理的方法进行扫描,拦截请求并分析它们的漏洞。正因为如此,在利用现代JavaScript框架或单页面应用的应用程序上运行DAST扫描一直非常困难。通常情况下,不能得到所期望的对应用程序的全面覆盖。通过基于浏览器的方法,我们能够直接在浏览器中执行JavaScript,就像用户一样,以确保你的整个应用程序被扫描出漏洞。使用新的分析器,我们能够覆盖一个应用程序中的更多页面,并减少报告的误报数量。

目前,我们不会将DAST.gitlab-ci.yml模板中使用的默认分析器切换到基于浏览器的分析器,允许用户手动进行切换并自行评估。但是,我们计划在未来的某个时间点将该分析器作为所有DAST扫描的默认工具。我们鼓励大家迁移到新的分析器,这样当默认切换发生时,将不会对你的任何DAST扫描产生影响。你可以通过在你的.gitlab-ci.yml配置中将 DAST_BROWSER_SCAN 设置为 true 来启用基于浏览器的分析器。请注意,并不是所有传统的DAST分析器变量都能用于这个新的分析器。在你的 .gitlab-ci.yml 文件中配置的任何不支持的传统DAST变量将在扫描运行期间被忽略。

我们将持续改进这个分析器,并计划开发许多基于浏览器的方法为我们提供的新功能。你可以通过查看我们基于浏览器的DAST史诗和它的问题来了解我们的计划。

基于浏览器的DAST一般可用(GA)

从一个下拉列表中选择预定义的CI/CD变量值

以前,你可以在 “运行流水线 “页面中预先填入CI/CD变量,并设定一个特定值。不幸的是,如果你对变量的值有多种选择,你仍然不得不手动输入你想要的选项。手动输入是一个容易出错的过程,因为很容易输入一个无效的值,或者只是输入错误。

在这个版本中,我们增加了设置数值列表的功能,这些数值会在 “运行流水线 “页面的下拉列表中显示。现在,当手动运行流水线时,你可以定义每个CI/CD变量的确切有效值列表,在使用手动触发的流水线时,大大简化了你的工作流程。

从一个下拉列表中选择预定义的CI/CD变量值

支持CI/CD变量中的$字符

在引入另一个变量的时候,极狐GitLab试图将变量展开。因此,你不能有一个以$作为字符串一部分的值,除非它被转义,这可能会引起混淆。

在这个版本中,我们为项目、组和实例的CI/CD变量引入了一个新设置。你现在可以切换极狐GitLab是否将CI/CD变量解释为一个原始字符串,或者将$视为另一个应被扩展的变量的开头。

支持CI/CD变量中的$字符

极狐GitLab 15.7 其他功能

Webhook推送事件支持正则表达式

对于推送事件触发的webhooks,你现在可以定义一个与你的分支策略相一致的regex模式。例如,你可以使用^(feature hotfix)/来允许任何推送到feature或hotfix分支的事件被触发。
Webhook推送事件支持正则表达式

取消从GitHub导入项目

当把GitHub项目导入到极狐GitLab时,你无法取消正在进行的导入。

现在你可以取消从GitHub导入的待定或正在进行的项目。如果导入已经开始,导入的文件将被保留。

屏蔽webhook URLs的敏感部分

当你创建webhooks来与外部服务集成,并为事件驱动的工作流程接收极狐GitLab数据时,你可能不得不提供包含敏感数据的回调URL。有了这个功能,你现在可以在配置webhooks时屏蔽个人令牌、密码、用户名、域名和任何其他敏感数据。

屏蔽webhook URLs的敏感部分

群组拥有者可以使用API列出用户的电子邮件地址

群组拥有者现在可以使用API来访问由该群组提供的任何用户的电子邮件地址。当用户的账户由SCIM创建时,或通过极狐GitLab上群组的SAML SSO首次登录时,该用户就由该群组提供了。以前,只有在用户的电子邮件地址是公开的情况下,群组所有者才能访问这些信息。

通过应用程序设置禁用个人访问令牌

你现在可以通过一个新的应用程序设置在实例级别上禁用个人访问令牌(PAT)。以前,没有禁用PAT的选项。

在议题和合并请求侧边栏中添加花费的时间

在15.7之前,快速行动是添加在议题或合并请求上花费的时间的唯一方法。虽然这种方法可行,但对所有用户来说并不直观。为了使记录时间更有效率,现在你可以直接从议题或合并请求的侧边栏添加时间条目。

在议题和合并请求侧边栏中添加花费的时间

在内容编辑器中支持HTML注释

当你在wiki页面或博客文章上进行协作时,你经常会遇到不打算呈现的内联HTML注释。以前,内容编辑器会忽略这些注释以反映实际内容的样子。然而,问题是,在内容编辑器中进行编辑可能会意外地从文件中删除这些注释。

在这个版本中,你可以在线插入新的HTML注释并编辑页面上已有的注释。这些评论的出现方式表明它们不会被渲染。这个功能可以帮助你管理更长的wiki页面,也是在未来版本中编辑议题描述和评论的重要一步。

在内容编辑器中支持HTML注释

工作执行状态徽章

管理员>Runner和{群组_名称}>CI/CD>Runners中的新作业执行状态徽章显示了一个一目了然的指标,以确定特定运行器是否有活动作业。这个迭代的目的是简化对影响CI构建结果时间的运行器队列问题的故障排除。

工作执行状态徽章

用 `workflow:name` 为流水线添加自定义名称

对于一些项目来说,同一个流水线可以被配置为针对不同的变量或条件而运行,为成功的流水线创造非常不同的结果。你可能很难确定该流水线的哪个版本运行,因为没有关于该特定运行的输入的指示。虽然像预定和API这样的标签有帮助,但有时仍然很难识别具体的流水线。

On-demand DAST API GraphQL scans

从极狐GitLab 15.7开始,按需配置的DAST API站点配置文件支持将GraphQL APIs作为扫描目标。在选择API作为站点类型后,你现在可以选择GraphQL扫描方法并指定GraphQL端点路径。自从我们引入dast-api.gitlab-ci.yml模板以来,这种能力已经可以用于CI/CD流水线中的DAST API扫描。随着从我们传统的DAST API分析器切换到我们新的按需扫描的分析器,我们能够将这个功能添加到我们的按需DAST API配置文件。

对npm lockfileVersion 3的依赖性扫描支持

当lockfileVersion: 3被设置被设置时,极狐GitLab依赖扫描现在支持解析和扫描存储在npm lockfiles中的依赖。

静态分析器更新

极狐GitLab静态分析包括许多安全分析器,极狐GitLab静态分析团队积极管理、维护和更新。以下是15.7版本里程碑期间发布的分析器更新。这些更新带来了额外的覆盖面、错误修复和改进。

  • 基于Brakeman的分析器更新到5.3.1版本。更多细节见CHANGELOG。
  • 基于CodeClimate的分析器更新到了0.87.3版本。我们还禁用了一个检查可用更新的网络调用。更多细节请参见 CHANGELOG。
  • 基于 Gitleaks 的分析器已更新,增加了对 systemd 机器 ID 的检测规则,并将 go.mod 和 go.sum 文件排除在扫描之外。更多详情请参见 CHANGELOG。
  • 基于KICS的分析器更新至1.6.5版本。更多细节请见CHANGELOG。该版本增加了新的规则,提高了性能,并修复了某些Terraform配置可能导致分析器崩溃的错误。
  • 基于Kubesec的分析器已更新,修复了有多个对象的清单的一个错误。详情见CHANGELOG。
  • 基于NodeJSScan的分析器更新至0.3.4版本。更多详情请见CHANGELOG。
  • 基于Semgrep的分析器已更新,以提高内置Python规则的性能,并支持自动解决漏洞。更多详情请参见 CHANGELOG。
  • 更新了多个分析器,使其包括git,这样分析器就可以清除未提交到仓库的文件中的漏洞。

如果你包括极狐GitLab管理的SAST模板(SAST.gitlab-ci.yml),你不需要做任何事情来接收这些更新。然而,如果你覆盖或定制自己的CI/CD模板,你需要更新你的CI/CD配置。

为了保持在任何分析器的特定版本上,你可以钉在一个分析器的次要版本上。钉在以前的版本上会阻止你接收自动分析器的更新,并需要你在CI/CD模板中手动撞上你的分析器版本。

关于以前的变化,请看上个月的更新。

在部署API中增加 `finished_after` 过滤器

有了这个更新,你可以按完成前或完成后的日期过滤项目中的部署列表,以有效地搜索工作流程中的相关部署。以前,只允许按更新的日期进行过滤。

在GitOps的配置中默认使用当前项目

当你安装代理时,你通常创建一个没有配置文件的代理。然而,代理的许多功能,包括基于拉取的部署,需要一个有效的配置。

在以前的版本中,基于拉取的部署需要你指定存放清单文件的项目。如果你有多个项目,你需要为每个项目定制一个配置文件。现在,你可以省略项目ID,代理将使用当前项目中的清单。如果你的项目使用相同的惯例来存储其清单,你可以使用相同的配置文件在每个项目中设置一个代理。

Geo复制的依赖性代理

Geo现在复制了依赖代理拉通缓存,这意味着在故障转移后,新推广的站点可以获得一个填充的镜像缓存。你现在可以放心地执行定期故障切换,避免触及Docker Hub的速率限制,从而影响到推广站点的运行能力。这将有助于为终端用户提供无缝的故障转移体验。

为群组内的新项目设置默认的合规框架

在以前的极狐GitLab版本中,你可以为一个群组创建一个合规性框架,但需要将其单独应用于每个新项目。

现在,你可以将合规性框架设置为默认框架,以适用于在群组中创建的新项目。现有的项目不会自动应用默认框架。

扫描执行策略支持定义runner标签

现在可以在极狐GitLab扫描执行策略中定义标签。这使你可以灵活地指定哪些Runners将被用来执行你的扫描执行策略作业。

扫描执行策略支持定义runner标签

极狐GitLab chart 改进

云原生极狐GitLab在即将发布的版本中用极狐GitLab-base取代了alpine-certificates的行为。为了防止Alpine和Debian之间的不同行为,并提高容器之间的一致性,我们将在极狐GitLab-base上构建模式。这意味着运行的服务容器将共享一个共同的根文件层,这为Pod实例化时间提供了一个效率提升。这对用户的影响是,我们将改变使用的镜像名称和标签。我们将在短期内维持一个镜像标签。

单点登录用户可以选择保持登录状态

使用单点登录的极狐GitLab用户经常被登出。现在,这些用户可以选择记住我的复选框,并在两周内保持在极狐GitLab上登录。当访问群组资源时,用户每隔24小时就会被重定向到他们的身份提供者(IdP)以验证会话。根据他们的IdP的设置,用户可能不得不在这个时候重新认证到IdP。

单点登录用户可以选择保持登录状态

启用管理模式时记录审计事件

现在,当管理员启用管理模式时,极狐GitLab会记录一个审计事件。这对安全相关的审计很有帮助,因为管理模式允许用户提升权限并改变实例级别的设置。

用户不能设置一个已知的弱密码

当用户设置他们的密码时,现在会根据已知的弱密码列表检查该密码。如果该密码与列表中的条目相匹配,用户必须选择一个不同的密码。这有助于用户选择更安全的极狐GitLab密码。

自动禁用失败的webhooks

为了保护极狐GitLab和整个系统的用户免受任何潜在的滥用或误用,我们已经实施了一个功能来禁用持续失败的Webhooks。

  • 返回响应代码在5xx范围内的Webhooks被理解为间歇性失败并被暂时禁用。这些webhooks最初被禁用1分钟,每次重试都会延长,最长可达24小时。
  • 以4xx错误失败的Webhooks被永久禁用。

所有项目的所有者和维护者都会在应用程序中得到提醒,以调查和重新启用任何失败的网络钩子。

这项功能现在可以在极狐GitLab SaaS和自我管理的实例中使用,同时还包括处理冷启动等功能的增强。

自动禁用失败的webhooks

在Markdown中改变图片的尺寸

在这个版本之前,没有任何控件可以改变在Markdown文本区域内呈现的图片的大小。这常常导致不方便的图片,而且无法控制它们在描述和评论中占据多少空间。现在,你可以通过在图片引用中附加{width=x height=y}属性来设置图片在Markdown中直接呈现的宽度和高度。尺寸可以用像素或百分比来指定。

合并请求描述模板中的变量

当创建一个合并请求时,你的组织可以定义合并请求模板。这些模板有助于确保某些信息的填写,为任务提供检查清单,等等。然而,它们并不包含任何可能对合并请求很重要的Git级信息。这使得以标准化和可重复的方式提供提交信息的细节、分支信息、甚至作者信息变得很有挑战性。

合并请求描述模板现在支持变量。使用这些变量可以在合并请求中建立业务逻辑和重要的Git信息,如提交和作者信息。模板变量确保传入的合并请求总是包括你的项目所需的信息,而不需要贡献者进行繁琐的手工操作。

合并请求描述模板中的变量

将项目或群组CI/CD变量的数量限制在200个以内

如果你的实例有项目或群组维护者添加了太多的CI/CD变量,它可能会使用大量的资源来处理每个流水线的所有变量。为了确保你的流水线继续有效运行,我们为每个群组或项目增加了200个变量的限制。

已经拥有超过200个CI/CD变量的项目和群组可以像以前一样继续运行流水线,但将不能再增加任何变量。我们建议将每个群组或项目的CI/CD变量数量减少到200个以下以获得最佳性能。

将项目或群组CI/CD变量的数量限制在200个以内

极狐GitLab Runner 15.7

我们今天还发布了极狐GitLab Runner 15.7! 极狐GitLab Runner是一个轻量级、高扩展性的代理,它可以运行你的CI/CD工作并将结果发回给极狐GitLab实例。极狐GitLab Runner与极狐GitLab CI/CD协同工作,后者是极狐GitLab附带的开源持续集成服务。

新内容:

错误修复:

所有更改的列表在极狐GitLab Runner CHANGELOG中。

改进了对极狐GitLab软件包注册中心的访问控制

当你配置你的项目时,你可以选择可见性级别,启用/禁用项目功能及其权限。例如,你可以限制项目成员对仓库、议题、合并请求等的访问。虽然你可以像这样控制几个功能,但你只能打开和关闭极狐GitLab包注册表。你不能将包注册表的可见性设置为只对项目成员开放或对每个人都有权限。这个问题使你很难创建一个中央注册表,其中包含经过批准、审核的软件包,以便在整个组织中分发。作为一种变通方法,你不得不把每个人都加入到项目中,这带来了安全风险。

为了帮助你提高工作效率,我们已经为包注册表增加了特定功能的控制。现在,项目管理员和所有者对他们如何共享包注册表有了更多的灵活性和控制。默认情况下,包注册表的可见性只设置为项目成员。关于查看、下载或更新软件包需要哪些权限的更多信息,请参考软件包注册表可见性权限文档。

在代码质量变化视图中看到多个发现

我们改进了极狐GitLab代码质量,使你在审查变更时更容易看到和理解合并请求的发现。现在,合并请求的 “变更 “视图支持在每行显示一个以上的发现,而且你现在可以展开发现来查看它们,而不需要继续在它们上面徘徊。

这一变化现在已经在极狐GitLab SaaS上激活。我们计划在极狐GitLab 15.8中为自我管理的实例默认启用该功能标志。

在代码质量变化视图中看到多个发现

看到每条流水线的多个代码质量扫描报告

极狐GitLab代码质量包括一个MR小工具、一个流水线报告和MR差异注释,以帮助你发现和修复代码中的问题。许多工具,包括代码扫描器和技术文档的翻译器,都可以用Code Quality的开放报告格式输出结果。

以前,你只能在流水线报告和MR diff注释中看到单一扫描的结果。这使得在你的流水线中添加自定义扫描工具变得更加困难。

现在,所有的代码质量视图都会显示流水线中保存的所有报告的结果。

这项新功能已在极狐GitLab 15.6 SaaS中启用。在极狐GitLab 15.7和更新版本中,该功能标志现在也默认启用了自我管理的实例。

在文件夹内搜索环境

在这个版本中,我们改进了对搜索环境的支持。以前,如果一个环境在一个文件夹中,你需要输入它的完整名称。现在,搜索栏会匹配环境的名称,即使它们是嵌套的。

用于环境和部署权限的GraphQL API

我们已经通过GraphQL公开了环境和部署的用户权限。现在,你可以通过API为环境或部署获取用户权限,如更新或销毁等操作。

将隧道的访问限制在特定环境中

你可以使用Kubernetes的极狐GitLab代理提供的CI/CD隧道,将你现有的CI/CD工作流程与你的Kubernetes集群整合起来。为了节省资源和简化维护,你可以与多个群组和项目共享一个隧道。

在以前的版本中,如果一个项目有一个CI/CD隧道,你可以从所有分支和所有环境中使用它。然而,你不能限制对隧道的访问。现在,你可以把对隧道的访问限制在某些环境中,或限制在符合通配符模式的环境中。

Omnibus 改进

  • 极狐GitLab 15.7包括Mattermost 7.5,在调用中的消息线程,新的Board模板,Board按文本属性过滤,Board指标,Channel用户最后活动等。这个版本还包括安全更新,建议从早期版本升级。
  • 极狐GitLab 15.6包括openSUSE Leap 15.4的软件包。

在全局搜索栏中为用户提供自动完成建议

在搜索栏,你现在可以看到用户的自动完成建议。当你选择一个用户时,他们的资料页面会出现。

在全局搜索栏中为用户提供自动完成建议

改进了过滤全局搜索结果的设计

以前,全局搜索范围以标签形式出现在搜索栏下面。这种设计不是很直观,而且限制了可用的过滤选项的数量。

在这个版本中,全局搜索范围现在出现在左侧的边栏上。新的设计使过滤结果更容易,并允许根据内容类型提供额外的过滤选项。有了这一改进,全局搜索结果中的每一页都有一个左侧边栏和一个一致的布局。

改进了过滤全局搜索结果的设计

运行Geo健康检查时指定自定义NTP服务器

为了使Geo正常运作,Geo站点之间的时钟必须同步。在进行Geo健康检查时,你现在可以指定一个自定义的NTP服务器来覆盖pool.ntp.org。如果你使用的是自己的时间服务器,或者你在离线环境中设置了Geo,而它又无法到达默认的NTP服务器,那么这一变化可以让你验证你的时钟。

60天免费试用极狐GitLab专业版

极狐GitLab不仅是源代码管理或CI/CD工具,它是一个覆盖完整软件开发生命周期和DevOps的开放式一体化平台。

企业版试用