Проведя часы и дни с этой проблемой, я нашел довольно простое решение этой проблемы.Не имеет значения, если в вашей конфигурации launchd указано другое имя пользователя, как указано выше:
<key>UserName</key>
<string>user</string>
Отсутствующие сертификаты и ключи должны быть в системной цепочке ключей (/Library/Keychains/System.keychain
).Я нашел это после того, как настроил задание jenkins, которое выполняет несколько вызовов оболочки security
.Интересен тот, который security list-keychains
:
+ security list-keychains
"/Library/Keychains/System.keychain"
"/Library/Keychains/applepushserviced.keychain"
"/Library/Keychains/System.keychain"
. Это цепочки ключей, которые Дженкинс будет искать сертификаты и ключи, поэтому они должны быть там.После того, как я перенес свои сертификаты туда, это работает.Убедитесь, что вы также скопировали сертификат «Apple Worldwide Developer Relations Certification Authority» в системную цепочку ключей, в противном случае вы увидите ошибку CSSMERR_TP_NOT_TRUSTED
из codesign
.
Также можно зарегистрировать больше цепочек для ключей с помощью security list-keychains -s [path to additional keychains]
.Я не пробовал, но что-то вроде security list-keychains -s $HOME/Library/Keychains/login.keychain
, так как может сработать выполнение оболочки до сборки в jenkins.
РЕДАКТИРОВАТЬ: Я пытался добавить цепочку ключей пользователя в поискпуть с -s
, но я не смог заставить его работать.Поэтому сейчас нам нужно скопировать наши сертификаты и ключи в системную цепочку ключей.
РЕДАКТИРОВАТЬ ^ 2: Читать и использовать joensson ' solution вместо моего, онему удалось получить доступ к цепочке для ключей пользователей, а не только к системной цепочке для ключей.