代码签名资源规则路径在Jenkins上失败,CODE_SIGN_RESOURCE_RULES_PATH

时间:2015-09-03 08:21:33

标签: ios xcode continuous-integration xcodebuild

我很少关心人们如何对待以下问题。

基本上它听起来像“使用ResourceRules.plist: cannot read resources

在Jenkins上构建失败

我的情况是:

1)詹金斯

2)本地我在Xcode 7 beta(在一个单独的分支上)工作

3)我的队友在6.4.1工作,对他们来说一切正常

4)Jenkins slave已安装Xcode 6.4.1

有些人会说“这个问题被问了数百万次”,例如herehereherehere

documentation说明以下内容:

  

资源规则

     

OS X之前的系统Mavericks v10.9记录了一个签名功能(--resource-rules)来控制捆绑中的哪些文件应该由代码签名密封。此功能已被淘汰为小牛队。在Mavericks中进行代码签名,之后总是将所有文件密封在一起;没有必要再明确指定它。这也意味着不再使用Xcode中的代码签名资源规则路径构建设置,应该留空。

所以我的问题是为什么每个人都可以快速绕过,破解,解决这个问题,当文档明确说明应该是空白的并且它已经过时了?

这背后的真正问题是什么?为什么构建失败了几年不需要的东西?

2 个答案:

答案 0 :(得分:5)

我遇到了同样的问题。丹切割先生here建议的解决方案适合我。

为了节省一些时间,我们需要通过网络链接。

"从Mavericks开始,签名应用时不应包含资源规则选项,但由于某种原因,脚本仍会将此选项传递给代码签名工具。

解决方法是更改​​PackageApplication脚本,使其不再执行此操作(这将需要sudo访问权限)。脚本的第155行构造参数以传递给代码签名者,因此我们可以简单地删除对资源规则的引用:"

//Remove - Begin
    - my @codesign_args = ("/usr/bin/codesign", "--force", "--preserve-metadata=identifier,entitlements,resource-rules",
    -   "--sign", $opt{sign},
    -   "--resource-rules=$destApp/ResourceRules.plist");
//Remove - End

//Add - Begin
    + my @codesign_args = ("/usr/bin/codesign", "--force", "--preserve-metadata=identifier,entitlements",
    +   "--sign", $opt{sign});
//Add - Starts

答案 1 :(得分:2)

如果您使用的是大于6.1的Xcode版本,请更改以下行

$(SDKROOT)/ResourceRules.plist

要 CODE_SIGN_RESOURCE_RULES_PATH = $(SDKROOT)/ResourceRules.plist