昨天居然为了打包花了一整天时间。由于遇到了不少坑而且编译慢。在此特地整理一下。
首先创建bot。创建bot有很多教程,官方文档也写的很清楚,这里就不详细说了。关键步骤在configure bot triggers
这里。添加一个Pre-integration script
,编译前的脚本。bot会先checkout代码到临时文件夹,然后执行编译前的脚本,编译,然后执行编译后的脚本。
Pre-integration script
那当然要执行pod install
咯。好,继续,完成,等待integration执行。很快,过程走完了,得到一个大红叉。
看来没有这么简单。按下command+8找到bot标签,展开,点击那个失败的构建。
点击主界面上面的logs。
下方左侧有个下拉菜单,可以看到Pre-integration triggers
里面有我们创建的脚本名称,选择这个看看log信息。不要直接看summary,那里除了告诉你脚本返回-1以外什么信息都没有,也别费力去网上搜了,搜不到什么。
一开始会发现找不到pod指令,看来脚本不知道去哪找pod。我们在server的命令行中执行which pod
,打印出来的路径就是pod的路径。我们直接替换好了/usr/local/bin/pod install
,别照抄这句,找到你自己的路径。
再次编译,继续报错。
这次错误很明确,当前目录没有Podfile。好,我们改下脚本。在pod install
之前执行pwd
和ls
确保我们来到了正确的工程目录。多条命令的时候不要忘了每个指令末尾加上分号“;”确保顺序执行。好,再次执行构建。
肯定还是错误。我们重新看下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。找了一些论坛,找到了答案。如图操作。
改了scheme最好重新建一个bot。然后在server的命令行执行xcodebuild -workspace MyProject.xcworkspace -list
确认一下临时工程文件夹里面是不是能找到scheme了。
最后,构建成功。