2017-02-12 15 views
1

У меня есть Jenkins CI, настроенный на Mac Sierra для создания приложений iOS с использованием Xcode 8.2 с автоматической подпиской. Все работает хорошо при создании с использованием Xcode в качестве разработчика. Однако, Jenkins с помощью xcodebuild не удается следующим:Jenkins iOS строит на Mac Sierra сбой во время xcodebuild 8.2 подписание кода (SecKey API вернулся -25308)

SecKey API returned: -25308, (null)/Users/Shared/Jenkins/Home/workspace/App/build/Build/Intermediates/ArchiveIntermediates/App/InstallationBuildProductsLocation/Applications/App.app/Frameworks/GTMSessionFetcher.framework: unknown error -1=ffffffffffffffff 

Я последовал совету в security/codesign in Sierra: Keychain ignores access control settings and UI-prompts for permission, но безрезультатно.

Я попытался поставить как секретные ключи, так и сертификаты в системный брелок, но безрезультатно.

Если я вхожу в систему как пользователь Jenkins и запускаю команду codeign вручную, я всегда разрешаю доступ к цепочке ключей и работает многократно. Однако работа, выполняемая Jenkins CI, не работает. (Мастер Jenkins - это Mac, и я использую этот же Mac для сборки.)

Ошибка упоминается в CMSAMSGETSEFetcher. Это как-то связано с CocoaPods?

Любые идеи будут оценены.

ответ

3

У меня возникла одна и та же проблема, и я совершенно уверен, что это не имеет никакого отношения к CocoaPods, ее кодовому вопросу. Некоторые из вещей, которые я сделал:

  1. Убедитесь, что у меня нет дубликатов записей в цепочке ключей. Этот post был полезен для этого. Оказалось, что у меня была одна запись, дублированная.

  2. Убедитесь, что закрытые ключи разрешено для всех приложений, как описано here

  3. Попробуйте this (быть в курсе, что с MacOS Sierra login.keychain изменился на login.keychain-дб), который это второй ответ в упомянутом вами совете, но он не работает.

  4. Переведите как закрытые ключи, так и сертификаты в системный брелок (оставляя только сертификаты на цепочке логина входа). Этот последний шаг был тем, что заставило все работать.

В случае, если это не помогает, вы можете попробовать, чтобы разблокировать логин брелка вручную в вашем Дженкинс работу (что сделал трюк для меня, прежде чем я переехал ключи сертификаты для системы брелка):

node("macOS-sierra") { 

    ......... 

    stage("Build"){ 
    sh 'security unlock-keychain -p KEYCHAIN_PASS "/Users/YOUR-CI-USER/Library/Keychains/login.keychain-db" && fastlane beta' 

    } 

Вы можете проверить брелки с этим:

$ security list-keychains 
+0

2. решить это для меня => CodeSign - всегда много веселья ;-) – d4Rk

+0

В конце концов, у меня был дублированный серт. После удаления всех и повторного добавления он снова работает! Большое спасибо за все эти советы ... очень полезно! –

 Смежные вопросы

  • Нет связанных вопросов^_^