it-swarm.com.de

-allowProvisioningUpdates funktioniert nicht

Wir verwenden Jenkins für Continiuous Integration. Alles, was wir zum Kompilieren unserer App tun müssen, wird über die Befehlszeile (Bash-Skript) ausgeführt, da wir über mehrere Maschinen verfügen, auf denen der Build ohne menschlichen Zugriff auf die Geräte ausgeführt wurde.

Wie Sie sich vorstellen können, war ich sehr froh, das neue xcodebuild-Feature flag -allowProvisioningUpdates in XCode9 zu sehen.

Ich verstehe, dass ich die Anmeldeinformationen unserer Apple ID in den XCode-Einstellungen hinzufügen muss.

Die Anmeldeinformationen werden an die Registerkarte "XCode-Konto" in "Voreinstellungen" angepasst. Wenn ich jedoch versuche, "xcodebuild ... -allowProvisioningUpdates" zu kompilieren, wird folgende Fehlermeldung angezeigt:

 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]'.

Kann jemand dieses Problem beheben?

update: Wir verwenden dieses Plugin, um ssh-Sitzungen mit unseren Jenkins-Slaves zu starten, um den Buildjob auszuführen: https://wiki.jenkins.io/display/JENKINS/SSH+Slaves+plugin

15
Trantec

Ich habe das gleiche Problem. Ich habe den Fehler an Apple gemeldet, ohne Erfolg. Um mit Xcode 9 voranzukommen, habe ich nur für Jenkins auf manuelles Signieren umgestellt. (Entwickler verwenden immer noch die automatische Signatur.)

/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

Dies -allowProvisioningUpdates arbeitete für mich in Xcode 9 final release.

Vergewissern Sie sich, dass Sie ein automatisch signiertes Xcode-Projekt mit Xcode IDE erstellen können

  • 1) Öffnen Sie ein Xcode-Projekt, das für das automatische Signieren konfiguriert ist
    • Wählen Sie ein Ziel aus Ziele> Allgemein> Signieren
    • [x] Signatur automatisch verwalten
    • Geben Sie Ihre Teamkonto-Anmeldeinformationen ein 
  • 2) Erstellen Sie das Projekt und überprüfen Sie, ob der Build erfolgreich ist

Xcode and Build-Projekt mit xcodebuild mit Optionen schließen -allowProvisioningUpdates

  • 1) Option "xcodebuild ... -allowProvisioningUpdates" hinzufügen
  • 2) Wenn Sie dazu aufgefordert werden, möchte "xcode auf den Schlüssel" xcode Apple id access "in Ihrem Schlüsselbund zugreifen"
    • Geben Sie die Anmeldeinformationen ein und drücken Sie die Taste Always Allow

Jetzt sollten Jenkins-Befehlszeilen-Builds funktionieren.

2

Ich hatte nach dem letzten Update von XCode 7.x auf Version 9.3 dasselbe Problem.

Die Lösung für mich war ein Parameter-allowProvisioningDeviceRegistration zusätzlich zu -allowProvisioningUpdates für xcodebuilder:

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

Funktioniert perfekt mit Jenkins.

1
spikalev

Xcode speichert die Anmeldeinformationen im Standardschlüsselbund. Damit Sie über ssh darauf zugreifen können, müssen Sie zuerst den Schlüsselbund entsperren:

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

Wenn Sie Jenkins verwenden, müssen Sie den Schlüsselbund entweder in Ihren Build-Jobs oder beim Starten des Agenten entsperren. Sie könnten es beispielsweise zu /Library/Application Support/Jenkins/jenkins-slave-runner.sh hinzufügen.

Die Antwort von "Ed of the Montain" funktioniert nur, weil xcodebuild die Verzeichnisse /Library/MobileDevice/ProvisioningProfiles (und andere Verzeichnisse) auf gültige Profile überprüft. Wenn es eines findet, verwendet die Option -allowProvisioningUpdates dieses Profil und benötigt keine Anmeldung.

0
Max

Bei Xcode-Fehlern über SSH sollten Sie die gleichen Befehle normalerweise über die GUI ausprobieren. Es zeigt Ihnen oft, auf welche Schlüsselbundeinträge Sie zugreifen möchten.

In meinem Fall wurde ich dazu aufgefordert, xcodebuild den Zugriff auf Xcode-AlternateDSID und Xcode-Token in meinem Schlüsselbund zu erlauben. Ich habe ihm Zugriff mit "Always Allow" gewährt. Sie können diese Einträge auch in Keychain Access bearbeiten und allen Anwendungen Zugriff gewähren, wenn Sie sich nicht um die Sicherheit sorgen.

Ich habe security unlock-keychain -p mypassword /Users/myuser/Library/Keychains/login.keychain-db bereits vor dem Ausführen von xcodebuild ausgeführt, das ist wahrscheinlich auch notwendig.

Danach funktionierte der Export.

0
JW.