2017-02-27 5 views
0

J'exporte des archives d'applications en utilisant les outils de ligne de commande (xcodebuild). Essentiellement ce que je en cours d'exécution:codesign --keychain est ignoré

xcodebuild -workspace "${WORKSPACE_PATH}" \ 
    -scheme "${SCHEME_NAME}" \ 
    -archivePath "${PROJECT_ARCHIVE}" \ 
    -configuration "${CONFIGURATION}" \ 
    -sdk "${TARGET_SDK}" \ 
    DEVELOPMENT_TEAM="XXXXXXXX" \ 
    OTHER_CODE_SIGN_FLAGS="--keychain /Users/user/Library/Keychains/jenkins.keychain" \ 
    archive 

Et voici le résultat:

Check dependencies 
No signing certificate "iOS Development" found: No "iOS Development" signing certificate matching team ID "XXXXXXX" with a private key was found. 
Code signing is required for product type 'Application' in SDK 'iOS 10.2' 

** ARCHIVE FAILED ** 


The following build commands failed: 
Check dependencies 
(1 failure) 
$ echo $? 
65 

Echec de signature de code, car le paramètre codesign ne tient pas compte --keychain. Maintenant, voici la partie intéressante. Le trousseau que je veux utiliser est jenkins.keychain-db (comme spécifié ci-dessus). Cela ne fonctionne certainement pas. Voici ma liste de recherche porte-clés:

$ security list-keychains 
"/Users/user/Library/Keychains/login.keychain-db" 
"/Library/Keychains/System.keychain" 

Il est évident que jenkins.keychain-db n'est pas là-dedans comme il devrait être. Si j'ajoute le jenkins.keychain-db dans la liste de recherche, il commence à fonctionner.

Malheureusement, ce n'est pas une solution pour moi, car j'ai plusieurs porte-clés avec les mêmes clés et certificats privés. Cela amène xcodebuild à récupérer le premier certificat bon qu'il peut trouver qui échouera parce que le trousseau n'est probablement pas déverrouillé.

Répondre

1

Vous pouvez faire codesign préfèrent utiliser votre porte-clé personnalisé avec les commandes suivantes:

security list-keychains -d user -s jenkins.keychain 
security default-keychain -s jenkins.keychain 

# to unlock the kechain: 
security unlock-keychain -p $PW jenkins.keychain 

Mettre cela juste avant xcodebuild ...

Vous pouvez omettre l'extension -db. Il n'est pas nécessaire de l'utiliser et conduira à un comportement déroutant.

Vous pouvez nettoyer ce après la construction est terminée:

security list-keychains -d user -s login.keychain 
security default-keychain -s login.keychain 
+0

Pourquoi seulement de la Sierra? –