

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# チュートリアル: で iOS アプリをテストするパイプラインを作成する AWS Device Farm
<a name="tutorials-codebuild-devicefarm-S3"></a>

 AWS CodePipeline を使用して、ソースバケットが変更されるたびにアプリをテストする継続的な統合フローを簡単に設定できます。このチュートリアルでは、S3 バケットからビルドした iOS アプリをテストするためのパイプラインを作成して設定する方法を示します。パイプラインは保存された変更の到着を Amazon CloudWatch Events を介して検出し、構築したアプリケーションをテストするために [Device Farm](https://docs.aws.amazon.com/devicefarm/latest/developerguide/welcome.html) を使用します。

**重要**  
パイプライン作成の一環として、CodePipeline は、ユーザーが指定した S3 アーティファクトバケットをアーティファクトとして使用します (これは S3 ソースアクションで使用するバケットとは異なります)。S3 アーティファクトバケットがパイプラインのアカウントとは異なるアカウントにある場合は、S3 アーティファクトバケットが によって所有 AWS アカウント されており、安全で信頼できることを確認してください。

**重要**  
この手順でパイプラインに追加するアクションの多くには、パイプラインを作成する前に作成する必要がある AWS リソースが含まれます。ソースアクションの AWS リソースは常に、パイプラインを作成するのと同じ AWS リージョンで作成する必要があります。例えば、米国東部 (オハイオ) リージョンにパイプラインを作成している場合、CodeCommit リポジトリは米国東部 (オハイオ) リージョンにある必要があります。  
パイプラインの作成時にクロスリージョンアクションを追加できます。クロスリージョンアクションの AWS リソースは、アクションを実行する予定のリージョンと同じ AWS リージョンに存在する必要があります。詳細については、「[CodePipeline にクロスリージョンアクションを追加する](actions-create-cross-region.md)」を参照してください。

既存の iOS アプリを使用して試してみるか、[サンプル iOS アプリ](samples/s3-ios-test-1.zip)を使用できます。

**[開始する前に]**

1.  AWS Device Farm コンソールにサインインし、**新しいプロジェクトの作成**を選択します。

1. プロジェクトを選択します。ブラウザで、新しいプロジェクトの URL をコピーします。URL には、プロジェクト ID が含まれます。

1. プロジェクト ID をコピーしてメモしておきます。CodePipeline でパイプラインを作成するときに、それを使用します。

   以下は、プロジェクトの URL の例です。プロジェクト ID を抽出するには、`projects/` 後の値をコピーします。この例では、プロジェクト ID は `eec4905f-98f8-40aa-9afc-4c1cfexample` です。

   ```
   https://<region-URL>/devicefarm/home?region=us-west-2#/projects/eec4905f-98f8-40aa-9afc-4c1cfexample/runs
   ```

## Device Farm テスト(例 Amazon S3) を使用するように CodePipeline を設定する
<a name="codepipeline-configure-tests-S3"></a>

1. バージョニングが有効になっている S3 バケットを作成するか、使用します。「[ステップ 1: アプリケーションの S3 バケットを作成する](tutorials-simple-s3.md#s3-create-s3-bucket)」の手順に従って、S3 バケットを作成します。

1. バケットの Amazon S3 コンソールで、**アップロード** を選択し、指示に従って .zip ファイルをアップロードします。

   サンプルアプリケーションは、.zip ファイルにパッケージ化する必要があります。

1. パイプラインを作成してソースステージを追加するには、以下の手順を実行します。

   1. にサインイン AWS マネジメントコンソール し、[https://console.aws.amazon.com/codepipeline/](https://console.aws.amazon.com/codepipeline/) で CodePipeline コンソールを開きます。

   1. [**ようこそ**] ページ、[**開始方法**] ページ、または [**パイプライン**] ページで、[**パイプラインの作成**] を選択します。

   1. **[ステップ 1: 作成オプションを選択する]** ページの **[作成オプション]** で、**[カスタムパイプラインを構築する]** オプションを選択します。[**次へ**] を選択します。

   1. **[ステップ 2: パイプラインの設定を選択する]** ページで、**[パイプライン名]** にパイプラインの名前を入力します。

   1. CodePipeline は、特徴と料金が異なる V1 タイプと V2 タイプのパイプラインを提供しています。V2 タイプは、コンソールで選択できる唯一のタイプです。詳細については、「[パイプラインタイプ](https://docs.aws.amazon.com/codepipeline/latest/userguide/pipeline-types-planning.html?icmpid=docs_acp_help_panel)」を参照してください。CodePipeline の料金については、[料金](https://aws.amazon.com/codepipeline/pricing/)を参照してください。

   1. [**サービスロール**] で、[**New service role (新しいサービスロール)**] は選択したままにして、[**Role name (ロール名)**] は変更しません。既存のサービスロール (ある場合) を使用することもできます。
**注記**  
2018 年 7 月以前に作成した CodePipeline サービスロールを使用している場合、Device Farm に対する許可を追加する必要があります。これを行うには、IAM コンソールを開き、ロールを見つけて、ロールのポリシーに次の許可を追加します。詳細については、「[CodePipeline サービスロールにアクセス許可を追加する](how-to-custom-role.md#how-to-update-role-new-services)」を参照してください。  

      ```
      {
           "Effect": "Allow",
           "Action": [
              "devicefarm:ListProjects",
              "devicefarm:ListDevicePools",
              "devicefarm:GetRun",
              "devicefarm:GetUpload",
              "devicefarm:CreateUpload",
              "devicefarm:ScheduleRun"
           ],
           "Resource": "*"
      }
      ```

   1. [**詳細設定**] をデフォルト設定のままにし、[**次へ**] を選択します。

   1. **[ステップ 3: ソースステージの追加]** ページの **[ソースプロバイダー]** で、**[Amazon S3]** を選択します。

   1. [**Amazon S3 の場所**] に、.zip ファイルのバケット (`my-storage-bucket` など) とオブジェクトキー (`s3-ios-test-1.zip` など) を入力します。

   1. [**次へ**] を選択します。

1. **[ステップ 4: ビルドステージの追加]** で、パイプラインのプレースホルダービルドステージを作成します。これにより、ウィザードでパイプラインを作成することができます。ウィザードを使用して 2 ステージパイプラインを作成した後は、このプレースホルダービルドステージは不要になります。パイプラインが完了した後、この第 2 ステージが削除され、ステップ 5 で新しいテストステージが追加されます。

   

   1. [**ビルドプロバイダ**] で、[**Jenkins の追加**] を選択します。このビルド選択はプレースホルダーです。それは使用されていません。

   1. [**プロバイダ名**] に名前を入力します。名前はプレースホルダーです。それは使用されていません。

   1. [**サーバー URL**] にテキストを入力します。テキストはプレースホルダーです。それは使用されていません。

   1. [**プロジェクト名**] に名前を入力します。名前はプレースホルダーです。それは使用されていません。

   1. [**次へ**] を選択します。

   1. **[ステップ 5: テストステージの追加]** で、**[テストステージをスキップ]** を選択し、もう一度 **[スキップ]** を選択して警告メッセージを受け入れます。

      [**次へ**] を選択します。

   1. **[ステップ 6: デプロイステージの追加]** ページで、**[デプロイステージをスキップ]** を選択し、もう一度 **[スキップ]** を選択して警告メッセージを受け入れます。

   1. **ステップ 7: 確認**で、**パイプラインの作成**を選択します。ソースとビルドステージを示す図が表示されます。  
![\[\]](http://docs.aws.amazon.com/ja_jp/codepipeline/latest/userguide/images/codepipeline-view-pipeline-S3.png)

1. 次のようにして、Device Farm テストアクションをパイプラインに追加します。

   1. 右上の [**編集**] を選択します。

   1. [**Edit stage (ステージの編集)**] を選択します。**[削除]** を選択します。これにより、パイプライン作成のためには使用しないプレースホルダーステージが削除されます。

   1. 図の最下部で [**\$1 Add stage]** (\$1 ステージの追加) を選択します。

   1. [ステージ名] にステージ名 (Test など) を入力し、[**Add stage (ステージの追加)**] を選択します。

   1. [**\$1 Add action group (\$1 アクションの追加)**] を選択します。

   1. [**アクション名**] に、名前を入力します (DeviceFarmTest など)。

   1. **アクションプロバイダ** で、**AWS Device Farm** を選択します。**[リージョン]** をデフォルトでパイプラインのリージョンにすることを許可します。

   1. [**入力アーティファクト**] で、テストステージに先立つステージの出力アーティファクトと一致する入力アーティファクト (`SourceArtifact` など) を選択します。

       AWS CodePipeline コンソールでは、パイプライン図の情報アイコンにカーソルを合わせると、各ステージの出力アーティファクトの名前を確認できます。パイプラインでアプリケーションを [**ソース**] ステージから直接テストする場合は、[**SourceArtifact**] を選択します。パイプラインに [**ビルド**] ステージが含まれている場合は、[**BuildArtifact**] を選択します。

   1. **ProjectId** で、Device Farm のプロジェクト ID を選択します。このチュートリアルの最初の手順に従い、プロジェクト ID を取得します。

   1. [**DevicePoolArn**] に、デバイスプールの ARN を入力します。上位デバイスの ARNs など、プロジェクトの使用可能なデバイスプール ARN を取得するには、 CLI AWS を使用して次のコマンドを入力します。

      ```
      aws devicefarm list-device-pools --arn arn:aws:devicefarm:us-west-2:account_ID:project:project_ID
      ```

   1. [**AppType**] に、「**iOS**」と入力します。

      [**AppType**] の有効な値は次のとおりです。
      + **iOS**
      + **Android**
      + **Web**

   1. [**デプロイ**] に、コンパイルされたアプリケーションパッケージのパスを入力します。パスは、テストステージの入力アーティファクトのルートを基準とする相対パスです。このパスは `ios-test.ipa` に似ています。

   1. **TestType** にテストのタイプを入力し、**Test** にテスト定義ファイルのパスを入力します。パスは、テストの入力アーティファクトのルートに関連します。

      Device Farm の組み込みテストのいずれかを使用している場合は、BUILTIN\$1FUZZ など Device Farm プロジェクトに設定されたテストのタイプを入力します。[**FuzzEventCount**] に、時間をミリ秒単位で入力します (6000 など)。[**FuzzEventThrottle**] に、時間をミリ秒単位で入力します (50 など)。

      Device Farm の組み込みテストのいずれも使用していない場合は、テストのタイプを入力し、**テスト** にテスト定義ファイルのパスを入力します。パスは、テストの入力アーティファクトのルートに関連します。

      [**TestType**] の有効な値は次のとおりです。
      + **APPIUM\$1JAVA\$1JUNIT**
      + **APPIUM\$1JAVA\$1TESTNG**
      + **APPIUM\$1NODE**
      + **APPIUM\$1RUBY**
      + **APPIUM\$1PYTHON**
      + **APPIUM\$1WEB\$1JAVA\$1JUNIT**
      + **APPIUM\$1WEB\$1JAVA\$1TESTNG**
      + **APPIUM\$1WEB\$1NODE**
      + **APPIUM\$1WEB\$1RUBY**
      + **APPIUM\$1WEB\$1PYTHON**
      + **BUILTIN\$1FUZZZ**
      + **INSTRUMENTATION**
      + **XCTEST**
      + **XCTEST\$1UI**
**注記**  
カスタム環境ノードはサポートされていません。

   1. 残りのフィールドにはテストおよびアプリケーションタイプに適した構成を入力します。

   1. (オプション) [**アドバンスト**] で、テストランの情報の設定を行います。

   1. **[保存]** を選択します。

   1. 編集中のステージで、[**完了**] を選択します。 AWS CodePipeline のペインで [**保存**] を選択し、警告メッセージで [**保存**] を選択します。

   1. 変更を送信してパイプラインの実行を開始するには、[**変更のリリース**]、[**リリース**] の順に選択します。