Skip to main content
Devinは、iOSアプリのアーカイブ、署名、TestFlightへのアップロード、beta groupへのビルド追加を実行できます。macOS VM上でxcodebuildを実行し、Devinのシークレットとして保存したApp Store Connect APIキーで認証します。 Devinがビルドをアップロードできるようにするには、事前に次の準備が必要です。
  1. App Store Connectでアプリを設定する。
  2. App Store Connect APIキーを作成する。
  3. そのキーとTeam IDをシークレットとしてDevinに追加する。
  4. DevinがAppleのサーバーに接続できるようにする。
TestFlightへのアップロードにはmacOSセッションが必要です。Dedicated SaaSデプロイメントをご利用の場合は、担当のアカウントチームにご連絡のうえ、macOS VMを有効にしてください。

要件

App Store Connect のセットアップ

以下の手順は Apple Developer ポータルと App Store Connect で実施してください。これらは Devin が代行できません。大半は Account Holder または Admin の権限が必要で、一部は個人の Apple Account での二要素認証が必要です。
1

最新の契約に同意する

Account Holder が App Store Connect にサインインし、Business で保留中の契約すべてに同意します。必要な契約が保留のままだと、アップロードは失敗します。
2

bundle ID を登録する

Apple Developer ポータルCertificates, Identifiers & Profiles → Identifiers に移動し、アプリターゲットの bundle ID と一致する App ID を登録します。該当の識別子がすでに存在する場合は、この手順を省略してください。
3

App レコードを作成する

App Store Connect で Apps に移動し、+ をクリックして New App を選択します。プラットフォーム、名前、主要言語、前の手順の bundle ID、SKU を指定します。bundle ID に対応する App レコードがないと、TestFlight へのアップロードは失敗します。
4

beta group を作成する

アプリを開いて TestFlight に移動し、グループを作成します。
  • Internal testing: テスターは App Store Connect チームのユーザーである必要があります。処理が完了し次第、ビルドが利用可能になります。
  • External testing: メールアドレスまたは公開リンクがあれば誰でもテスターになれます。先に Test Information(ベータアプリの説明、フィードバック用メールアドレス、審査用の連絡先情報)を入力してください。各バージョンの最初のビルドは Beta App Review の対象となります。
5

輸出コンプライアンスに回答する

テスターがインストールできるようにするには、ビルドごとに輸出コンプライアンスの質問へ回答する必要があります。この質問をビルドごとに回答せずに済ませるには、アプリの Info.plistITSAppUsesNonExemptEncryption を設定します。HTTPS など対象外の暗号化のみを使用している場合は NO を設定してください。

App Store Connect APIキーを作成する

DevinはApple Accountではなく、App Store Connect APIキーで認証します。このキーに二要素認証は不要です。
1

APIアクセスを有効にする

App Store Connectで Users and Access → Integrations → App Store Connect API に移動します。APIアクセスがまだ有効になっていない場合は、Account Holderが Request Access をクリックして利用規約に同意します。
2

チームキーを生成する

Team Keys+ をクリックします。Devin TestFlight などの名前を入力し、App Manager ロールを選択します。キーの生成にはAdminロールが必要です。App ManagerのキーでXcodeが配布証明書を作成できない場合は、代わりに Admin ロールでキーを生成してください。
3

秘密鍵をダウンロードする

新しいキーの横にある Download をクリックして AuthKey_<KEY_ID>.p8 を保存します。このファイルをダウンロードできるのは一度だけです。紛失した場合は、キーを失効させて新しいキーを生成してください。
4

Issuer IDとKey IDをコピーする

Issuer ID はキー一覧の表の上に表示されます。Key ID は各キーの行にあります。
5

Team IDを確認する

Apple DeveloperポータルMembership details に移動し、Team ID をコピーします。A1B2C3D4E5 のような10文字の文字列です。
.p8 ファイルを入手した人は誰でも、チーム内のすべてのアプリでビルドのアップロードやTestFlightの管理ができてしまいます。保管はDevinのシークレットに限定し、リポジトリにはコミットしないでください。

Devin にシークレットを追加する

以下の値を raw シークレットとして Secrets ページに追加します。 Mac で秘密鍵をコピーするには、次のコマンドを実行します。
シークレットのスコープを選択します。
  • Organization: 組織内のすべてのセッションでキーを利用できます。チームで Devin を使ってビルドをリリースする場合は、このスコープを利用してください。
  • Personal: 自分が開始したセッションのみでキーを利用できます。
シークレットは、追加した後に開始したセッションでのみ利用できます。スコープの詳細については、シークレットを参照してください。

ネットワークアクセスを許可する

Devin の macOS VM は、ビルドの署名とアップロードのために Apple のサーバーへ接続する必要があります。組織で制限的なネットワークポリシーを利用している場合は、api.appstoreconnect.apple.com と、xcodebuild が署名およびアップロードに利用するその他の Apple ホストを追加してください。*.apple.com を許可すれば、これらをまとめてカバーできます。 ホストがブロックされている場合、ネットワークエラーではなく認証エラーとして表示されるのが一般的です。トラブルシューティングを参照してください。

ビルドをアップロードする

macOS セッションを開始し、Devin にビルドのアップロードを依頼します。
Devin はシークレットを利用して以下を実行します:
  1. ASC_PRIVATE_KEY0600 権限で ~/.appstoreconnect/private_keys/AuthKey_$ASC_KEY_ID.p8 に書き込む。
  2. App Store Connect API で最新のビルド番号を確認し、それより大きい番号を選ぶ。
  3. xcodebuild archive でアプリをアーカイブする。
  4. xcodebuild -exportArchive でビルドに署名してアップロードする。
  5. 処理の完了を待ってから、App Store Connect API でビルドを beta group に追加する。
エクスポートのステップでは、destinationupload に設定した export options plist を利用します:
また、以下のコマンドを実行します:
-allowProvisioningUpdates を指定すると、Xcode が APIキーを利用して配布証明書とプロビジョニングプロファイルを作成できるため、VM に署名用アセットをインストールする必要がありません。 リポジトリに fastlane のレーンや make ターゲットなどのリリーススクリプトが既にある場合は、それを利用するよう Devin に指示してください。fastlane でも app_store_connect_api_key から同じキーを渡せます。

手順をブループリントに保存する

プロンプトのたびに同じ手順を書かずに済むよう、リポジトリのブループリントknowledge セクションに追加しておきましょう。

Troubleshooting

エクスポート中に No Accounts with App Store Connect Access または Failed to Use Accounts が発生する。 まずネットワークアクセスを確認してください。VM が Apple のサーバーに到達できない場合、キーが有効でも xcodebuild はこのエラーを報告します。その直前の行に ITunesConnectFoundationErrorDomain Code=-1003 が出ていないか確認してください。ネットワークに問題がなければ、キーに App Manager ロールが付与されているかを確認してください。 No profiles for '<bundle ID>' were found bundle ID が APPLE_TEAM_ID の Team に登録されていないか、App Store Connect に対応する app レコードが存在しません。 The provided entity includes an attribute with a value that has already been used そのバージョンで同じビルド番号が既に利用されています。ビルド番号を上げて再度アップロードしてください。 ビルドはアップロードされるのにテスターがインストールできない。 App Store Connect → TestFlight でビルドを確認してください。まだ処理中である、輸出コンプライアンス情報が未入力である、または Beta App Review 待ちの可能性があります。 Xcode が配布証明書を作成できない。 キーのロールでは証明書の管理が許可されていません。Admin ロールのキーを生成するか、Admin に Apple Developer ポータルで配布証明書を作成してもらってください。 セッション内で environment variables が空になる。 シークレットは、追加した後に開始したセッションでのみ利用できます。新しいセッションを開始してください。