10. 发布到 GraphOS
5m

概述

我们即将完成!为了使我们的开发工作流程完整,我们需要考虑我们对.

在本课中,我们将

  • 使用 将架构发布到架构注册表
  • 检查 在 Studio 中的结果

协调架构和代码更改

到目前为止,我们只讨论了 架构 更改以及它们应该如何发布到 . 但我们不能忘记我们的 代码库 更改:我们的 , listingsreviews! 这些包括我们对数据提取器方法和架构文件本身所做的更改。我们需要将我们本地的更改部署到生产环境。

因为我们只在教程环境中使用本地 ,所以我们不需要 实际 部署任何更改。您可以在 这篇 Apollo 技术说明 中了解有关在生产环境中协调架构和代码更改的更多信息。

发布架构更改

我们 确实 需要将我们的 更改发布到 .

为了发布我们的 ,我们将再次使用 rover subgraph publish 命令。这次我们不需要包含路由 URL,因为它没有改变。

rover subgraph publish <APOLLO_GRAPH_REF> \
--schema <SCHEMA_FILE_PATH> \
--name <SUBGRAPH_NAME>

注意:请记住,您可以在 Studio 中,图的 README 页面的顶部或您的 .env 文件中找到您的

让我们来做吧!

发布 listings

请记住,listings 首先:我们要确保注册表知道我们已将 Listing 变为 类型。

在打开到 listings 目录的终端窗口中,粘贴 rover subgraph publish 命令。确保将参数替换为您自己的值。

listings
rover subgraph publish <APOLLO_GRAPH_REF> \
--schema src/main/resources/schema/schema.graphqls \
--name listings

您需要确认我们正在发布一个 localhost URL。如果一切顺利,我们应该看到终端输出,其中包含一条消息,确认 已发布,并且 已更新!

检查和发布 reviews

接下来是 reviews 。上次我们对 reviews 进行了检查,我们看到了有关将 Listing 变为 的错误。既然我们已经发布了 listings ,让我们重复检查我们的 reviews ,看看那个错误是否消失了。

打开一个终端到 reviews ,并运行以下命令。(请务必替换您自己的 !)

reviews
rover subgraph check <APOLLO_GRAPH_REF> \
--schema src/main/resources/schema/schema.graphqls \
--name reviews

我们的输出应该显示一切正常——我们的更改是安全的,并且那个讨厌的错误无处可寻。

Checking the proposed schema for subgraph reviews against Airlock@current
There were no changes detected in the composed API schema, but the core schema was modified.
Operation Check [PASSED]:
Compared 2 schema changes against 2 operations.
┌────────┬─────────────┬─────────────────────────────────────────────┐
│ Change │ Code │ Description │
├────────┼─────────────┼─────────────────────────────────────────────┤
│ PASS │ FIELD_ADDED │ type `Listing`: field `reviews` added │
├────────┼─────────────┼─────────────────────────────────────────────┤
│ PASS │ FIELD_ADDED │ type `Listing`: field `overallRating` added │
└────────┴─────────────┴─────────────────────────────────────────────┘
View operation check details at: https://studio.apollographql.com/graph/[LINK_TO_YOUR_CHECK]

现在让我们发布这些更改。在同一个终端中,运行 rover subgraph publish 命令,用于您的 reviews

reviews
rover subgraph publish <APOLLO_GRAPH_REF> \
--schema src/main/resources/schema/schema.graphqls \
--name reviews

检查 Studio 中的启动

架构发布到注册表后会发生什么?一个 开始了!让我们在 Studio 中看看这个过程。

导航到 启动 页面。点击列表中的最新

https://studio.apollographql.com

The Studio Launches page showing the results of the latest launch

我们可以看到,此特定 启动顺序 部分遵循我们之前讨论过的步骤:

  • 构建完成 指的是构建 (也称为 )的过程。
  • 架构已发布 指的是 可供 Apollo Uplink 使用。
  • 启动完成 不言而喻!我们的启动成功完成! 🎉

在右侧,我们还可以通过点击 超级图架构 按钮来查看 输出。

https://studio.apollographql.com

The Studio Launches page, highlighting the Supergraph Schema button

这向我们展示了架构更改的摘要。

https://studio.apollographql.com

The Studio Launches page showing the supergraph schema button and a summary of changes

如果一切看起来都很好,我们应该能够 新的 reviewsoverallRating ,用于特定列表。

🚀 生产环境中的功能!

首先,确保您已停止 rover dev 进程,并启动了 。请记住,我们下载的路由器二进制文件连接到 ——所以我们准备测试我们发布的更改“在生产环境中”!(好吧,在本次教程中,我们尽可能接近生产环境!)

在一个新的终端窗口中,导航到 router 文件夹,然后运行:

router
APOLLO_KEY=<APOLLO_KEY> APOLLO_GRAPH_REF=<APOLLO_GRAPH_REF> ./router --config router-config.yaml

注意:请记住,您可以在 .env 文件中找到 APOLLO_KEYAPOLLO_GRAPH_REF 的值。

接下来,让我们转到资源管理器(这一次在 Studio 中,而不是沙盒中!)并运行那个梦想

query GetListingAndReviews {
listing(id: "listing-1") {
title
description
numOfBeds
amenities {
name
category
}
overallRating
reviews {
id
text
}
}
}

您应该会看到数据返回!我们的启动成功了! 🎉

https://studio.apollographql.com

Explorer - returning data from the dream query

任务!

关键要点

  • 一个 发布 代表将模式更新到 的完整流程。一个 在模式发布到 时触发。
  • 要发布一个 ,请使用 rover subgraph publish 命令。
  • 我们可以通过 Studio 发布页面检查 的结果。

接下来

你已经做到了!虽然我们从一个简单的 开始,但我们使用了联邦和 的原则,将一个全新的 API 添加到其中。使用实体,我们将列表连接到他们的评论,并推出了一个新功能,可以帮助客人决定下次预订在哪里。我们使用 rover dev 来确保这些新的和令人兴奋的变化是安全的。

感谢您继续与我们一起踏上 和 DGS 的旅程。在 使用 Java & DGS 在子图中进行缓存 中进一步提升您 的性能,或者查看 提供的其他课程。最重要的是,继续构建您的

上一步

分享您关于本课的疑问和评论

本课程目前正在

测试版
.您的反馈有助于我们改进!如果您遇到困难或困惑,请告诉我们,我们会帮助您。所有评论都是公开的,必须遵循 Apollo 行为准则。请注意,已解决或已处理的评论可能会被删除。

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