Beim Versuch, eine OSX-App mit Codesign zu signieren, ist keine Benutzerinteraktion zulässig

Unser automatisierter Build läuft auf Jenkins. Der Build selbst läuft auf Slaves, wobei die Slaves über SSH ausgeführt werden.

Ich erhalte eine Fehlermeldung:

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

Ich habe jeden Vorschlag ausprobiert, den ich bisher in anderen Posts hier gesehen habe:

Verwenden Sie unmittelbar vor dem Signieren den Sicherheitsschlüsselbund, um den Schlüsselbund zu entsperren.Verschieben des Signaturschlüssels in einen eigenen Schlüsselbund.Verschieben des Signaturschlüssels in den Anmeldeschlüsselbund.Verschieben des Signaturschlüssels in den Systemschlüsselbund.Manuelles Setzen von list-keychains auf den Schlüsselbund, der den Schlüssel enthält.

In allen Fällen erhalte ich den gleichen Fehler.

Bei dem Versuch, das Problem zu diagnostizieren, habe ich versucht, den Befehl "security unlock-keychain" auf meinem lokalen Terminal auszuführen, und festgestellt, dass der Schlüsselbund nicht tatsächlich entsperrt wird. Wenn ich in "Keychain Access" nachschaue, ist das Schlosssymbol immer noch vorhanden. Dies ist der Fall, wenn ich das Kennwort in der Befehlszeile übergebe oder wenn ich es mich dazu auffordern lasse. Wenn Sie denselben Schlüsselbund über die GUI entsperren, werden Sie aufgefordert, das Kennwort einzugeben und es dann zu entsperren. Außerdem, wenn ich "Sicherheitsschloss-Schlüsselbund" ausführen, ichtun Die Tastensperre wird sofort nach Ausführung des Befehls angezeigt. Das lässt mich denken, dass Unlock-Keychain nicht wirklich funktioniert. Ich erlebe das gleiche Verhalten bei Lion (das wir für die Build-Slaves verwenden) und Mavericks (auf denen ich mich entwickle).

Als Nächstes habe ich versucht, -v zu allen Sicherheitsbefehlen hinzuzufügen:

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.

Aus diesem Grund scheint es, dass Listenschlüsselanhänger nicht funktionieren. Vielleicht funktioniert beides nicht. : /

Da ist einähnliche Frage hier. Die Lösung ist interessant - setzen Sie "SessionCreate" in launchctl auf "true". Aber ich baue nicht auf dem Master auf - mein Build-Prozess wird von SSH auf einer Slave-Build-Maschine gestartet. Vielleicht gibt es eine Befehlszeilenmethode, um das zu tun, was launchctl macht, wenn Sie "SessionCreate" ausführen?

Antworten auf die Frage(16)

Ihre Antwort auf die Frage