Nuestra compilación automatizada se ejecuta en Jenkins. La construcción en sí se ejecuta en esclavos, y los esclavos se ejecutan a través de SSH.
Me sale un error:
00:03:25.113 [codesign-app] build/App.app: User interaction is not allowed.
He probado todas las sugerencias que he visto hasta ahora en otras publicaciones aquí:
- Usando el desbloqueo de seguridad-llavero inmediatamente antes de firmar para desbloquear el llavero.
- Mover la clave de firma a su propio llavero.
- Mover la clave de firma al llavero de inicio de sesión.
- Mover la clave de firma en el llavero del sistema.
- Configuración manual de llaveros de lista solo para el llavero que contiene la clave.
En todos los casos, me sale el mismo error.
En un intento de diagnosticar el problema, intenté ejecutar el comando "security unlock-keychain" en mi terminal local y descubrí que en realidad no desbloquea el llavero; si miro en Keychain Access, el símbolo de bloqueo sigue ahí. Este es el caso si paso la contraseña en la línea de comandos o si dejo que me lo solicite. Desbloquear el mismo llavero con la GUI me solicitará la contraseña y luego la desbloquearé. Además, si me quedo "bloqueo de seguridad llavero", me hago ver el bloqueo de teclas inmediatamente después de ejecutar el comando. Esto me hace pensar que desbloquear llavero en realidad no funciona. Experimento el mismo comportamiento en Lion (que estamos usando para construir esclavos) y Mavericks (en el que estoy desarrollando).
Luego, intenté agregar -v a todos los comandos de seguridad:
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.
A partir de esto, parece que la lista de llaveros es lo que no está funcionando. Quizás tampoco funcione. : /
Hay una pregunta similar aquí . La solución es interesante: establezca "SessionCreate" en true en launchctl. Pero no estoy construyendo en el maestro: mi proceso de compilación se inicia desde SSH en una máquina de compilación esclava. ¿Tal vez hay una forma de línea de comandos para hacer lo que está haciendo launchctl cuando ejecuta "SessionCreate"?