自动执行本地部署

该指南向您展示如何使用 Unity Gaming Services(Unity 游戏服务)(UGS) CLI 或项目文件自动部署 Cloud Code 模块。

如果要将部署集成到 CI/CD 管线中,请参阅与 CI/CD 集成

先决条件

您需要一个 Cloud Code 模块和 UGS CLI 来自动执行本地部署:

  1. 创建 Cloud Code 模块
  2. 按照安装 CLI(Unity Gaming Services(Unity 游戏服务)CLI)的步骤进行 UGS CLI 的安装、配置和身份验证。

使用 UGS CLI 自动部署

UGS CLI 提供了可用于部署解决方案的 deploy 命令。deploy 命令将模块压缩并部署到 Cloud Code 服务。

要进行部署,请在项目目录中从终端运行以下命令:

ugs deploy <path_to_solution>

注意:为了支持编译,解决方案需要包含主项目的发布配置文件。如需了解更多信息,请参阅部署 C# 解决方案

使用项目文件自动部署

如果您配置项目文件以便在构建时发布、压缩和部署项目,则可以使用项目文件自动执行 Cloud Code 模块的部署。

注意:这是一个先进的工作流程。对于大多数情况来说,UGS CLI Deploy 命令就足够了。

如需了解更多信息,请参阅 Microsoft 指南:了解项目文件

该脚本使用 UGS CLI Deploy 命令。

项目文件配置

您可以使用以下项目文件配置来自动执行 Cloud Code 模块的部署:

<Target Name="RemoveDirectory">
    <RemoveDir Directories="$(OutDir)Module/" />
 </Target>
<Target Name="PublishModule" DependsOnTargets="RemoveDirectory">
    <Exec Command="dotnet publish -r linux-x64 --no-self-contained -o $(OutDir)Module/$(AssemblyName)" />
</Target>
<Target Name="ZipModule" DependsOnTargets="PublishModule">
    <ZipDirectory SourceDirectory="$(OutDir)Module/$(AssemblyName)" DestinationFile="$(OutDir)Module/$(AssemblyName).ccm" />
</Target>
<Target Name="DeployModule" DependsOnTargets="ZipModule">
    <Exec Command="ugs deploy $(OutDir)/Module/$(AssemblyName).ccm" />
</Target>

将上述配置复制并粘贴到项目文件中。

  • RemoveDirectory 目标从 OutDir 目录中移除 Module 目录。
  • PublishModule 目标将模块发布到 Module 目录并生成所需的程序集。
  • ZipModule 目标压缩 Module 目录。
  • DeployModule 目标将模块部署到 Cloud Code 服务。

Ready to Run 编译(可选)

Ready to Run 编译是一项可缩短 Cloud Code 模块冷启动时间的可选功能。要检查此选项如何影响您的模块,请参阅 Ready to Run

要启用 Ready to Run 编译,请修改 PublishModule 目标以包含 PublishReadyToRun 属性:

<Target Name="PublishModule" DependsOnTargets="RemoveDirectory">
    <Exec Command="dotnet publish -r linux-x64  -p:PublishReadyToRun=true --no-self-contained -o $(OutDir)Module/$(AssemblyName)" />
 </Target>

运行目标

要运行这些目标,请在项目目录中从终端运行以下命令:

msbuild /t:DeployModule

如果未找到 msbuild 命令,可能需要将 msbuild 路径添加到 PATH 环境变量。

注意:通过将 DeployModule 替换为另一个目标名称,可以单独运行任何其他目标。这些目标相互依赖,因此运行任何目标也会运行其所依赖的目标。

预期输出

如果部署成功,则会显示以下输出:

Deployed:
    ExampleModule.ccm