web-dev-qa-db-ja.com

-allowProvisioningUpdatesは機能しません

Jenkinsを継続的インテグレーションに使用しています。アプリをコンパイルするために必要なことはすべて、コマンドライン(bashスクリプト)を介して行われます。これは、デバイスに人がアクセスすることなくビルドが行われるマシンが複数あるためです。

ご想像のとおり、XCode9の新しいxcodebuild機能フラグ-allowProvisioningUpdatesを見てとてもうれしかったです。

Apple IDの資格情報をXCode設定に追加する必要があることを理解しています。

資格情報は[設定]の[XCodeアカウント]タブに追加されますが、「xcodebuild ... -allowProvisioningUpdates」を使用してコンパイルしようとすると、次のエラーメッセージが表示されます。

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

誰かがこの問題を修正する方法を知っていますか?

update:buildjobを実行するために、このプラグインを使用してJenkinsスレーブへのsshセッションを開始します: https://wiki.jenkins .io/display/JENKINS/SSH + Slaves + plugin

18
Trantec

私は同じ問題を抱えています。バグをAppleに報告しましたが、役に立ちませんでした。 Xcode 9を進めるために、私はJenkinsのみの手動署名に切り替えました。 (開発者は引き続き自動署名を使用します。)

/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

この-allowProvisioningUpdatesはXcode 9の最終リリースで機能しました。

Xcode IDEを使用して自動署名Xcodeプロジェクトをビルドできることを確認

  • 1)自動的に署名するように構成されたXcodeプロジェクトを開きます
    • Targets> General> Signingからターゲットを選択します
    • [x]署名を自動的に管理する
    • チームアカウントの資格情報を入力します
  • 2)プロジェクトをビルドし、ビルドが成功したことを確認します

オプション-allowProvisioningUpdatesを指定してxcodebuildを使用してXcodeを閉じてプロジェクトをビルド

  • 1)オプション「xcodebuild ... -allowProvisioningUpdates」を追加します
  • 2)プロンプトが表示されたら、「xcodeはキー「xcode Apple id access」をキーチェーンにアクセスしたい」
    • 資格情報を入力し、ボタンを押しますAlways Allow

これで、Jenkinsコマンドラインビルドが機能するはずです。

2

XCode 7.xから9.3バージョンへの最近の更新の後、同じ問題が発生していました。

私にとっての解決策は、xcodebuilderの-allowProvisioningUpdatesに加えて、パラメーター-allowProvisioningDeviceRegistrationでした。

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

Jenkinsと完全に連携します。

1
spikalev

Xcodeは、デフォルトのキーチェーンに資格情報を保存します。 ssh経由でアクセスするには、まずそのキーチェーンのロックを解除する必要があります。

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

Jenkinsを使用する場合、ビルドジョブ内で、またはエージェントを起動するときにキーチェーンをロック解除する必要があります。たとえば、/Library/Application Support/Jenkins/jenkins-slave-runner.shに追加できます。

「Ed of the Montain」からの回答は、xcodebuildが/Library/MobileDevice/ProvisioningProfiles(およびその他)のディレクトリで有効なプロファイルをチェックし、見つかった場合、-allowProvisioningUpdatesオプションはこのプロファイルを使用するだけで、ログインが必要です。

0
Max

SSH経由でXcodeエラーを処理する場合、通常はGUIを使用して同じコマンドを試すのが最善です。多くの場合、アクセスしようとしているキーチェーンエントリが表示されます。

私の場合、xcodebuildがXcode-AlternateDSIDおよびXcode-Tokenキーチェーン内。 「常に許可」でアクセスを許可しました。セキュリティについてあまり心配していない場合は、キーチェーンアクセスでこれらのエントリを編集し、すべてのアプリケーションがアクセスできるようにすることもできます。

すでに実行していたsecurity unlock-keychain -p mypassword /Users/myuser/Library/Keychains/login.keychain-db xcodebuildを実行する前に、おそらくそれも必要です。

その後、エクスポートは機能しました。

0
JW.