Notre construction automatisée est exécutée sur Jenkins. La construction elle-même est exécutée sur des esclaves, les esclaves étant exécutés via SSH.
Je reçois une erreur :
00:03:25.113 [codesign-app] build/App.app: User interaction is not allowed.
J'ai essayé toutes les suggestions que j'ai vues jusqu'à présent dans d'autres messages ici :
- En utilisant la sécurité déverrouiller-keychain immédiatement avant de signer pour déverrouiller le trousseau.
- Déplacer la clé de signature dans son propre trousseau.
- Déplacer la clé de signature dans le trousseau de connexion.
- Déplacer la clé de signature dans le trousseau du système.
- Paramétrage manuel de list-keychains à seulement le trousseau qui contient la clé.
Dans tous les cas, j'obtiens la même erreur.
Pour tenter de diagnostiquer le problème, j'ai essayé d'exécuter la commande "security unlock-keychain" sur mon terminal local et j'ai constaté qu'elle ne déverrouille pas réellement le trousseau - si je regarde dans Keychain Access, le symbole du verrou est toujours présent. C'est le cas que je transmette le mot de passe sur la ligne de commande ou que je laisse le système me le demander. Le déverrouillage du même trousseau à l'aide de l'interface graphique me demandera le mot de passe, puis le déverrouillera. De plus, si j'exécute "security lock-keychain", j'obtiens les résultats suivants faire voir la clé se verrouiller immédiatement après avoir exécuté la commande. Cela me fait penser qu'unlock-keychain ne fonctionne pas réellement. Je constate le même comportement sur Lion (que nous utilisons pour les esclaves de construction) et Mavericks (sur lequel je développe).
Ensuite, j'ai essayé d'ajouter -v à toutes les commandes de sécurité :
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 là, il semblerait que list-keychains soit ce qui ne fonctionne pas. Peut-être qu'aucun des deux ne fonctionne. :/
Hay un question similaire ici . La solution est intéressante - mettre "SessionCreate" à true dans launchctl. Mais je ne construis pas sur le maître - mon processus de construction est lancé par SSH sur une machine de construction esclave. Peut-être existe-t-il un moyen en ligne de commande pour faire ce que launchctl fait lorsque vous exécutez "SessionCreate" ?
0 votes
Comment définir le mot de passe du trousseau sur le circleci ?
0 votes
@SachinKumaram semble être une nouvelle question viable ?