配置模式检查
定义模式如何应用于模式变更
在您启用模式检查为您的图表,您可以自定义其行为以适应您的使用情况。例如,您可以:
- 排除过去操作,例如仅用于测试的客户所执行的操作
- 排除相对不频繁执行的操作
- 检查模式更改与多个图表变体
- 忽略默认值更改
- 在操作检查运行针对零操作时忽略潜在破坏性更改
使用GraphOS Studio(推荐)
在 GraphOS Studio中,您可以配置应用于每个执行模式检查的默认规则。您可以在您变体页面的配置标签中定义这些规则:变体的检查
配置选项
- 时间范围:包括在这个范围内执行的所有不同操作。默认值为7天(“在过去一周内”)。
- 操作数量阈值:排除在指定时间范围内执行次数少于这个数字的所有操作。
- 包含的变体:包括针对您图中的每个所选变体的所有不同操作。默认值为“基本变体”(即,正在对其进行模式检查的任何变体)。
- 排除客户端:排除由特定客户端执行的所有操作,例如专用于开发和测试的客户端。
- 排除操作:排除特定的命名操作。
- 忽略条件:忽略某些类型的模式更改。 了解更多。
使用Rover CLI
您可以通过提供选项来自定义单个运行的模式检查Rover CLI。如果您还为模式检查配置了默认规则,您提供的任何命令行选项都优先于这些规则。
验证周期
您可以使用--validation-period
选项来指定Studio在确定过去操作与您模式更改的兼容性时应该回溯多长时间(默认情况下,命令使用过去7天的操作)。
此命令将模式更改与过去两周的操作进行检查:
rover subgraph check docs-example-graph@current --name products --schema ./schema.graphql --validation-period="2 weeks"
有效的时间长度的表示可以是以下组合月份
、周
、天
、分
和秒
:
1个月2周
525600分
ⓘ 注意
如果指定的--validation-period
超过了组织operation保留期,则subgraph check
命令会报错。
阈值值
您可以为阈值值设置忽略历史操作(这些操作相对较少)提供阈值值。
例如,您可能想停止对旧版本客户端的支持,该客户端使用已弃用的字段。您可以设置阈值值以确定使用旧版客户端的用户数量相对较少时的时间点,从而减少停止支持的影响。
使用以下标志提供阈值值
--query-count-threshold
- 仅对在指定时间段内至少执行了指定次数的操作检查您的模式。--query-percentage-threshold
- 仅对在指定时间段内占所有操作中指定百分比的图形操作检查您的模式。例如,指定3
将此阈值设置为3%。
ⓘ 注意
您可以为这两个标志提供值。如果您这样做,操作必须至少达到这两个阈值,才能将其包括在模式检查中。
以下是一个使用阈值值运行rover subgraph check
的示例:
rover subgraph check docs-example-graph@current \# Path to schema file--schema ./schema.graphql# Name of subgraph with schema updates--name products# Check the schema against operations that have run in the last 5 days--validation-period="5 days" \# Only check against operations that have run at least 5 times during the 5-day duration--query-count-threshold=5 \# Only check against operations that account for at least 3% of total operation volume--query-percentage-threshold=3
如需请求其他过滤或阈值机制,请在Rover仓库联系我们。
检查多个环境
您可能想要将模式更改与多个环境进行对比,例如生产环境、预发布环境和Beta环境。这些环境中的每个可能都有一个略微不同的模式以支持实验性或有活跃开发的功能。在GraphOS中,这些架构被表示为单一图的变体。
您在提供给图引用的rover subgraph check中以指定要检查的哪个变体:
rover subgraph check docs-example-graph@staging --name products --schema ./schema.graphql
以下为图引用docs-example-graph@staging
指定了docs-example-graph
图的staging
变体。
要检查多个变体,请在每个变体上调用一次rover subgraph check
。这样做会得到类似于以下的状态检查: