web-dev-qa-db-fra.com

-allowProvisioningUpdates ne fonctionne pas

Nous utilisons Jenkins pour une intégration continue. Tout ce que nous devons faire pour compiler notre application se fait via la ligne de commande (script bash), car nous avons plusieurs machines où la construction a été effectuée sans aucun accès humain aux périphériques.

Comme vous pouvez l'imaginer, j'étais très heureux de voir le nouvel indicateur de fonctionnalité xcodebuild -allowProvisioningUpdates dans XCode9.

Je comprends que je dois ajouter les informations d’identité de notre identifiant Apple dans les paramètres XCode.

Les informations d'identification sont ajoutées à l'onglet de compte XCode dans Préférences, mais lorsque j'essaie de compiler en utilisant "xcodebuild ... -allowProvisioningUpdates", le message d'erreur suivant s'affiche:

 2017-09-19 09:47:59.692 xcodebuild[74979:3824315]  DVTAssertions: Warning in /Library/Caches/com.Apple.xbs/Sources/DVTFrameworks/DVTFrameworks-13231/DVTFoundation/Portal/DVTDeveloperAccountCredentialsManager.m:38  
Details:  Unable to find default keychain.  
Object:   <DVTDeveloperAccountCredentialsManager>  
Method:   +defaultAccountCredentialsManager  
Thread:   <NSThread: 0x7fe17860aa40>{number = 4, name = (null)}  
Please file a bug at http:/  
2017-09-19 09:47:59.792 xcodebuild[74979:3824308] [MT] IDEDistribution: Step failed: <IDEDistributionSigningAssetsStep: 0x7fe17d45cf20>: Error Domain=IDEDistributionSigningAssetStepErrorDomain Code=0 "Locating signing assets failed." UserInfo={NSLocalizedDescription=Locating signing assets failed., IDEDistributionSigningAssetStepUnderlyingErrors=(  
    "Error Domain=DVTServicesSessionErrorDomain Code=0 \"Unable to log in with account '[email protected]'.\" UserInfo={NSLocalizedFailureReason=Unable to log in with account '[email protected]'., NSLocalizedRecoverySuggestion=The login details for account '[email protected]' were rejected., DVTDeveloperAccountErrorAccount=<DVTAppleIDBasedDeveloperAccount 0x7fe179b016c0: username: [email protected]>, NSUnderlyingError=0x7fe179e8ee60 {Error Domain=DVTDeveloperAccountErrorDomain Code=4 \"[email protected] could not sign in.\" UserInfo={NSLocalizedRecoverySuggestion=Cannot sign in to this account. Try signing into it again in the Accounts preference pane., [email protected] could not sign in., DVTDeveloperAccountErrorAccount=<DVTAppleIDBasedDeveloperAccount 0x7fe179b016c0: username: [email protected]>}}}",  
    "Error Domain=IDEProfileLocatorErrorDomain Code=1 \"No profiles for 'com.yyy.CITestProject' were found\" UserInfo={NSLocalizedDescription=No profiles for 'com.yyy.CITestProject' were found, NSLocalizedRecoverySuggestion=Xcode couldn't find any iOS App Store provisioning profiles matching 'com.yyy.CITestProject'.}"  
)}  
error: exportArchive: The operation couldn’t be completed. Unable to log in with account '[email protected]'.

Est-ce que quelqu'un sait comment résoudre ce problème?

update: Nous utilisons ce plugin pour démarrer les sessions ssh de nos esclaves Jenkins afin de faire le buildjob: https://wiki.jenkins.io/display/JENKINS/SSH+Slaves+plugin

15
Trantec

J'ai le même problème. J'ai signalé le bug à Apple, en vain. Pour avancer avec Xcode 9, je suis passé à la signature manuelle pour Jenkins uniquement. (Les développeurs utilisent toujours la signature automatique.)

/usr/bin/xcodebuild -exportArchive \
    DEVELOPMENT_TEAM=*your-dev-team-id* \
    CODE_SIGN_STYLE=Manual \
    CODE_SIGN_IDENTITY="iPhone Distribution: *your cert*" \
    PROVISION_PROFILE="*your*.mobileprovision" \
    *rest of your parameters*
4
Gary Hooper

Ceci -allowProvisioningUpdates a fonctionné pour moi dans la version finale de Xcode 9.

Vérifiez que vous pouvez créer un projet Xcode à signature automatique à l'aide de Xcode IDE

  • 1) Ouvrez un projet Xcode configuré pour signer automatiquement
    • Sélectionnez une cible parmi Cibles> Général> Signature
    • [x] Gérer automatiquement la signature
    • Entrez vos identifiants de compte d'équipe 
  • 2) Construisez le projet et vérifiez que la construction réussit

Ferme le projet Xcode et Build avec xcodebuild avec les options -allowProvisioningUpdates

  • 1) Ajouter l'option "xcodebuild ... -allowProvisioningUpdates
  • 2) À l'invite, "xcode souhaite accéder à la clé" Accès à l'identifiant Apple Apple xcode "dans votre trousseau"
    • Entrez les informations d'identification et appuyez sur le bouton Toujours autoriser

Maintenant, les constructions en ligne de commande Jenkins devraient fonctionner.

2
Ed of the Mountain

J'avais le même problème après une mise à jour récente de XCode 7.x vers la version 9.3.

La solution pour moi était un paramètre -allowProvisioningDeviceRegistration en plus de -allowProvisioningUpdates pour xcodebuilder:

/usr/bin/xcodebuild -exportArchive \
-allowProvisioningUpdates -allowProvisioningDeviceRegistration \
...

Fonctionne parfaitement avec Jenkins.

1
spikalev

Xcode enregistre les informations d'identification dans le trousseau par défaut. Pour pouvoir y accéder via ssh, vous devez d'abord déverrouiller ce trousseau:

/usr/bin/security unlock-keychain /Users/xxx/Library/Keychains/login.keychain-db

Lorsque vous utilisez Jenkins, vous devez déverrouiller le trousseau dans vos tâches de génération ou lors du démarrage de l'agent. Vous pouvez par exemple l'ajouter à /Library/Application Support/Jenkins/jenkins-slave-runner.sh.

La réponse de "Ed of the Montain" ne fonctionne que parce que xcodebuild vérifie si les répertoires /Library/MobileDevice/ProvisioningProfiles (et autres) sont valides, s'il en trouve un, l'option -allowProvisioningUpdates utilise simplement ce profil et ne nécessite pas de connexion.

0
Max

Lorsque vous traitez avec des erreurs Xcode sur SSH, il est généralement préférable d'essayer les mêmes commandes à l'aide de l'interface graphique. Il vous montrera souvent les entrées de trousseau auxquelles il essaie d'accéder.

Dans mon cas, cela m'a incité à autoriser l'accès de xcodebuild à Xcode-AlternateDSID et Xcode-Token dans mon trousseau. Je lui ai donné accès avec "Toujours autoriser". Vous pouvez également modifier ces entrées dans Keychain Access et autoriser toutes les applications à y accéder, si la sécurité ne vous inquiète pas trop.

J'utilisais déjà security unlock-keychain -p mypassword /Users/myuser/Library/Keychains/login.keychain-db avant xcodebuild, c'est donc probablement nécessaire.

Après cela, l'exportation a fonctionné.

0
JW.