自动执行本地部署
该指南向您展示如何使用 Unity Gaming Services(Unity 游戏服务)(UGS) CLI 或项目文件自动部署 Cloud Code 模块。
如果要将部署集成到 CI/CD 管线中,请参阅与 CI/CD 集成。
先决条件
您需要一个 Cloud Code 模块和 UGS CLI 来自动执行本地部署:
- 创建 Cloud Code 模块。
- 按照安装 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