Я запускаю сервер 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 не разблокируется и сборка не выполняется. Любые идеи?