4. 超图中的模式检查
7m

概览

清单团队有一些激动人心的更新准备发布到注册表中,但他们在发布到生产环境之前,需要对这些模式更改充满信心. 幸运的是,有一个 功能可以帮助实现:

在本课中,我们将

  • 了解不同类型的
  • 了解 如何融入更新 的整体流程中
  • 了解 流程

在本课程中,我们主要关注流程的概览。下一课将深入探讨如何运行每个检查的详情。

什么是架构检查?

架构检查是帮助确定由架构更新造成的潜在故障的一组预定义测试。它们会检查不兼容的 或破坏现有客户端 等问题。利用,我们能确保在实施到产品环境的时候架构更改不会导致问题。

我们有三种类型的:构建检查、检查和 linter 检查。

构建检查

构建检查验证一个的架构更改仍能够与中的其他良好组合。

Illustration of subgraph characters being checked for composition

例如,如果一个 添加了新类型,则构建检查将确定该添加与 的其余子图是否兼容。如果不兼容,我们需要调查错误并予以修复。

操作检查

操作检查验证架构更改不会破坏现有客户端发送给的任何

Illustration of Studio checking a schema against existing operations

例如,假设一个网络客户端定期发送 以检索其主页的数据。如果架构更改涉及向 需要的 添加一个 在该 中,如果它不包括该参数,它可能会损坏该客户端现有的 !操作检查有助于我们保护自身免受此潜在故障的影响,列出受影响的操作并允许团队解决这些操作。

解析器检查

解析器检查分析您提议的架构更改是否违反格式化规则和其他 最佳实践。 提供了一组默认规则,您可以对其进行配置以适应您的团队约定。您可以在 Apollo 文档 中看到规则的完整列表。

一些常见的架构约定包括:以 名称书写 camelCase,以 PascalCase 书写类型名称,以 SCREAMING_SNAKE_CASE 书写枚举。

如何运行架构检查

有两种主要方法可以使用 运行 。我们可以在终端中本地运行架构检查。我们还可以将架构检查集成到 CI 管道中,以便针对新的拉取请求自动运行。

要对 执行架构检查,我们使用 rover subgraph check 命令,并带有以下参数:

rover subgraph check <GRAPH_REF> \
--schema <SCHEMA_FILE_PATH> \
--name <SUBGRAPH_NAME>

备注: 图表引用(或 )告诉 有关 的信息。图表引用以图表的 ID 开头,后跟 @ 符号,然后再跟

此命令先运行构建检查,然后进行 检查,然后进行 linter 检查,最后输出命令行中的结果。还会向 报告结果,以便我们可以查看图表的检查页面中的结果。

超图故事中的架构检查

让我们重新审视一下我们的故事,放大到 发生的位置以及它们失败、通过或被主动覆盖时会发生什么。

在对 (无论是添加、移除还是更新定义)进行更改之后,我们首先想要使用 从本地运行

首先,将验证的架构更改是否仍能与中的其他成功组合。默认情况下,此检查针对current 运行,但我们还可以在 Studio 中选择任何已注册的图表变种。

如果构建检查成功,会在之后立即运行一个检查。这将验证架构的更改不会中断现有客户端发送到的任何操作。

如果其中一项检查失败,会提供一个指向 Studio检查页面的链接,其中包含有关错误详情的更多信息。

如果所有检查都成功,我们可以继续按照之前的流程进行操作:我们会使用发布到注册表。

Illustration of schema checks fitting into the story of a supergraph. See description in paragraphs above for full outline of the process.

当我们对发布架构更改感兴趣时,让我们花点时间了解的一个有用功能:启动

启动进程

通过发布到架构注册表,我们在中触发了一个启动

启动进行架构更新的整个过程.

启动尝试组合开始. 如果它失败, 那么我们将看到错误并且过程会在此结束. 否则, 将生成. 超图架构提供给上行链路, 将获取最新的架构.

我们已经成功完成对的架构更新!

Illustration of launches and how they fit into the story of a supergraph. See description in paragraphs above for full outline of the process.

那就是过程在我们中的样子.

实践

架构检查类型
架构检查识别来自建议的架构变更的潜在故障. 
 
 检查验证架构是否遵循 GraphQL 规范. 
 
 检查验证现有的客户端操作不会中断. 
 
 检查验证超图架构仍然能够成功组合.

将此框中的项目拖到上面的空白处

  • Field

  • Build

  • Subgraph

  • Operation

  • Deprecated

  • Linter

关于 GraphOS 中启动的下列哪些说法是正确的?

要点

  • 有助于在模式更新可能导致生产问题之前识别潜在故障。
  • 构建检查验证的模式更改仍可以与其他成功合成。
  • 检查验证模式的更改不会中断现有客户端向发送的任何操作。
  • Linter 检查验证模式是否遵循格式化规则和惯例。
  • 要运行模式检查,我们使用rover subgraph check命令。
  • 我们可以通过终端或 Studio 检查页面查看模式检查的结果。
  • 一个表示为任何进行模式更新的完整过程。它由发布到模式注册表时触发。

接下来

在接下来的三节课中,我们将了解在我们的开发工作流中的工作方式,以及如何在 CI/CD 过程中实现自动化。


分享您对本课程的问题和评论

您的反馈能帮助我们改进!如果您遇到困难或感到困惑,请告知我们,我们会帮助您解决问题。所有评论都是公开的,并且必须遵守 Apollo 行为准则。请注意,已解决或处理的评论可能会被删除。

您需要一个 GitHub 帐号才能在下面发表评论。没有帐号吗? 改在我们的 Odyssey 论坛中发表评论。