是的,他们总得想办法卖掉这些设备,对吧?还有什么比要求拥有一台来构建他们的(不幸地非常成功的)移动平台更好的方法呢?如果无法从自己的设备(或者朋友的)中设置一台,那么下一个最好的选择是使用macincloud.com的按需付费(或专用构建代理)计划。不幸的是,不能使用他们提供的VSTS构建代理计划,因为需要构建生成IPA文件,这需要所有的证书/配置文件混乱,因此需要实际的UI访问。
Mac需要处理来自VSTS的构建请求。因此,需要在它上面安装构建代理,就像在关于在云中创建自己的构建代理的帖子中一样。
要创建Mac上的构建代理,请按照Microsoft的说明操作。建议遵循最后“如何作为服务运行”的步骤,以便它在任何未知的重启后仍然可以运行。继续吧,等回来会在这里。
一旦配置了构建代理,需要在Mac上获取所有的证书和杂物。发现的最好的指南是Xamarin提供的。为了节省带宽,不会在这里详细说明。
将使用Xamarin.iOS构建iOS应用程序,因此需要在可能服务CI请求的所有构建代理上安装它。
现在,是时候配置构建了,就像为其他两个平台所做的那样:重要的是(字面上)指出的那部分;代理队列。需要选择放置Mac构建代理的队列,而不是托管队列。
由于将构建一个特定于Xamarin.iOS的解决方案,建议创建一个单独的SLN用于构建iOS项目。这也将非常适合团队中的任何开发者实际上使用Mac(带有Xamarin Studio)进行开发。在构建定义完成后,将此解决方案定位在构建定义中显示的“Xamarin.iOS”任务中。
由于Xamarin与NuGet的不兼容性,Xamarin附带的nuGet v2.8.5 - 它在依赖性评估中有一个错误,如果选择了正确的(错误的?)包,这个问题就会出现。话虽如此,修复它并不难。使用shell脚本!
在开始时添加一个新的构建任务(有点像之前做的PowerShell),指向一个看起来像这样的脚本文件:
Bash
#
!/bin/sh
curl -s -O https://dist.nuget.org/win-x86-commandline/v2.8.6/nuget.exe
mono nuget.exe restore App-MacOSX.sln
保存此文件并将其推送到仓库,然后在新构建任务中定位它:
设置这个也很容易:这里的“复制根”部分充当包含所有iOS特定内容的目录(如果还记得在第一部分中的仓库结构)。然后,该过程提取所有生成的IPA文件并将它们放入服务器上的“drop”文件夹中,就像想要的那样。
现在是时候将其推送到HockeyApp了!正如可能预期的那样,Hockey的iOS集成非常好。只需按照为Android所做的那样设置,但使用*.ipa作为“二进制文件路径”,而不是*.apk: