Запуск xcodebuild с разветвленного терминала - PullRequest
58 голосов
/ 23 февраля 2009

Я пытаюсь настроить сервер автоматической сборки для приложения iPhone. Я хотел бы иметь возможность проводить ночные бета-тесты adhoc, чтобы тестировщики могли следить за разработкой.

Я успешно установил xcode xcode для выполнения adhoc-сборок, и я также могу запустить сборку из командной строки:

xcodebuild -configuration AdHoc -sdk iphoneos2.2 clean build

Проблема, с которой я столкнулся, заключается в том, что следующая строка не работает с разветвленного терминала (с использованием nohup или screen) и завершилась ошибкой со следующим

Ошибка CodeSign: идентификатор подписи кода «Распространение iPhone: XXXXX» не соответствует ни одному сертификату подписи кода в вашей цепочке для ключей. После добавления в цепочку для ключей коснитесь файла или очистите проект, чтобы продолжить.

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

Спасибо за вашу помощь

Ответы [ 13 ]

2 голосов
/ 23 февраля 2009

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

$ security list-keychains
  "/Users/yannooo/Library/Keychains/login.keychain"
  "/Library/Keychains/System.keychain"

, тогда как при использовании screen у меня есть следующий вывод:

$ security list-keychains
    "/Library/Keychains/System.keychain"
    "/Library/Keychains/System.keychain"

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

Кто-нибудь знает, как я могу назначить связку ключей терминалу? Я попробовал это без успеха

security login-keychain -s /Users/yannooo/Library/Keychains/login.keychain

Есть идеи?

1 голос
/ 25 февраля 2009

Если вы выполняете xcodebuild от имени пользователя root (которым вы пользуетесь при выполнении sudo), вам необходимо войти в систему как пользователь root и поместить сертификаты подписи в цепочку ключей root. Затем разблокируйте брелок с безопасностью, как указано выше.

0 голосов
/ 16 апреля 2012

Я сделал:

  • удалить login.keychain из списка

  • создать собственную цепочку для ключей в $HOME/Library/Keychains/

  • добавить его в список цепочки для ключей (я не указал какой-либо конкретный домен)

  • установить его по умолчанию

  • звонок security unlock-keychain на нем

  • добавить к нему сертификат глобальной подписи (WWDRCA)

  • импорт закрытого ключа и сертификатов разработки и распространения к нему

Если есть login.keychain, я все еще получаю ошибку «Взаимодействие с пользователем не разрешено». Таким образом, удаление login.keychain с использованием security delete-keychain наконец помогло!

...