当Xcode server bot遇上Cocoa pods要避开的坑

昨天居然为了打包花了一整天时间。由于遇到了不少坑而且编译慢。在此特地整理一下。

首先创建bot。创建bot有很多教程,官方文档也写的很清楚,这里就不详细说了。关键步骤在configure bot triggers这里。添加一个Pre-integration script,编译前的脚本。bot会先checkout代码到临时文件夹,然后执行编译前的脚本,编译,然后执行编译后的脚本

Pre-integration script那当然要执行pod install咯。好,继续,完成,等待integration执行。很快,过程走完了,得到一个大红叉。

看来没有这么简单。按下command+8找到bot标签,展开,点击那个失败的构建。

1.png

点击主界面上面的logs。

2.png

下方左侧有个下拉菜单,可以看到Pre-integration triggers里面有我们创建的脚本名称,选择这个看看log信息。不要直接看summary,那里除了告诉你脚本返回-1以外什么信息都没有,也别费力去网上搜了,搜不到什么。

一开始会发现找不到pod指令,看来脚本不知道去哪找pod。我们在server的命令行中执行which pod,打印出来的路径就是pod的路径。我们直接替换好了/usr/local/bin/pod install,别照抄这句,找到你自己的路径。

再次编译,继续报错。

这次错误很明确,当前目录没有Podfile。好,我们改下脚本。在pod install之前执行pwdls确保我们来到了正确的工程目录。多条命令的时候不要忘了每个指令末尾加上分号“;”确保顺序执行。好,再次执行构建。

肯定还是错误。我们重新看下log。前2行打印出来了当前路径和当前路径下的文件。果然,执行脚本时,并没有进到工程目录。我们在pod install前加上cd [project]进入你的工程目录。

然后继续报错,invalid byte sequence in US-ASCII。提示信息倒是很完善,直接给了我一个URL,把搜索关键字也拼好了。这个URL直接指向github的issues提问区。解决方案在这里。在脚本最开始加上这几句。
export LANG=en_US.UTF-8 export LANGUAGE=en_US.UTF-8 export LC_ALL=en_US.UTF-8

接下来的错误有意思了,它跟我说找不到scheme。找了一些论坛,找到了答案。如图操作。

3.png

改了scheme最好重新建一个bot。然后在server的命令行执行xcodebuild -workspace MyProject.xcworkspace -list确认一下临时工程文件夹里面是不是能找到scheme了。

最后,构建成功。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,868评论 18 139
  • 项目组件化、平台化是技术公司的共同目标,越来越多的技术公司推崇使用pod管理第三方库以及私有组件,一方面使项目架构...
    swu_luo阅读 22,168评论 0 39
  • 一. CocoaPods的介绍 什么是CocoaPods?CocoaPods是一个负责管理iOS项目中第三方开源库...
    辉712阅读 3,973评论 0 7
  • 那是一栋很老式的建筑,有点像布达佩斯大饭店。我慢腾腾地爬上二楼,背着我那个黑白格子的小背包。楼里很安静,灯光昏黄很...
    幺风阅读 256评论 0 1
  • 夏天,是个多彩多姿的季节。你看,那荷塘里摇曳着亭亭玉立的荷花,多少文人骚客为之倾倒;那田地里一大片圆滚滚的西瓜...
    烟雨水云天阅读 430评论 0 2