Наша автоматизована збірка працює на Jenkins. Сама збірка працює на рабах, причому раби виконуються через SSH.
Я отримую помилку:
00:03:25.113 [codesign-app] build/App.app: User interaction is not allowed.
Я намагався всі пропозиції, які я бачив до цього часу, в інших публікаціях тут:
- Використання розблокування брелока безпеки безпосередньо перед підписанням, щоб розблокувати брелок.
- Переміщення ключа для підписання у власну брелок.
- Переміщення ключа підпису в брелок для входу.
- Переміщення ключа підпису в системний брелок.
- Ручне встановлення списку-брелок лише на брелок, який містить ключ.
У всіх випадках я отримую однакову помилку.
Намагаючись діагностувати проблему, я спробував запустити команду "розблокувати брелок безпеки" на своєму локальному терміналі і виявив, що вона фактично не розблоковує брелок - якщо я заглянув у Keychain Access, символ блокування все ще є. Це так, чи я передаю пароль у командному рядку, чи дозволяю мені запросити мене до нього. Якщо розблокувати той самий брелок за допомогою графічного інтерфейсу, мені буде запропоновано ввести пароль, а потім розблокувати його. Крім того, якщо я біжу «безпеки з замком-брелок», я зробити побачити блокування відразу після запуску команди. Це змушує мене думати, що брелок розблокування насправді не працює. Я відчуваю таку саму поведінку на 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 у startctl. Але я не будую на майстра - мій процес збирання запускається з SSH на машині для складання підлеглих. Можливо, є командний рядок способу зробити те, що запускається, коли ви запускаєте "SessionCreate"?