使用Azure Pipelines持续集成Unity 3D项目

使用Unity 3D时,您是否曾经想过:“如果我可以将代码推送到存储库,然后神奇地得到一个可以将最新的更改分发给测试人员或客户的版本,那会很酷吗? ”-再也想不到! 本文将教您如何使用Microsoft的Azure Pipelines为您的Unity项目设置持续集成,Azure Pipelines是出色的Azure DevOps套件的一部分。

步骤1:安装所需的扩展以构建Unity项目

截至目前,Azure Pipelines还没有用于构建Unity项目的内置任务。 幸运的是,它是可扩展的,我们可以创建自己的构建任务以在管道中使用。 “不是没有人有时间这样做!”你说? 不用担心,我已经继续并创建了一个扩展供您使用。 前往市场并安装它以在您的组织中使用:

请注意:还有另一个Unity构建扩展。 但这是专门针对HoloLens Unity项目的,并且要求HoloToolkit包含在项目中。 确保为本文找到合适的标题为“ Unity Build”的标题

另请注意:我已在GitHub上将扩展名开源。 如果您有需要改进的地方,请随时提出要求。 另外,请报告那里的所有问题,以便我解决。

步骤2:创建和配置您的自定义构建代理

虽然您可以使用Microsoft托管的代理,但我建议您为Unity构建设置自己的代理。 这使您可以完全控制可用的Unity版本和模块。 让我们开始吧。 导航到您的Azure DevOps主页,然后在右上角单击您的个人资料图片,然后在菜单中选择“安全性”

当您可以创建个人访问令牌(PAT)时,这将打开安全设置,您的代理可以使用它来向DevOps Organzation配置自身。

选择页面标题下方的“新令牌” ,然后为您的PAT指定一个有意义的名称。 选择“自定义定义”范围,然后在面板的下端找到“显示更多范围” 。 现在,找到“代理池”范围,然后选中“读取和管理”复选框。 最后单击“创建”以创建PAT。 确保在需要的地方记下PAT,直到我们需要它为止。 面板关闭后,您将无法再次看到它。 接下来,我们将设置代理。

选择“组织设置” ,然后选择“代理池” 。 单击“新代理程序池…”创建一个新池。 将其命名为Unity Windows Agents,例如,如果要创建Mac代理,则相应地命名池。 您稍后将需要此名称。 最后但并非最不重要的一点是,单击“下载代理” 。 请按照说明下载和配置代理。 在此过程中,您将需要PAT和代理程序池名称。 如果您有任何问题,请在评论中让我知道。 最后但并非最不重要的一点,请在代理上安装Unity Hub并安装所需的Unity版本。

步骤3:设置示例构建管道

在本文中,我们将针对Android平台创建一个构建管道。 步骤可能会有所不同,具体取决于项目的目标平台,但通常应相似。 因此,转到您的Azure DevOps项目,然后在“管道”部分中,通过单击“新建” -> “新建构建管道” ,创建新的构建管道:

接下来,您需要告诉管道向导从何处获取源代码。 就我而言,它们全部托管在Azure Repos上。 如果需要,您可以稍后更改这些设置:

向导现在将提供一些模板作为起点。 请选择空的作业模板。 我们想从头开始:

好的。 现在,单击下面的屏幕快照中突出显示的加号按钮,在任务搜索文本框中输入“ Unity”,并将在本文开头安装的Unity Build任务添加到作业中:

现在,请重复并添加以下任务以及“ Android签名”“复制文件”“发布构建工件” 。 您的管道现在应如下所示:

我不会详细介绍Microsoft内置任务。 如果您在配置它们时遇到问题,请参考官方文档或让我知道,也许我可以帮忙。 我们将重点介绍Unity Build任务以及如何配置它。

基本上,您唯一需要做的就是告诉任务要构建的目标平台。 在此示例中,我们以Android为目标,因此请确保在“构建目标”下拉列表中选择“ Android” 。 对于“ Unity Version”,选择“ Project Version” 。 这将使用上次打开的Unity版本来构建项目。 确保已将其安装在代理上。

接下来,展开任务的“输出变量”部分,然后在此处输入参考名称。 该任务提供了一个buildOutputPath变量,您可以在以下任务中使用该变量来获取构建输出文件。

而已! 该管道将​​构建您的Unity项目,签名APK并将其发布到Azure DevOps工件存储,以便其他人可以下载它。 在高级方案中,您可以让管道将其发布到App中心或某个商店,例如进行测试。

结论

设置自己的生成代理是一个一次性的过程,一旦您习惯使用Azure Pipelines来构建项目,肯定会得到回报。 完成此操作后,就可以在组织中的所有项目中使用它。

请分享您的反馈,让我知道它是否对您有用,或者您想讨论高级方案的内容。 建设愉快!