加入我们,于 10 月 8-10 日在纽约市,了解最新关于 GraphQL Federation 和 API 平台工程的技巧、趋势和新闻。加入我们,参加 2024 年纽约市的 GraphQL 会议
文档
免费开始

将模式发布到 GraphOS

使用 Rover CLI 将模式作为 CI/CD 管道的一部分发布


每次您对一个's schema, you should publish those changes to using the Rover CLI or the Platform API. Doing so ensures that Apollo always has an up-to-date understanding of your graph.

This page covers how to publish different kinds of schemas using the . Consult the Platform API reference to learn how to use the API for publication.

💡 提示

schema proposals集成到 schema checks 中,以确保您的组织只发布经过批准的更改。 了解更多。

先决条件

  1. 安装 Rover CLI.
  2. 验证Rover 使用 .

发布子图模式

GraphOS中的每个都包含一个或多个子图。 这些是您的组织中由驱动的独立微服务。

您需要分别将每个的架构发布到Apollo,使用rover subgraph publish:

示例命令
rover subgraph publish --schema ./products.graphql --name products docs-example-graph@current --routing-url https://products.example.com

rover subgraph publish
rover subgraph publish
rover subgraph publish
Products
subgraph
Reviews
subgraph
Inventory
subgraph
GraphOS

要将发布到Apollo:

  1. 确定要发布的中的子图名称。您可以从GraphOS Studio的“子图”页面查看现有子图的名称。

  2. 如果您是首次发布,还需要获取该路由URL。这是您的与子图通信时使用的URL。

    • 如果GraphOS已经知道您的子图的路由URL,您无需提供此值,除非您要更改它。
  3. 运行rover subgraph publish命令,并以以下方式之一提供您的'子图'模式的架构:

    # Provide a local .graphql file path
    rover subgraph publish my-graph@my-variant --name locations --routing-url https://flyby-locations-sub.herokuapp.com/ --schema ./schema.graphql
    # Provide an introspection result via stdin
    rover subgraph introspect https://127.0.0.1:4000 | rover subgraph publish my-graph@my-variant --name locations --routing-url https://flyby-locations-sub.herokuapp.com/ --schema -

无论何时您发布子图模式,GraphOS都会尝试将您的子图模式架构的所有最新版本组合成单个,供路由器使用:

(Composition succeeds)
Subgraph
schema
A
Subgraph
schema
B
Subgraph
schema
C
🛠
Composition
Supergraph schema
(A + B + C + routing machinery)

如果这个成功,则路由器会更新结果。这使客户端能够查询任何新添加的字段,并防止它们查询任何已删除的字段。

您可以使用rover supergraph fetch命令手动获取您路由器的最新超级图模式,或者从中的超级图'架构' > SDL'页面获取。

发布单行图架构

注意:

这些说明仅适用于单行图,不建议使用。

  1. 决定您如何向提供您的服务器架构。您可以选择:

    • 在本地机器上保存的.gql.graphql文件,或
    • 在运行的服务器上执行查询以获取模式
  2. 运行rover graph publish命令,以以下方式之一提供您的架构:

    # Provide a local .graphql file path
    rover graph publish my-graph@my-variant --schema ./schema.graphql
    # Provide an introspection result via stdin
    rover graph introspect https://127.0.0.1:4000 | rover graph publish my-graph@my-variant --schema -

    如上图所示,您提供给rover graph publish的-first位置参数是一个图形引用,这是一个字符串,用于指定GraphOS中某个特定图形的特定变体。

使用持续交付发布

要充分利用GraphOS,您应立即在生产架构中发布每个更新。因此,架构发布应成为您持续交付流程的一部分。

以下是在CircleCI中进行架构发布的示例持续交付配置

version: 2
jobs:
build:
docker:
- image: circleci/node:8
steps:
- checkout
- run: npm install
- run:
name: Install Rover
command: |
# Download and install Rover
# This is pinned to a specific version for predictability in CI
curl -sSL https://rover.apollo.dev/nix/v0.8.1 | sh
# This allows the PATH changes to persist to the next `run` step
echo 'export PATH=$HOME/.rover/bin:$PATH' >> $BASH_ENV
# Start the GraphQL server. If a different command is used to
# start the server, use it in place of `npm start` here.
- run:
name: Starting server
command: npm start
background: true
# make sure the server has enough time to start up before running
# commands against it
- run: sleep 5
# When running on the 'main' branch, push the latest version
# of the schema to GraphOS.
- run: |
if [ "${CIRCLE_BRANCH}" == "main" ]; then
rover subgraph publish my-graph@my-variant \
--schema ./schema.graphql \
--name locations \
--routing-url https://products.example.com
fi
上一页
实现建议
下一页
发布
评分文章评分在GitHub上编辑编辑论坛Discord

©2024Apollo Graph Inc.,即Apollo GraphQL。

隐私政策

公司