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/bin

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

备份完毕

找到 codesign_args

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都是出现各种新鲜花样的问题,但是问题还是在掌控之中能够处理的,大家仅以慰藉,希望能对大家有所帮助。

时间: 2024-10-24 12:18:11

jenkins 自动化打包 ipa 的 一些坑的相关文章

iOS Jenkins 自动化打包构建

前言 在测试app项目过程中,通常都是需要开发打测试包给到测试,但是无论是iOS还是Android的打包过程都是相当漫长的,频繁的回归测试需要频繁的打包,对于开发同学影响还是蛮大的.因此在这种情况下,开发通常都会搭建一个简单的自动化打包平台(Jenkins),自动化构建打包或者上传到蒲公英,firm等分发平台.作为测试也需要了解相关的知识,因为这些工作也有可能测试来做或推动开发去做相关的工作,用以优化提高开发测试效率. 涉及技术点: Jenkins的搭建配置,任务构建 iOS开发环境配置 iOS

iOS自动化探索(九)使用Jenkins自动化打包并发布iOS App

继前一篇: Mac环境下安装Jenkins Jenkins安装好后, 我们试着创建一个iOS自动打包并发布的任务 iOS App构建必须在MAC上面使用xcode进行,所以我们要安装下xcode集成插件 在Jenkins首页选择系统管理 选择插件管理 搜索xcode, 安装Xcode integration插件 勾上安装后重启, 等待结束 如果出现安装进度条在最后一点卡很近, 手动重启下Jenkins然后到已安装插件中检查是否已经安装了 安装好插件后下面我们开始创建任务 首先点击新建任务 输出任

Jenkins自动化打包--war包

一.需求 Jenkins大多数情况下都是用来部署Java项目,Java项目有一个特点是>需要编译和打包的,一般情况下编译和打包都是用maven完成,所以系统环境中需要安装maven.因本公司仓库使用svn,这里通过svn部署. 二.实验环境 三.实验步骤 1.安装插件 "系统管理"--"管理插件"--"可选插件" Java 项目所需插件下载 2.安装打包工具maven (1)软件下载 wget http://mirror.bit.edu.c

gitlab+jenkins自动化打包IOS

实现的效果如图: 安卓: IOS: 功能说明: 因为搭建平台写了一系列博文,这里作一个总结与整理 具体的配置: 首先jenkins需要的插件: build-name-setter:用于修改Build名称 description setter plugin:用于在修改Build描述信息,在描述信息中增加显示QRCode(二维码) Build Name and Description Setter Git Parameter 参数化构建分支 1.MAC搭建jenkins 注意:直接下载war包, 不

Mac下Unity使用Jenkins自动化打包

重要的事情说三遍:不要使用jenkins dmg安装包直接安装,用brew安装  PS:会有权限问题 重要的事情说三遍:不要使用jenkins dmg安装包直接安装,用brew安装 重要的事情说三遍:不要使用jenkins dmg安装包直接安装,用brew安装 https://www.xuanyusong.com/archives/3349   宣雨松 原文地址:https://www.cnblogs.com/MuniuTian/p/10452024.html

nity3D自动打包ipa

接着上一篇文章, 自动生成framework,这篇文章我把shell自动化打包ipa整理了一下,希望大家喜欢,嘿嘿.. 建议大家先看一下上一篇文章.http://www.xuanyusong.com/archives/2720 首先我们要先搞清楚nity全自动打包的重要步骤. 1.自动生成xcode工程. 2.自动生成.ipa和dsym文件. 3.上传appstore(本篇略) 首先我们在做渠道包时,一般每个渠道都有自己一些特殊的需求,比如 游戏名子 .游戏图标.SDK.等等.那么我在在做自动化

Mac Jenkins+fastlane 简单几步实现iOS自动化打包发布

最近在使用jenkins 实现ios自动化打包发布蒲公英过程实践遇到了一些坑,特意记录下来方便有需要的人. 进入正题: 一.安装Jenkins 1.Mac上安装Jenkins 遇到到坑 因为 Jenkins 的pkg安装包默认安装位置为shared文件夹,后续会遇到权限问题,所以放弃pkg安装.(说明:也许是安装时选择了本机所有用户可用的原因) 如果已经使用pkg文件方式安装了,卸载方法:找到该文件 /Library/Application Support/Jenkins/Uninstall.c

Jenkins+私有git+Xcode打包ipa总结

借鉴博客: [手把手教你利用Jenkins持续集成iOS项目](http://www.jianshu.com/p/41ecb06ae95f) [Jenkins 总结 :Mac上git iOS 自动打包](http://www.jianshu.com/p/8d4452c6f17e) 前言: 最近需要研究Jenkins打包,网上的博客很多,但借鉴过程中难免出现不适合自己的情况,下面是我基于上述借鉴博客,经历一些坑之后使用Jenkins+私有git+Xcode环境打包ipa 安装 我这里的安装是去[官

Jenkins+ Xcode+ 蒲公英 实现IOS自动化打包和分发

Jenkins+ Xcode+ 蒲公英 实现IOS自动化打包和分发 直接入正题: Screen Shot 2015-09-18 at 16.56.20.png Mac上安装Jekins jekins下载地址:http://jenkins-ci.org/ ,选择Mac 直接安装.安装成功后.访问http://localhost 是否可正常访问. 安装Jekins相关插件 证书管理插件1.https://wiki.jenkins-ci.org/display/JENKINS/Keychains+an