Брелок не будет разблокирован из скрипта Jenkins, если пользователь не вошел в систему - PullRequest
31 голосов
/ 20 июня 2011

Я использую сервер Jenkins CI на компьютере с OS X.Сервер работает от имени обычного пользователя john и запускается с помощью launchctl.Одна из вещей, которые выполняет этот сервер, - это создание проектов XCode с использованием ключей и сертификатов, хранящихся в цепочке для ключей 'xcode.keychain':

Jenkins (который выполняется под пользователем 'john' согласно монитору активности) вызывает эти командыиз сценария, когда пользователь нажимает кнопку в веб-интерфейсе.

security default-keychain -s /Users/john/Library/Keychains/xcode.keychain
security unlock-keychain -p password /Users/john/Library/Keychains/xcode.keychain
xcodebuild ...

Если мне случится войти на сервер как 'john' через пользовательский интерфейс, цепочка для ключей будет разблокирована должным образом, когда Jenkins вызывает эти команды,Но, если я не вошел в систему, xcode.keychain не разблокируется и сборка завершается неудачно.Есть идеи?

Ответы [ 4 ]

10 голосов
/ 13 марта 2013

Мне пришлось:

  1. Щелкните правой кнопкой мыши по секретному ключу в моей цепочке для ключей, чтобы мой процесс сборки пытался использовать
  2. Нажмите «Получить информацию»
  3. Затем вкладка «Контроль доступа».
  4. Вы можете добавить определенные приложения (например, «CodeSign») в список приложений, которые разрешен доступ к этому ключу или просто разрешен доступ из всех приложений.

Это прояснило это для меня.

Больше информации в этих комментариях: https://stackoverflow.com/a/12235462/544130 https://stackoverflow.com/a/14761060/544130

5 голосов
/ 18 октября 2011

Недавно я наткнулся на точно такую ​​же проблему.

security list-keychains -s /Users/john/Library/Keychains/xcode.keychain, вероятно, решит вашу проблему.Дайте мне знать, если это работает.

Недавно я нашел решение этой проблемы: Отсутствие сертификатов и ключей в цепочке для ключей при использовании Jenkins / Hudson в качестве непрерывной интеграции для разработки под iOS и Mac

5 голосов
/ 22 сентября 2011

Запуск Дженкинса без запуска работает. Я использовал следующую команду:

sudo su jenkins -c "JENKINS_HOME=/Users/Shared/Jenkins/Home /Library/Application\ Support/Jenkins/jenkins-runner.sh"
0 голосов
/ 02 апреля 2012

Вы можете попробовать Jenkins.app , альтернативный способ запуска Jenkins. Он запускает Jenkins в сеансе пользователя, поэтому связка ключей не должна быть проблемой.

...