Наша автоматическая сборка работает на Jenkins. Сама сборка работает на подчиненных устройствах, причем подчиненные устройства выполняются через SSH.
Я получаю сообщение об ошибке:
00:03:25.113 [codesign-app] build/App.app: User interaction is not allowed.
Я пробовал все предложения, которые я видел до сих пор в других сообщениях:
- Использование ключа разблокировки безопасности разблокировки непосредственно перед подписанием, чтобы разблокировать цепочку ключей.
- Перемещение ключа подписи в его собственную цепочку ключей.
- Перемещение ключа подписи в цепочку ключей входа в систему.
- Перемещение ключа подписи в системную цепочку ключей.
- Ручная настройка списка-цепочек ключей только к цепочке ключей, содержащей ключ.
Во всех случаях я получаю ту же ошибку.
В попытке диагностировать проблему я попытался запустить команду "разблокировать ключ безопасности" на моем локальном терминале и обнаружил, что она фактически не разблокирует цепочку ключей - если я смотрю в Keychain Access, символ блокировки по-прежнему там. В этом случае я передаю пароль в командной строке или могу ли я дать ему запрос на это. Разблокировка одной и той же брелка с помощью GUI подскажет мне пароль и затем разблокирует его. Кроме того, если я запустил "lock-keychain безопасности", я вижу блокировку клавиш сразу после запуска команды. Это заставляет меня думать, что разблокировка-брелок фактически не работает. Я испытываю такое же поведение на Lion (которое мы используем для подчиненных рабов) и Mavericks (которое я разрабатываю).
Затем я попытался добавить -v ко всем командам безопасности:
list-keychains "-d" "system" "-s" "/Users/tester/.secret/App.keychain"
Listing keychains to see if it was added: ((
"/Library/Keychains/System.keychain"
))
unlock-keychain "-p" "**PASSWORD**" "/Users/tester/.secret/App.keychain"
build/App.app: User interaction is not allowed.
Из этого, казалось бы, список-брелки - это то, что не работает. Может быть, и не работа.:/
Здесь есть аналогичный вопрос. Решение интересное - установите значение "SessionCreate" в значение true в launchctl. Но я не строил мастер - мой процесс сборки запускается с SSH на ведомой машине. Может быть, есть способ командной строки делать то, что запускает, когда вы запускаете "SessionCreate"?