【iOS】Jenkins mac-slave iOS CI 集成(二)

写在前面:

接着Jenkins mac-slave iOS CI 集成(一),我们已经实现了本地Jenkins的打包功能。下一步就是给服务端的Jenkins配置一个mac节点:mac-slave
怎么配置可以参考:Mac当Jenkins slave远程自动编译iOS。毕竟我是懒得重新写一遍的,哈哈哈

配置好mac-mini-slave之后,job就用上一篇文章中你自己用的那个job,直接一样的配置一遍就好了

我这里主要是记录在配置里slave之后遇到的问题

1.当你的slave节点配置好了之后,有可能你的该节点的物理机器关闭了(就是你的mac电脑关闭了),或者你的ip变了,这个时候就不能打包了

slave列表

解决方式:关闭这个很好说,如上图,有多个slave。他们都被指定了不同的job。也会显示在不在线。不在线的话自己查下,没啥好赘述的。关于动态IP的问题,建议是把你的mac电脑改成静态IP,这样Jenkins 就不会找不到你的机子

2. BUILD FAILED

ld: warning: directory not found for option '-L/Users/draven/Library/Developer/Xcode/DerivedData/DaZhuanJia-gtosbakglnaxprfkajssnftcmqct/Build/Products/Debug-iphoneos/ZipArchive'
ld: library not found for -lAFNetworking
clang: error: linker command failed with exit code 1 (use -v to see invocation)

** BUILD FAILED **

The following build commands failed:
    Ld /Users/draven/Library/Developer/Xcode/DerivedData/DaZhuanJia-gtosbakglnaxprfkajssnftcmqct/Build/Intermediates.noindex/DaZhuanJia.build/Debug-iphoneos/DaZhuanJia.build/Objects-normal/armv7/DaZhuanJia normal armv7
(1 failure)
Build step 'Execute shell' marked build as failure
Finished: FAILURE
问题分析:看报错信息是因为找不到文件,这个问题有点尬
xcodebuild -workspace "${TARGET_NAME}.xcworkspace" -scheme "${TARGET_NAME}"  -configuration ${Configuration} clean
解决方案:这一行shell里面${Configuration} 参数有问题,前面没有赋值,改一下就好了

3. ARCHIVE FAILED

/Users/draven/Library/Developer/Xcode/DerivedData/DaZhuanJia-gtosbakglnaxprfkajssnftcmqct/Build/Intermediates.noindex/ArchiveIntermediates/DaZhuanJia/InstallationBuildProductsLocation/Applications//DaZhuanJia.app/Frameworks/YZBaseSDK.framework: errSecInternalComponent
Command /bin/sh failed with exit code 1

** ARCHIVE FAILED **


The following build commands failed:
    PhaseScriptExecution [CP]\ Embed\ Pods\ Frameworks /Users/draven/Library/Developer/Xcode/DerivedData/DaZhuanJia-gtosbakglnaxprfkajssnftcmqct/Build/Intermediates.noindex/ArchiveIntermediates/DaZhuanJia/IntermediateBuildFilesPath/DaZhuanJia.build/Debug-iphoneos/DaZhuanJia.build/Script-BAB30BC2E5639AD649C8DE0D.sh
(1 failure)
Build step 'Execute shell' marked build as failure
Finished: FAILURE
问题分析:

在执行PhaseScriptExecution 命令的时候失败了,看似和pods 有关,但是往前看,还有/usr/bin/codesign --force --sign B9BE891386458471F961BF2000FF29D9B1A02BB9 --preserve-
这段codesign 的log 让我有很强烈的直觉觉得这个是cert 或者是pp文件的问题.在我本地的Jenkins 里面没有这个问题,加了mac-slave 之后就有了问题.关于Jenkins mac-slave
然后我就对比pp文件的变化在两个不同的Jenkins 下的区别


这个是本地Jenkins 的PP文件的目录
这个是slave下的pp文件目录,该目录不是我们手动创建的,是Jenkins在执行脚本的时候动态创建的

对比的结果是,并没有什么问题,pp文件是可以正常读取的

然后我继续Google :The following build commands failed: PhaseScriptExecution [CP]\ Embed\ Pods\ Frameworks

搜索结果一个个点进去看,第一页有10个结果,仔细的看,也许就有新发现啊哈哈

试了各种,什么修改cocoapods里面的sh,修改slave-mac的相关等等

最后moving certificate to System in keychain这个有用
修改证书访问权限

Well, I got it working. I had to move my certificate from the login keychain to the System keychain. For some reason Jenkins doesn't seem to have the proper authority to access the certificates from the login keychain when they're added by Match.

改了之后的样子

讲道理我的Jenkins slave 是我当前电脑的user用户下的,应该是可以访问login 里的Certification,不知道为啥读取失败。然后slave 确只能从system 的Certification。我想这是和slave的配置ssh连接有关系吧

由此证明我前面的猜想是对的,就是证书读不到的问题。当然了,很多因素都会导致

The following build commands failed: PhaseScriptExecution [CP]\ Embed\ Pods\ Frameworks

这个问题,需要根据自己的实际情况来踩坑。

3. ARCHIVE FAILED 2

    /bin/sh -c /Users/draven/Library/Developer/Xcode/DerivedData/DaZhuanJia-gtosbakglnaxprfkajssnftcmqct/Build/Intermediates.noindex/ArchiveIntermediates/DaZhuanJia/IntermediateBuildFilesPath/DaZhuanJia.build/Release-iphoneos/DaZhuanJia.build/Script-C6C318A78DB9F56436417ECF.sh
error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.

** ARCHIVE FAILED **


The following build commands failed:
    PhaseScriptExecution [CP]\ Check\ Pods\ Manifest.lock /Users/draven/Library/Developer/Xcode/DerivedData/DaZhuanJia-gtosbakglnaxprfkajssnftcmqct/Build/Intermediates.noindex/ArchiveIntermediates/DaZhuanJia/IntermediateBuildFilesPath/DaZhuanJia.build/Release-iphoneos/DaZhuanJia.build/Script-C6C318A78DB9F56436417ECF.sh
(1 failure)
Build step 'Execute shell' marked build as failure
Finished: FAILURE

看报错是pod的问题,然后我操作不同的地方是切换了打包代码的分支


这里我构建的时候切换了分支

然后两个分支的pod.lock状态不一样,所以说pod的错误
我就按照提示在mac-slave 上pod install 了,但是还是报错
于是我就想,可能是pod repo 不一致导致的,我就pod repo update,然后pod install
再次构建就好了

4. 关于工作目录的问题
A.在slave节点配置工作目录的时候,当目录发生改变后,要记得断开与slave的连接,然后在手动连接下,不然会有找不到路劲的问题

B.还有一个问题就是,在一开始设置slave时,有个小技巧.ssh连接remote host时,可以直接连接userName@${remote host} ,不要连接root下的ssh
原因如下:其实我们的电脑本身就有一个ssh(可以理解为用户的意思),然后电脑上有管理员巴拉巴拉的用户(就是我们一般开机登录的那个用户).你连接不同的ssh作为slave其实没有影响,只是后期方便我自己查看工作目录下的文件方便而已(我是直接放当前用户的桌面的)

写在最后,其实Jenkins 的console log是很有用的,一般来说,你根据报错信息从后往前找,不是最后一个command有问题就是这个command 的参数或者上一步的条件有问题,大致方向就是这个吧。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 221,695评论 6 515
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 94,569评论 3 399
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 168,130评论 0 360
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,648评论 1 297
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,655评论 6 397
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 52,268评论 1 309
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,835评论 3 421
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,740评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 46,286评论 1 318
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,375评论 3 340
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,505评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 36,185评论 5 350
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,873评论 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,357评论 0 24
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,466评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,921评论 3 376
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,515评论 2 359

推荐阅读更多精彩内容