Правила ресурса подписи кода. Путь не работает на Jenkins, CODE_SIGN_RESOURCE_RULES_PATH

Я мало беспокоюсь о том, как люди относятся к следующей проблеме.

В основном это звучит так: "Сбой сборки у Дженкинса с помощью ResourceRules.plist: cannot read resources"

Мои обстоятельства:

1) Дженкинс

2) Локально я работаю в Xcode 7 beta (на отдельной ветке)

3) Мои товарищи по команде работают в 6.4.1, и для них все отлично работает

4) Slave Jenkins имеет установленный Xcode 6.4.1

Некоторые из вас скажут, что "этот вопрос задавали миллионы раз", например здесь, здесь, здесь, здесь.

Но документация сообщает следующее:

Правила ресурса

Системы до OS X Mavericks v10.9 задокументировали функцию подписи (--resource-rules), чтобы контролировать, какие файлы в пакете должны быть запечатаны сигнатурой кода. Эта функция была устарела для Mavericks. Подписи кодов, сделанные в Mavericks, а затем всегда запечатывают все файлы в комплекте; нет необходимости указывать это явно. Это также означает, что параметр построения пути правил правил подписи кода в Xcode больше не должен использоваться и должен оставаться пустым.

Итак, мой вопрос в том, почему все так быстро под рукой, чтобы обойти, взломать, решить эту проблему, когда в документации четко сказано, что это должно быть пустым и устаревшим?

Какова реальная проблема? Почему сборка выходит из строя на том, что не требуется в течение нескольких лет?

Ответ 1

У меня была та же проблема. Решение, предложенное Mr.Dan Cutting здесь, работает для меня.

Просто чтобы сэкономить время, вот что нам нужно из веб-ссылки.

"Что касается Mavericks, параметр правил ресурса не должен включаться при подписании приложений, но по какой-то причине script по-прежнему передает эту опцию вместе с инструментом подписи кода.

Обходной путь заключается в том, чтобы изменить PackageApplication script, чтобы он больше не выполнял этого (что потребует доступа sudo). Строка 155 из script строит параметры, которые нужно передать кодовому подписавшему, поэтому мы можем просто удалить ссылки на правила ресурсов: "

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

Ответ 2

Если вы использовали версию Xcode больше 6.1, измените нижнюю строку

$(SDKROOT)/ResourceRules.plist

К CODE_SIGN_RESOURCE_RULES_PATH = $(SDKROOT)/ResourceRules.plist