«Взаимодействие с пользователем не разрешено», пытаясь подписать приложение OSX с помощью кодового знака

Наша автоматизированная сборка работает на Jenkins. Сама сборка выполняется на подчиненных, причем подчиненные выполняются через SSH.

Я получаю ошибку:

00:03:25.113 [codesign-app] build/App.app: User interaction is not allowed.

Я попробовал каждое предложение, которое я видел до сих пор в других сообщениях здесь:

Использование безопасности unlock-keychain непосредственно перед подписью для разблокировки цепочки для ключей.Перемещение подписывающего ключа в собственную цепочку для ключей.Перемещение подписывающего ключа в связку ключей входа.Перемещение ключа подписи в системную связку ключей.Ручная установка списков-цепочек для ключей только для той цепочки для ключей, которая содержит ключ.

Во всех случаях я получаю одну и ту же ошибку.

В попытке диагностировать проблему, я попытался выполнить команду «security unlock-keychain» на своем локальном терминале и обнаружил, что она фактически не разблокирует цепочку для ключей - если я смотрю в Keychain Access, символ блокировки все еще там. Это тот случай, когда я передаю пароль в командной строке или разрешаю ему запрашивать его. Разблокировка той же цепочки для ключей с помощью графического интерфейса предложит мне ввести пароль, а затем разблокировать его. Кроме того, если я запускаю «security lock-keychain», яделать увидеть блокировку ключа сразу после запуска команды. Это заставляет меня думать, что unlock-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 на подчиненной сборочной машине. Может быть, есть способ командной строки сделать то, что делает launchctl, когда вы запускаете "SessionCreate"?

Ответы на вопрос(2)

Ваш ответ на вопрос