Jenkins 上的代码签名资源规则路径失败,CODE_SIGN_RESOURCE_RULES_PATH
Posted
技术标签:
【中文标题】Jenkins 上的代码签名资源规则路径失败,CODE_SIGN_RESOURCE_RULES_PATH【英文标题】:Code Signing Resource Rules Path fails on Jenkins, CODE_SIGN_RESOURCE_RULES_PATH 【发布时间】:2015-09-03 08:21:33 【问题描述】:我不太关心人们如何对待以下问题。
基本上听起来像“使用ResourceRules.plist: cannot read resources
在 Jenkins 上构建失败”
我的情况是:
1) 詹金斯
2) 在本地,我在 Xcode 7 beta 中工作(在一个单独的分支上)
3) 我的队友在 6.4.1 中工作,对他们来说一切正常
4) Jenkins slave 已安装 Xcode 6.4.1
有些人会说“这个问题被问了数百万次”,例如here、here、here、here。
但是documentation 表示如下:
资源规则
OS X Mavericks v10.9 之前的系统记录了一个签名功能 (--resource-rules) 来控制捆绑包中的哪些文件应由代码签名密封。此功能已被 Mavericks 淘汰。在 Mavericks 和后来的代码签名总是将所有文件密封在一个包中;不再需要明确指定这一点。这也意味着 Xcode 中的 Code Signing Resource Rules Path 构建设置不应再使用,应留空。
所以我的问题是,为什么每个人都如此迅速地绕过、破解、解决这个问题,而文档清楚地表明它应该是空白的并且已经过时了?
这背后的真正问题是什么?为什么在几年不需要的东西上构建失败?
【问题讨论】:
我确认,这种解决方法不适用于 Xcode 7。最近的更新破坏了一切,真是太糟糕了。 【参考方案1】:我遇到了同样的问题。 Mr.Dan Cutting here 建议的解决方案对我有用。
为了节省一些时间,这里是我们需要的网络链接。
“从 Mavericks 开始,在签署应用程序时不应包含资源规则选项,但由于某种原因,脚本仍将此选项传递给代码签名工具。
解决方法是更改 PackageApplication 脚本,使其不再执行此操作(这将需要 sudo 访问权限)。脚本的第 155 行构造了要传递给代码签名者的参数,因此我们可以简单地删除对资源规则的引用:"
//Remove - Begin
- my @codesign_args = ("/usr/bin/codesign", "--force", "--preserve-metadata=identifier,entitlements,resource-rules",
- "--sign", $optsign,
- "--resource-rules=$destApp/ResourceRules.plist");
//Remove - End
//Add - Begin
+ my @codesign_args = ("/usr/bin/codesign", "--force", "--preserve-metadata=identifier,entitlements",
+ "--sign", $optsign);
//Add - Starts
【讨论】:
【参考方案2】:如果您使用的是 Xcode 6.1 以上版本,请更改以下行
$(SDKROOT)/ResourceRules.plist
到 CODE_SIGN_RESOURCE_RULES_PATH=$(SDKROOT)/ResourceRules.plist
【讨论】:
以上是关于Jenkins 上的代码签名资源规则路径失败,CODE_SIGN_RESOURCE_RULES_PATH的主要内容,如果未能解决你的问题,请参考以下文章
Jenkins构建失败,因为它正在查找执行junit测试时在logback.xml中定义的日志路径