开发完 Xamarin 的程序, 也在模拟器上测试完后, 接下来就需要将 App 档部署到站台上, 以 In-House 的方式进行部署. 这时, 可透过 VSTS 的 Task 帮助我们进行建置及部属的动作. 这一篇分享如何使用 VSTS 建置 Xamarin.iOS 的项目以及如何产生 IPA 档.
Mac 上建立 Build Agent
要让 VSTS 可以帮忙建置 Xamarin 的 iOS 项目, 目前无法直接使用 VSTS 自己的 Hosted Agent, 而是需要依赖 macOS 的设备作为 Build Agent 以进行 Xamarin.iOS 项目的 Build.
建立 Mac 的 Build Agent, 可以参考微软的官方文档 - Deploy an agent on OS X
建立 Provisioning Profile
如果在开发阶段, 只需要部署到 iOS 模拟器, 或是部署连接到 macOS 设备的 iPhone. 那么, Build Xamarin.iOS 项目是不需要设定 Provisioning Profile. 但如果到了测试阶段之后, 需要进行实机测试, 就需要设定 Provisioning Profile.
Provisioning Profile 是 Apple 用来指定套用到 iOS 设备上的设定描述档, 里面包括了用来签署 Source Code 用的凭证, 所安装的 App 的 App ID, 可以使用这个 App 的 iOS 设备等. 设定 Provisioning Profile 需到 Apple Developer 站台上进行设定. 如果熟 XCode 的话, 可以使用 XCode 帮忙快速建立. 否则, 就需要一步一步手动建立, 主要有几个步骤:
建立凭证: 凭证是用来签署 (Sign)Source Code 用的. 我使用 Enterprise Program, 如果要进行 In-House 部署, 则需要建立 Production 凭证才行.
设定 App ID: 给自己的 App 设定一个唯一的 App ID, 并且设定要使用到的 App Services.
设定 Provisioning Profile: 有两种 Provisioning Profile-Development 及 Distribution, 要进行 In-House 部署, 则需要建立 DistributionProvisioning Profile.
建立之后, 需要将凭证及 Provisioning Profile 安装到作为 Xamarin Mac Agent 的 macOS 设备上. 这样, 在 Visual Studio 中设定 Xamarin.iOS 项目时, 就可以直接选择到该 Provisioning Profile.
操作画面及步骤可以参考 [Xamarin]In-House Distribution
设定 Xamarin.iOS 项目属性
设定完 macOS 设备上的设定后, 接下来就要到 Visual Studio 中设定用来串连 Apple 设备的设定值.
设定 iOS Application
开启 Xamarin.iOS 项目, 进入项目属性设定窗口, 选择 iOS Application 页签. 把之前在 Apple Developer 站台所设定的 App ID, 设定到 Identifier 字段中, 以让 App 拥有该 ID.
设定 iOS Bundle Signing
切换到 iOS Bundle Signing 页签, 这里要设定的是要建立的 App 所使用的凭证及 Provisioning Profile. 这里的下拉菜单, 会列出所连接的 Mac Agent 内所拥有的对象.
Identity 字段用来设定要该 App 的凭证, 如果该设备有安装 Production 凭证, 就可以看到下拉菜单中有 Distribution(Automatic) 可以选取. 或是可以明确的指定要使用哪一个凭证.
Provisioning profile 则是用来设定使用哪一个 Provisioning profile. 因为 Provisioning profile 是一个部署描述档, 所以如果有不同的部署设定, 例如是使用 Ad Hoc 而非 In-House 的方式部署, 最好在名称上可以辨识出来, 以便于选择.
设定 VSTS
在使用 VSTS 进行 Continuous Integration 之前, 先确认已经在 VSTS 上建立好 Git Repository 以作为 Xamarin 项目的 Source Controll 之用. 设定完 macOS 设备以及 Visual Studio 之后, 就可以将包含 Xamarin.iOS 项目的整个 Solution Check In 到 Server 上.
确认自己拥有权限可以操作 VSTS 的 Build Definition 后, 就可以建立一个新的 Build Definition. 在界面上, 可以看到有 Xamarin.iOS 的模板可以选择.
记得 Default agent queue 要选取有设定 macOS 设备的 Agent.
这个 Build Definition 的模板会建立底下几个 Task, 会在 Build Agent 的机器上进行几个动作, 主要是 restore Xamarin component,Build Xamarin.iOS 项目, 使用 Xamarin Test Cloud 进行测试. 我的测试项目很简单, 没有 Xamarin component, 也不需要使用 Xamarin Test Cloud 进行测试, 所以可以把底下这两个 Task 删掉.
因此, 只剩下三个 Task.Copy File 及 Publish Artifact 这两个 Task 都是在做文件处理, 比较没问题. 所以只要设定好 Build Xamarin.iOS solution 这一个 Task, 就大功告成了.
设定 Xamarin.iOS solution 位置
而这一个 Task, 最基本的动作是设定 Solution 档的位置. 只要按下... 功能键, 即会开启对话窗口, 带入 Git Repository 的目录供你选择 Solution 档的位置.
设定签署凭证及 Provisioning Profile
接下来要设定 App 的签署凭证及 Provisioning Profile. 这个动作, 在 Visual Studio 中已经有做过了. 所以如果刚好你的 Build Agent 跟 Visual Studio 中的 Mac Agent 是同一台, 那么这些字段保持空白即可, 因为可以套用直接项目的设定. 但如果想要另外设定, 例如 Visual Studio 中设定的是 Development 凭证, 但希望 VSTS 在建置时使用 Distribution 凭证. 这时, 就需要在 Task 中设定凭证及 Provisioning Profile 的位置.
最后, 如果想要产生 ipa 档, 记得要把 Create App Package 这个选项勾选起来. 这样, 当 VSTS 的 Build 执行成功后, 就可以在 Build Agent 那台 macOS 设备的 myagent 目录下找到建置完成的 ipa 档了.
有了 ipa 档, 就可以依据需求执行 In-House 部署, 或是 iTunes 部署. 这些动作都可以搭配 VSTS 的 Release Management 做到自动化. 解放烦杂重复的工作, 可以让我们的工作更加的愉快.
来源: http://www.bubuko.com/infodetail-3189675.html