Xcode9 之 Xcode Server 持续集成

本文介绍如何在Xcode 9中设置和使用Xcode Server进行自动化测试,包括创建Bot、配置触发器及使用集成结果等关键步骤。

前言:Xcode9之前使用Xcode Server 步骤比较繁琐,还需要单独的macOS Server app,Xcode9之后preferences新增了Server & Bots 选项, 将Xcode Server内置在了Xcode中。 下面将介绍在Xcode9中如何设置和使用Xcode Server。

开启Server & Bots

选择设置Xcode Server的用户,我选择的是自己,也可以选择其他用户。

Create Bots

#####为什么不能创建Bot ??因为需要在服务器建立代码仓库,否则不能创建,会出现以下提示

可以创建macOS和iOS的APP,这里只介绍iOS,代码使用Git做版本控制。 选择Product-> Create Bot开始创建。

注:Run tests in parallel 勾选之后,会并行执行test,如果选择的设备过多会导致系统卡到爆!并最终导致本次Integration失败。

###Triggers

一:Pre-Integration Scripts: 设置在构建之前执行的Script(在代码checkout/update执行完,构建开始前执行)。 二:Post-Integration Scripts: 设置在构建完成之后执行的Script,Integration失败则不会触发,可以选择在什么结果下执行,见图Run On项,这个Script在执行时可以获取到执行后的结果,可查看下面这张对照表。 三:Email Notifications :发送邮件通知类型有两种 1:New Issue Email ,当出现issue,waring 时,可以给提交者发送邮件通知告知详细情况。 2:Periodic Email Report


###Post-Integration Scripts 时可用的CI Script Variables对照表

VariableTypeDescriptionExample
XCS_BOT_NAMEStringThe name of this botMyApp Bot
XCSNumber?1
XCS_SOURCE_DIRPath到这个集成的源目录的路径/Library/Developer/XcodeServer/Integrations/Caches/$XCS_BOT_ID/Source
XCS_INTEGRATION_RESULTString这个集成的结果succeeded
XCS_TEST_FAILURE_COUNTNumber在这个集成中测试失败的次数0
XCS_INTEGRATION_IDString该集成的ID2
XCS_BOT_TINY_IDString这个机器人的短IDBA7B030
XCS_ARCHIVEPath通过此集成生成的归档的路径/Library/Developer/XcodeServer/Integrations/Integration-$XCS_INTEGRATION_ID/Archive.xcarchive
XCS_TEST_FAILURE_CHANGENumber在此与之前的集成之间,测试失败的数量发生的变化数0
XCS_INTEGRATION_TINY_IDString该集成的短ID847C2A7
XCS_BOT_IDString这个bot的ID4faee640aba92fc40c53c58c0a5ccadd
XCS_XCODEBUILD_LOGPath构建日志的路径/Library/Developer/XcodeServer/Integrations/Integration-$XCS_INTEGRATION_ID/build.log
XCS_PRODUCTString构建产品的名称MyApp.ipa
XCS_ERROR_COUNTNumber这个集成中的错误数量0
XCS_ANALYZER_WARNING_COUNTNumber在这个集成中静态分析警告的数量0
XCS_TESTS_CHANGENumber此次与之前集成的测试次数的变化数0
XCS_ERROR_CHANGENumber在此与之前的集成之间的错误量的变化数0
XCS_ANALYZER_WARNING_CHANGENumber静态分析仪警告的数量在此与之前的集成之间发生变化数0
XCS_WARNING_COUNTNumber这个整合的警告数0
XCS_TESTS_COUNTNumber这个整合的测试次数2
XCS_OUTPUT_DIRPath建立输出目录。集成完成后,该目录将被删除。/Library/Developer/XcodeServer/Integrations/Integration-$XCS_INTEGRATION_ID
XCS_INTEGRATION_NUMBERNumber这个集成在该bot下的编号2

也可以在environment variables 中添加自定义变量。

路径 /Library/Developer/XcodeServer/IntegrationAssets/${XCS_BOT_ID}-${XCS_BOT_NAME}/ 是存储bot结果的路径
值得注意: 在 Trigger 里操作路径 
/Library/Developer/XcodeServer/IntegrationAssets/${XCS_BOT_ID}-${XCS_BOT_NAME}/ ${XCS_INTEGRATION_NUMBER}
无效,因为该路径在trigger跑完之后才由upload统一生成,从loading过程可以看到。

复制代码

####整个过程Gif

###Integration 结果

/Library/Developer/XcodeServer/IntegrationAssets/$XCS_BOT_ID-$XCS_BOT_NAME/$XCS_INTEGRATION_NUMBER/ 该路径中的是integration的结果集合。在XcodeServer Website中Download下来的就是该目录压缩包。有的时候可能要对结果进行后续分析

##总结:

1:Integration 每次都会去拉取和更新代码仓库的最新代码,所以是以仓库代码为准,本地未提交的不生效。在路径~/Library/Caches/XCSBuilder/Bots下可以找到拉取的代码。 2:依赖于Scheme

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值