成都网站建设设计

将想法与焦点和您一起共享

jenkins自动化打包ipa的一些坑-创新互联

公司申请了一台 mac mini 本来是用来方便iOS专属打包,而搭建Jenkins自动发布平台的,但是鉴于领导是android控 于是乎 对 mac mini 配置进行 大大改造 以至于 本来好好的 iOS项目的打包功能 也陷入瘫痪(关键你改了 你说一声,你也不吭声)。。。。

专注于为中小企业提供成都做网站、成都网站设计服务,电脑端+手机端+微信端的三站合一,更高效的管理,为中小企业丛台免费做网站提供优质的服务。我们立足成都,凝聚了一批互联网行业人才,有力地推动了数千家企业的稳健成长,帮助中小企业通过网站建设实现规模扩充和转变。

  好吧接下来说问题,

  开始自动化编译ipa,哗哗打印日志 突然

error: /usr/bin/codesign --force --preserve-metadata=identifier,entitlements,resource-rules --sign iPhone Distribution: **** --resource-rules=/var/folders/zy/9qwmy3j50qb2g8pbtj9hxyvm000086/T/HjWeg6NTbj/Payload/****.app/ResourceRules.plist --entitlements /var/folders/zy/9qwmy3j50qb2g8pbtj9hxyvm000086/T/HjWeg6NTbj/entitlements_plistGMvHUypG /var/folders/zy/9qwmy3j50qb2g8pbtj9hxyvm000086/T/HjWeg6NTbj/Payload/******.app failed with error 1. Output: Warning: usage of --preserve-metadata with option "resource-rules" (deprecated in Mac OS X >= 10.10)!
Warning: --resource-rules has been deprecated in Mac OS X >= 10.10!

问题来了,在 Mac OS X >= 10.10 的系统中 针对 /ResourceRules.plist 的检测已经废弃了,

对比

于是乎 Mac OS X >= 10.10 的系统中并且 xcode 8 build环境 ,build ****.app 的时候 没有了ResourceRules.plist

但是 xcode 8 的 内部的一个 负责打包的可执行脚本 还是要检测ResourceRules.plist 来打包程序,结果找不到,所以报错,卡卡卡。。

解决方案 这样 打开路径 /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/binjenkins 自动化打包 ipa 的 一些坑

打开 编辑之前 建议将原脚本 备份一下,省的出什么幺蛾子。

备份完毕

找到 codesign_args

jenkins 自动化打包 ipa 的 一些坑

look 签名时 检测 了 --resource-rules=$destApp/ResourceRules.plist 可但是 .app 文件内并无此文件,

所以对这个变量稍作修改了,

修改如下

 my @codesign_args;
   if (-e '$destApp/ResourceRules.plist') { # If ResourceRules.plist exists, include it in codesign arguments, for backwards compatability
       @codesign_args = ("/usr/bin/codesign", "--force", "--preserve-metadata=identifier,entitlements,resource-rules",
                        "--sign", $opt{sign},
                        "--resource-rules=$destApp/ResourceRules.plist");
   } else { # If ResourceRules.plist isn't found, don't include it in the codesign arguments
       @codesign_args = ("/usr/bin/codesign", "--force", "--preserve-metadata=identifier,entitlements",
                        "--sign", $opt{sign});
   }

规避 ResourceRules.plist 的检测 打包;

如上就是解决

error: /usr/bin/codesign --force --preserve-metadata=identifier,entitlements,resource-rules --sign iPhone Distribution: **** --resource-rules=/var/folders/zy/9qwmy3j50qb2g8pbtj9hxyvm000086/T/HjWeg6NTbj/Payload/****.app/ResourceRules.plist --entitlements /var/folders/zy/9qwmy3j50qb2g8pbtj9hxyvm000086/T/HjWeg6NTbj/entitlements_plistGMvHUypG /var/folders/zy/9qwmy3j50qb2g8pbtj9hxyvm000086/T/HjWeg6NTbj/Payload/******.app failed with error 1. Output: Warning: usage of --preserve-metadata with option "resource-rules" (deprecated in Mac OS X >= 10.10)!
Warning: --resource-rules has been deprecated in Mac OS X >= 10.10!

问题 如果问题还是没有解决

多看看 是不是证书和签名的问题 避免 签名证书 存放到 系统钥匙串中,一定要存放到登录钥匙串中!!!而且尽量只存在一个证书(开发或者生产的,避免jenkins找不到该使用哪一个), 同时还有删除一些 无用的私钥,这也是是一个容易被忽略的坑 ;

一般咱们在自己的mac上编译打包的时候,在打包过程中会提示 “是否允许访问私钥” 一般选择 “总是允许”,但是鉴于jenkins是远程自动化打包,所以事先要对所使用的证书的私钥设置成“允许所有程序访问”,当然了取决于 所处环境的安全策略要求了。。

如下图

jenkins 自动化打包 ipa 的 一些坑

jenkins 自动化打包 ipa 的 一些坑

如此即可。。

其实以上都是一些老生常谈的问题,但是不管操作过多少次,每次使用jenkins都是出现各种新鲜花样的问题,但是问题还是在掌控之中能够处理的,大家仅以慰藉,希望能对大家有所帮助。

另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


网站名称:jenkins自动化打包ipa的一些坑-创新互联
链接URL:http://chengdu.cdxwcx.cn/article/eodji.html