高级发布通道

编辑页面


For the complete documentation index, see llms.txt. Use this Use this file to discover all available pages.

本文档已于 2022 年 8 月归档,且不会再接收任何更新。要了解更多关于为何发布通道被弃用的原因,请参阅我们关于 EAS Update 的博文。我们建议改用 EAS Update

简介

要快速了解发布通道,请阅读此文

当你运行 expo publish --release-channel staging 发布应用时,它会创建:

  • 一个发布版本,由 Android 和 iOS 平台上的 publicationId 标识。发布版本指的是发布时你的打包源代码和资源。
  • 一个指向 staging 发布通道中该发布版本的链接,由 channelId 标识。这就像 git 分支上的一次提交。

为简化起见,本文其余部分只会提到 ios 发布版本,但你也可以在任何时候把 ios 替换为 android,所有内容依然成立。

查看过去的发布

你可以使用 expo publish:history 查看你发布过的所有内容。

示例命令和输出

expo publish:history --platform ios

| publishedTime | appVersion | sdkVersion | platform | channel | publicationId | | ------------------------ | ---------- | -------- | ------- | ------------------------------------ | | 2018-01-05T23:55:04.603Z | 1.0.0 | 24.0.0 | ios | staging | 80b1ffd7-4e05-4851-95f9-697e122033c3 |

要查看有关此特定发布的更多详细信息,可以运行 expo publish:details

示例命令和输出

expo publish:details --publish-id 80b1ffd7-4e05-4851-95f9-697e122033c3

发布详情

我的用户会获得应用的哪个版本?

你的用户会获得推送到某个发布通道上的、最近且兼容的发布版本。影响兼容性的因素包括:

  • sdkVersion(独立应用只构建为支持单个 SDK 版本)
  • platform
  • releaseChannel

下图流程图展示了我们如何确定要向用户返回哪个发布版本:

提供流程图

将发布版本提升到新的发布通道

示例用例:你之前已经将某个发布版本发布到 staging,并且在测试中一切顺利。现在你希望这个发布版本在另一个发布通道中生效(即)production

我们运行 expo publish:set 将发布版本推送到 production 发布通道。 expo publish:set --publish-id 80b1ffd7-4e05-4851-95f9-697e122033c3 --release-channel production

继续上一节的内容,我们可以看到该发布版本同时存在于 stagingproduction 发布通道中。

expo publish:history --platform ios

publishedTimeappVersionsdkVersionplatformchannelpublicationId
2018-01-05T23:55:04.603Z1.0.036.0.0iosstaging80b1ffd7-4e05-4851-95f9-697e122033c3
2018-01-05T23:55:04.603Z1.0.036.0.0iosproduction80b1ffd7-4e05-4851-95f9-697e122033c3
2018-01-04T22:43:19.302Z1.0.036.0.0iosproductiond6b61741-a8dc-11e9-852a-3b0715b88238

回滚发布通道条目

示例用例:你将一个发布版本发布到了 production 发布通道,但后来发现它给你的一些用户带来了严重回归,因此你想回退到上一个版本。

继续上一节的内容,我们使用 expo publish:set 只回滚 production 发布通道中 iOS 平台的条目

expo publish:set --release-channel production --publish-id d6b61741-a8dc-11e9-852a-3b0715b88238

或者,我们也可以使用以下命令回滚 production 发布通道中 Android 和 iOS 的条目: expo publish:rollback --release-channel production --sdk-version 36.0.0

现在我们可以看到我们的发布版本已在 production 发布通道上可用。

expo publish:history --platform ios

publishedTimeappVersionsdkVersionplatformchannelpublicationId
2018-01-04T22:43:19.302Z1.0.036.0.0iosproductiond6b61741-a8dc-11e9-852a-3b0715b88238

发布通道 CLI 工具

发布历史

用法: expo publish:history [--release-channel <channel-name>] [--count <number-of-logs>] 查看你已发布版本的日志。 选项: -c, --release-channel <channel-name> 按发布通道筛选。如果不包含此标志,将显示最近的发布。 -count, --count <number-of-logs> 要查看的日志数量,最大 100,默认 5。 -r, --raw 生成一些原始输出。 -p, --platform <ios|android> 按平台筛选,android 或 ios。

发布详情

用法: expo publish:details --publish-id <publish-id> 查看已发布版本的详细信息。 选项: --publish-id <publish-id> 发布 ID。(必填) -r, --raw 生成一些原始输出。

发布回滚

用法: expo publish:rollback 将更新回滚到某个发布通道。等同于运行 `expo publish:set`,并将 publish-id 设置为指定 sdk 版本中的最近一次发布 选项: -c, --release-channel <channel-name> 要回滚的发布通道名称(必填) -s, --sdk-version <version> 要回滚的 SDK 版本(例如 37.0.0)(必填) -p, --platform <ios|android> 要回滚的平台(除非指定,否则同时回滚两者)

发布设置

用法: expo publish:set --release-channel <channel-name> --publish-id <publish-id> 将已发布的版本设置为从指定通道提供。 选项: -c, --release-channel <channel-name> 要设置已发布版本的通道。(必填) -p, --publish-id <publish-id> 要从该通道提供的已发布版本 ID。(必填)