CodeV

在Xcode9中使用Xcode server & bot自动化持续集成并上传ipa到蒲公英

前言:常用的持续集成工具有很多种,例如Jenkins,Buildbot,Travis CI,Go等,本文主要介绍如何搭建使用苹果官方提供的持续集成工具:Xcode server & bot并自动将ipa上传到常用的内测程序分发服务平台蒲公英。在Xcode9之前使用Xcode server需要下载安装OS X Server(现在称作macOS Server),而在Xcode9之后苹果已经把Xcode Server集成到了Xcode里面,所以搭建持续集成环境变得非常简单。

本文以笔者自己的一个GitHub上的公开仓库作为例子,仓库地址为:https://github.com/HelloWinter/ShangHaiProvidentFundSwift

开启Server & Bot服务

打开Xcode -> Preferences -> Server & Bots右上角开关,输入管理员密码后,选择集成用户,我们这里选择当前登录的管理员账户。

图1

点击continue后,经过一点时间加载Xcode server启动。

创建Bot

打开项目点击Product -> Create Bot...,如果没有默认的server,就在Select a Server下拉框中选择Add New Server...,从下拉列表中选择server,点击Next,选中Registered user,输入本机用户名和密码点击Add

图2

为Bot配置代码仓库

点击下一步之后如果出现下图这种情况:Provide credentials so Xcode Server can check out frome this repository

图3

点击右侧Sign in在下拉框中输入代码仓库的用户名和密码,比如代码仓库在github上面,就输入github的用户名和密码。

图4

为Bot配置编译选项

图5

  • Scheme: 选择要构建哪个scheme,使用Xcode Server构建的scheme必须是共享的。如果你的scheme是未共享的状态,请在Product -> Scheme -> Manage Schemes中勾选Shared复选框,然后提交,如下图所示。

图6

  • Analyze: 执行代码静态分析。

  • Test: 运行你实现的所有测试用例。

  • Archive: 构建打包,Export:导出选项,笔者这里选择Use Custom Export Options Plist,然后在下面点击文件夹图标,选择你要导出的ExportOptions.plist配置文件。如果没有执行过Archive导出,ExportOptions.plist配置文件可以通过下面操作获得:Product -> Archive,然后导出安装包,在导出的目录中,就包含了一个ExportOptions.plist文件,选择用这个文件即可。

  • Configuration: 我们这里选择Release版本。

配置Bot集成计划

  • Integrate: 集成类型。Periodically : 周期性的(执行集成)可以设置小时,天和周为单位的周期计划。On Commit : 每次提交(执行集成)。Manually : 手动(集成)。

  • Clean : 执行集成时Clean项目的计划。

图7

配置证书签名

笔者这里选中 Allow Xcode Server to manage my certificates and profilesAutomatically register device in my developer account。Developer Teams中点击sign in登录苹果开发者账号,登录后点击Add Server to Team,在Certificates & Profiles选项卡中将打包所用到的Certificates和Provisioning Profiles添加到server中。

图8

为bot配置环境变量

这一步可根据需要配置,笔者这里没有用到所以直接Next。

配置bot触发器

点击+来创建触发器,触发器类型分为Pre-Integration Scripts,Post-Integration Scripts,New Issue Email,Periodic Email Report。

Pre-Integration Scripts : 在Integration集成前执行。配置在这里的脚本能够引用在之前的配置步骤中你定义的任何环境变量以及Xcode中的内建环境变量。

Post-Integration Scripts : 在Integration集成后执行。同Pre-Integration Scripts一样,既能引用前述配置步骤中你定义的环境变量也能引用Xcode中的内建环境变量。Post-integration triggers配置运行是有条件的,比如在构建成功,测试失败, 构建发生错误, 构建发生警告, 或静态分析产生警告时。可根据自己的情况选择合适的条件,勾选复选框。

将构建生成的ipa上传到蒲公英需要添加一个构建后执行的脚本并指定只有在构建成功时才执行该脚本:

1
curl -F "file=@$XCS_PRODUCT" -F "_api_key=蒲公英api_Key" https://www.pgyer.com/apiv2/app/upload

图9

至此已经配置好Bot,可点击xcode左侧导航栏最后一个图标(Report Navigator)查看,如果没有出现退出Xcode重新打开项目。可在Bot下拉列表中查看所有集成结果,如果要修改某些Bot配置项,可点击Edit Bot重新配置。

图10

后记

构建会产生一些目录:

  • /Library/Developer/XcodeServer/IntegrationAssets:这个目录会保存所有的Bot的每一次的集成结果,ipa文件,日志信息等都可以在其子目录中找到。
  • ~/Library/Caches/XCSBuilder/Bots/xxx/:xxx代表一个Bot的ID,在该目录下的Source目录,存放的是从仓库中拉取到的代码。