Файл обеспечения xcode не найден в Jenkins - PullRequest
2 голосов
/ 30 августа 2011

У меня успешно работает xcodebuild через ant.Если я ssh в систему и запускаю сборку, она работает нормально.Однако, когда та же самая цель муравья вызывается через Jenkins (работает как подчиненный на Mac), она завершается неудачно с классическим

Code Sign error: a valid provisioning profile matching the application's Identifier 'xxx.xxx.xxx' could not be found" 

. Пытаясь заставить его работать, я попытался запустить его черезsudo ant 'call, и, конечно, это вызывает ту же ошибку.Локальный пользователь и root отображают один и тот же $ PATH, так что проблема не в этом.Я не вижу способа изменить среду или изменить пользователя, которого вызывает Дженкинс.Должен быть кто-то еще, кто решил это - любая помощь будет оценена.

Ответы [ 3 ]

2 голосов
/ 05 января 2012

У меня было что-то похожее, но, возможно, немного другое. Я мог запустить xcodebuild из командной строки, и он бы правильно подписал приложение. Тем не менее, в Дженкинс я бы получил ошибку вроде:

[BEROR]Code Sign error: The identity 'iPhone Distribution' doesn't match any valid certificate/private key pair in the default keychain

Работало нормально, но что-то изменилось (я не уверен, что) и перестало работать. Я перепробовал миллиард вещей, но в итоге исправил, скопировав пару «сертификат / ключ» в Keychain Access в цепочку ключей «System» (ранее это было только в цепочке ключей входа).

Я использую Xcode 4.2, который может быть или не быть значимым.

EDIT:

Нашел решение для моей проблемы: добавьте в начало своего скрипта jenkins следующее:

список цепочек ключей безопасности -s /Users/[user]/Library/Keychains/login.keychain

"-s" выбирает цепочку для ключей, которую вы хотите использовать для этой оболочки. Смущает, что аргументом команды безопасности является «list-keychains», но это то, что он делает ...

2 голосов
/ 31 августа 2011

Я столкнулся с чем-то вроде этого - не знаю, если это то же самое. Но когда вы запускаете Jenkins, вы запускаете его от имени пользователя или от имени пользователя root? В первый раз, когда я начал с Jenkins, я запустил его, запустив sudo java -jar jenkins.war, и получил ту же ошибку Code Sign. Когда я запускал его без 'sudo', он работал нормально. Не уверен на 100% почему. Может быть, это связано с тем, что сертификат связан только с пользователем?

0 голосов
/ 05 октября 2011

В качестве обходного пути вы можете импортировать сертификат в командной строке перед запуском xcode:

security import Cert.p12 -P password -k ~/Library/Keychains/login.keychain -A -T /usr/bin/codesign
...