シナリオ:
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 を介したものです。この「常に許可」プロンプトでの GUI 操作なしで、Teamcity mac ビルド エージェントで productsign を使用して .pkg に署名する手段はありますか? または、ビルド エージェントにログインして GUI を表示し、[常に許可] をクリックしてこれを有効にする方法はありますか?
注:(ローカル署名マシン)秘密鍵のアクセス制御を「すべてのアプリケーションがこのアイテムにアクセスできるようにする」ように保存し、それをエクスポートし、ビルドエージェントの login.keychain にインポートしてから、上記をもう一度試してみました。同じ出力があります。私の macbookpro で同じプロセスを実行すると、すべてが機能しますが、ずっと前に「常に許可」をクリックしたかどうかは思い出せません。
何かご意見は?とても有難い。