Сборка проекта Xcode с Jenkins дает ошибку кодового знака - PullRequest
0 голосов
/ 28 ноября 2018

Я пытаюсь построить проект Xcode с Дженкинсом.Проект для Xcode, созданный Unity Engine.Я могу построить этот проект непосредственно из графического интерфейса XCode, но при попытке построить проект через Jenkins я получаю следующую ошибку в конце сборки:

Signing Identity:     "iPhone Developer: MyName MySurname (XXXXXXXXXX)"
Provisioning Profile: "iOS Team Provisioning Profile: *"
                      (XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXX)

/usr/bin/codesign --force --sign 37DF6AF254E5A4856B1BA024D199DEE3CE596A58 --entitlements /Users/Shared/Jenkins/Home/workspace/Xcode_Input/build/Unity-iPhone.build/Release-iphoneos/Unity-iPhone.build/myapplication.app.xcent --timestamp=none /Users/Shared/Jenkins/Home/workspace/Xcode_Input/build/Release-iphoneos/myapplication.app
/Users/Shared/Jenkins/Home/workspace/Xcode_Input/build/Release-iphoneos/myapplication.app: errSecInternalComponent
Command CodeSign failed with a nonzero exit code

** BUILD FAILED **


The following build commands failed:
    CodeSign /Users/Shared/Jenkins/Home/workspace/Xcode_Input/build/Release-iphoneos/myapplication.app
(1 failure)
Build step 'Xcode' marked build as failure
Finished: FAILURE

Я попытался воспроизвести следующую команду в терминале,и он проснулся нормально без каких-либо ошибок:

/usr/bin/codesign --force --sign 37DF6AF254E5A4856B1BA024D199DEE3CE596A58 --entitlements /Users/Shared/Jenkins/Home/workspace/Xcode_Input/build/Unity-iPhone.build/Release-iphoneos/Unity-iPhone.build/myapplication.app.xcent --timestamp=none /Users/Shared/Jenkins/Home/workspace/Xcode_Input/build/Release-iphoneos/myapplication.app

Он запросил у меня пароль два раза (и тот же пароль, указанный в настройках задания Jenkins для XCode), и завершил без ошибок.

Цепочка для ключей, которую я использовал, чтобы подписать проект, разблокирована: security unlock-keychain login.keychain

Вопрос - что может быть причиной следующего поведения?Как я могу решить эту проблему?

Заранее спасибо!

1 Ответ

0 голосов
/ 15 января 2019

Дженкинс входит в систему и не получает доступ к вашей цепочке для ключей.Дженкинс должен разблокировать связку ключей перед выполнением сборки.Похоже, вы уже понимаете, как разблокировать брелок с помощью пароля.Вам нужно, чтобы Дженкинс выполнил разблокировку без запроса.

Пусть Дженкинс запустит перед вашей командой сборки следующее:

security unlock-keychain -p <YourPassword> ~/Library/Keychains/login.keychain

Если вы не хотите хранитьпароль в области сценариев открытого текста вашей сборки Jenkins предлагает различные способы хранения секретов и извлечения их в виде переменных.Вот достойное описание этого: https://support.cloudbees.com/hc/en-us/articles/203802500-Injecting-Secrets-into-Jenkins-Build-Jobs

В качестве альтернативы:

security unlock-keychain -p `cat ~/.file_with_your_password` ~/Library/Keychains/login.keychain 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...