7. 发布和部署
5m

概述

现在我们已经更新了我们的代码库,是时候部署代码、发布我们的模式和我们的

在此课程中,我们将

  • 学习如何自动将更改部署到暂存环境和生产环境
  • 学习如何将暂存环境中的部署步骤应用到生产环境中
  • 了解如何将架构更改发布到暂存 作为 CD 管道的一部分

在 CD 工作流中发布到架构注册表

让我们回顾原始 CD 工作流。

Diagram of the original CD workflow. See detailed image description below.

最初,Airlock 仅跟踪图谱的生产版本(current )。在课程前期,我们向 中添加了一个 staging ,以对应 的暂存环境。务必更新我们的 CD 工作流!

部署到暂存环境后,我们将发布 的变更至 staging ,这会触发 过程。此流程将全部由两个单独的 GitHub Actions 自动完成,我们将在下一部分中详细了解这两个 Actions。

下图显示了我们更新后的 CD 工作流,用于暂存部署。我们将为生成环境部署提供一个单独(且类似!)的图表。

Diagram of the updated CD workflow - focusing on the staging environment. See detailed image description below.

暂存部署

空闸 CD 管道包含一个称为 暂存部署的 GitHub 操作,负责将代码部署到 Heroku 上的暂存环境。当将拉取请求合并到 main 分支时,此作业会自动触发。

此操作会保持 Heroku 暂存应用与 GitHub 仓库的 main 分支同步。

将架构发布到暂存阶段

暂存部署 作业运行之后,另一个作业会自动开始: 暂存发布架构 作业。此作业会将 发布到架构注册表中的 staging

该作业在幕后使用 rover subgraph publish 命令将架构更改发布到 中。

查看 CD 工作流的实际情况

让我们看看作业的实际情况!在新房源团队检查完拉取请求中的更改后,我们可以单击 合并 以将更新合并到新房源 main 分支中。

这将触发 Staging 部署 作业,以将更改部署到 listings 的 staging 环境。

以下是 GitHub Actions 页面的屏幕截图,显示了到目前为止已运行的工作流。当前,Staging 部署 作业正在为刚刚合并的 PR 运行。

https://github.com
Screenshot of GitHub Actions with Staging Deploy job in progress

单击 Staging 部署 作业时,我们可以关注作业进度,直至完成。

https://github.com
Screenshot of GitHub Actions with Staging Deploy job completed

在作业成功完成后,它会触发下一个作业,发布 staging 模式,该作业会将新的 listings 发布到 staging 上的

https://github.com
Screenshot of GitHub Actions with Publish Schema to Staging job in progress

单击了解作业的详细信息后,我们可以看到模式已成功发布到 staging 中。

https://github.com
Screenshot of Publish Schema to Staging job in GitHub completed

模式发布到注册表后会怎么样? 开始了!我们可以在 Studio 的 启动 页面中看到启动过程中的步骤,确保我们选择了 staging

https://studio.apollographql.com
Screenshot of Launches page in Studio

我们可以看到,这个特定 启动序列 部分遵循了我们在 教程 4:超图中的模式检查🎉

现在,丽莎对 listings 所做的更改已在 Airlock 的暂存环境中可用。团队成员和其他利益相关者可以使用 Apollo Explorer 测试新的 ,并确保一切都按预期工作。

部署到生产环境

在完成暂存环境中的商品展示银河坐标的初步测试后,我们可以尝试部署到生产环境。

下图展示了我们应用程序生产工作流程中的步骤,这在很大程度上类似于我们的暂存环境计划!

Diagram of the updated CD workflow - focusing on the production environment. See detailed image description below.

当我们准备好更新我们的生产环境时,我们首先要将我们的 main 代码分支部署到对应 Heroku 应用程序的生产版本。为此,我们可以在 GitHub 上手动运行 Production Deploy 作业。

这将把我们从 GitHub 上的 main 分支推送到在 Heroku 上托管的生产环境中的最新代码更改。当此操作成功后,将触发一个名为 Production Publish Schema 的另一项作业,该作业会将我们图形的 发布到 current 中。这会启动一个新的 ,然后我们回到我们在暂存环境中已涵盖的相同流程中!

实践

在 GraphOS 中,下列哪一事件会触发启动?

要点

  • 我们可以使用 来将发布 rover 子图发布命令自动发布到管道内的注册表中。
  • 发布 到注册表中的任何 都会触发 。我们可以通过 Studio 的启动页面查看启动顺序。

接下来

完成了!我们将发布到架构注册表的操作集成了 CD 管道,系统会自动为我们运行!我们此处已经顺利通过所有检查,但在接下来的两堂课中,我们会看到事情进展不 顺利时的情况。

上一步

分享你对于本课的疑问和评论

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

您需要一个 GitHub 帐户才能在下方发帖。没有帐户? 改而发帖至我们的 Odyssey 论坛。