设想:
在我们的 TeamCity 构建完成后,我有一个需要使用 TeamCity 签名的 .pkg 文件。
理想情况下,这可能是最后运行的构建步骤或脚本。经过研究,我尝试了以下方法:
脚本输入:
security import applicationkey.p12 -k login.keychain -P "password"
security import installerkey.p12 -k login.keychain -P "password"
security -v unlock-keychain -p "password" /Users/administrator/Library/Keychains/login.keychain
security -v unlock-keychain -u /Library/Keychains/System.keychain
productsign --keychain /Users/administrator/Library/Keychains/login.keychain --sign 'Developer ID Installer: Company LLC' CompanyInstaller.pkg CompanyInstallerSigned.pkg
pkgutil --check-signature CompanyInstallerSigned.pkg
输出:
unlock-keychain "-p" "mypassword" "/Users/administrator/Library/Keychains/login.keychain"
unlock-keychain "-u" "/Library/Keychains/System.keychain"
productsign: using timestamp authority for signature
productsign: signing product with identity "Developer ID Installer: Company LLC" from keychain /Users/administrator/Library/Keychains/login.keychain
productsign: adding certificate "Developer ID Certification Authority"
productsign: adding certificate "Apple Root CA"
2016-10-05 14:57:11.484 productsign[9385:29611120] SignData failed: CSSMERR_CSP_NO_USER_INTERACTION (-2147415840)
Error signing data.
productsign: error: Failed to sign the product.
问题:
我注意到许多解决方案都提到了在对话框提示中单击“始终允许”第一次出现时提到钥匙串的访问控制,但是我唯一已知的与此构建代理的交互是通过 SSH。有没有办法在 Teamcity mac 构建代理上使用 productsign 签署 .pkg,而无需与此“始终允许”提示进行 gui 交互?或者,有没有办法登录到构建代理并查看 gui,以便我可以单击“始终允许”来启用它?
注意:我还尝试将(本地签名机)私钥的访问控制保存为“允许所有应用程序访问此项目”,将其导出,将其导入构建代理的 login.keychain,然后再次尝试上述操作,仅有相同的输出。当我在我的 macbookpro 上执行相同的过程时,一切正常,但是我不记得我是否确实从很久以前单击过“始终允许”。
有什么想法吗?非常感激。