容器版本工作流程

警告:此内容是该文档的预览版。完整的文档以及代码示例仍在制作中。若有任何反馈,请通过本页底部的反馈机制来提供。

容器版本工作流程包括准备容器获取(或创建)版本创建版本文件列表对版本文件进行迭代创建版本的发布版本等待版本进行同步

在使用容器版本工作流程之前,必须具备 CCD API 密钥和具有以下角色的 UGS 服务帐户:

  • Multiplay API 查看者
  • Multiplay API 编辑者
  • Multiplay 注册表编辑者

注意:请参阅项目角色服务帐户身份验证,了解更多信息。

注意:在这整个工作流程中,您都需要使用您的 Unity Project ID 和环境 ID。您可以在项目设置页面上找到 Project ID 并在环境页面上找到环境 ID。

下图显示了该工作流程的简化版本:

容器工作流程图

准备版本容器

注意:构建游戏二进制文件和构建容器不属于 Multiplay Hosting API 的范围。

  1. 构建容器镜像(使用带外过程)。
  2. 记录您的 Unity project ID 和环境 ID。
  3. 登录 Multiplay 容器注册表。
  4. 使用密钥 ID 作为用户名,密钥作为密码。请参阅身份验证
docker login registry.multiplay.com -u <KeyID>

获取或创建版本

获取版本的过程取决于您要使用现有版本还是创建新版本

注意:版本 ID 和 CCD 存储桶 ID 是两个单独的 ID,两者具有一对一的关系。存储桶(由存储桶 ID 标识)存储版本文件,版本(由版本 ID 标识)中包含存储桶中的文件和元数据。

按名称获取现有版本

您可以使用列出版本 API 按名称获取现有版本 ID。

在版本列表 API 响应体中,每个版本的 ccd.bucketID 字段提供相应版本的 CCD 存储桶 IDbuildID 字段提供相应版本的版本 ID。请记录您要使用的版本的 buildID 字段值。

以下代码示例显示了如何使用 curl 获取现有版本:

curl -X GET -H "Authorization: Basic <SERVICE_ACCOUNT_CREDENTIALS>" https://services.api.unity.com/multiplay/builds/v1/projects/{projectId}/environments/{environmentId}/builds

找到要使用的版本后,请记录下响应体中的 buildID

创建新版本

可以使用创建版本 API 来创建新版本。

以下代码示例展示了如何使用 curl 创建版本:

curl -X POST -H "Authorization: Basic <SERVICE_ACCOUNT_CREDENTIALS>" -H "Content-Type: application/json" \
    -d '{"buildName":"Dev Build A", "osFamily": "LINUX"}' \
    https://services.api.unity.com/multiplay/builds/v1/projects/{projectId}/environments/{environmentId}/builds

创建新版本后,请记录下响应体中的 buildID

为容器镜像添加标签

首次推送给新版本时,请使用 v1 作为 MultiplayTag。后续推送时,请使用增量标签(例如 v2)。

使用以下代码片段作为模板为容器添加标签(其中 ImageNameImageTag 是本地镜像名称和标签)。

docker tag <ImageName>:<ImageTag> registry.multiplay.com/<ProjectID>/<EnvironmentID>/<BuildID>:<MultiplayTag>

将镜像推送给容器注册表

为容器添加标签后,请将其推送给 Multiplay 容器注册表。使用以下代码片段作为模板:

docker push registry.multiplay.com/<ProjectID>/<EnvironmentID>/<BuildID>:<MultiplayTag>

创建版本的发布版本

可以使用创建新的发布版本 API 来创建版本的发布版本。

以下代码示例展示了如何使用 curl 创建版本的发布版本:

curl -X POST -H "Authorization: Basic <SERVICE_ACCOUNT_CREDENTIALS>" -H "Content-Type: application/json" \
    -d '{"container": {"imageTag": "v1"}, "forceRollout": false}' \
    https://services.api.unity.com/multiplay/builds/v1/projects/{projectId}/environments/{environmentId}/builds/{buildId}/versions

等待版本进行同步

通过重试获取单个版本 API 直到 syncStatus 字段变为 SYNCED,可确定版本何时完成同步。

以下代码示例展示了如何使用 curl 等待版本进行同步:

curl -X GET -H "Authorization: Basic <SERVICE_ACCOUNT_CREDENTIALS>" https://services.api.unity.com/multiplay/builds/v1/projects/{projectId}/environments/{environmentId}/builds/{buildId}