Подтвердить что ты не робот

Брелок не будет разблокировать Jenkins script, если пользователь не вошел в систему

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

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

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

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

4b9b3361

Ответ 1

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

sudo su jenkins -c "JENKINS_HOME=/Users/Shared/Jenkins/Home /Library/Application\ Support/Jenkins/jenkins-runner.sh"

Ответ 2

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

  • Щелкните правой кнопкой мыши на закрытом ключе в моей цепочке ключей, чтобы мой процесс сборки пытался использовать
  • Нажмите "Получить информацию"
  • Затем вкладку "Контроль доступа".
  • Вы можете добавить определенные приложения (например, "codeign" ) в список приложений, которые разрешается доступ к этому ключу или разрешается только доступ из всех приложений.

Это очистило меня для меня.

Дополнительная информация в этих комментариях: fooobar.com/questions/47411/... fooobar.com/questions/47411/...

Ответ 3

Я наткнулся на тот же самый вопрос недавно.

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

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

Ответ 4

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