チュートリアル: AWS Device Farm で iOS アプリケーションをテストするパイプラインを作成する - AWS CodePipeline

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

チュートリアル: AWS Device Farm で iOS アプリケーションをテストするパイプラインを作成する

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

重要

この手順でパイプラインに追加するアクションの多くには、パイプラインを作成する前に作成する必要のある AWS リソースが含まれます。出典アクションの AWS リソースは、パイプラインを作成するのと同じ AWS リージョンに常に作成する必要があります。例えば、米国東部 (オハイオ) リージョンにパイプラインを作成している場合、CodeCommit リポジトリは米国東部 (オハイオ) リージョンにある必要があります。

パイプラインを作成するときにクロスリージョンアクションを追加できます。クロスリージョンアクションの AWS リソースはアクションを実行する予定の AWS リージョンと同じであることが必要です。詳細については、「CodePipeline にクロスリージョンアクションを追加する」を参照してください。

既存の iOS アプリを使用して試してみるか、サンプル iOS アプリを使用できます。

注記

開始する前に

  1. AWS Device Farm コンソールにサインインし、[Create a new project (新規プロジェクトの作成)] を選択します。

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

  3. プロジェクト 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 を設定する

  1. バージョニングが有効になっている S3 バケットを作成するか、使用します。「ステップ 1: アプリケーションの S3 バケットを作成する」の手順に従って、S3 バケットを作成します。

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

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

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

    1. AWS Management Console にサインインして、https://console.aws.amazon.com/codepipeline/ で CodePipeline コンソールを開きます。

    2. パイプラインの作成 を選択します。[Step 1: Choose pipeline settings (ステップ 1: パイプラインの設定の選択)] ページで、[パイプライン名] にパイプラインの名前を入力します。

    3. このチュートリアルの目的では、[パイプラインタイプ] で、[V1] を選択します。[V2] を選択することもできますが、パイプラインタイプは特性と価格が異なることに注意してください。詳細については、「パイプラインのタイプ」を参照してください。

    4. [サービスロール] で、[New service role (新しいサービスロール)] は選択したままにして、[Role name (ロール名)] は変更しません。既存のサービスロール (ある場合) を使用することもできます。

      注記

      2018 年 7 月以前に作成した CodePipeline サービスロールを使用している場合、Device Farm に対する許可を追加する必要があります。これを行うには、IAM コンソールを開き、ロールを見つけて、ロールのポリシーに次の許可を追加します。詳細については、「 CodePipeline サービスロールにアクセス許可を追加する」を参照してください。

      { "Effect": "Allow", "Action": [ "devicefarm:ListProjects", "devicefarm:ListDevicePools", "devicefarm:GetRun", "devicefarm:GetUpload", "devicefarm:CreateUpload", "devicefarm:ScheduleRun" ], "Resource": "*" }
    5. [詳細設定] をデフォルト設定のままにし、[次へ] を選択します。

    6. [Step 2: Add source stage] (ステップ 2: ソースステージを追加する) ページの [ソースプロバイダー] で [Amazon S3] を選択します。

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

    8. [Next] (次へ) をクリックします。

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

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

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

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

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

    5. [Next] (次へ) をクリックします。

    6. [Step 4: Add deploy stage (ステップ 4: デプロイステージの追加)] ページで、[Skip deploy stage (デプロイステージのスキップ)] を選択し、[スキップ] を選択して警告メッセージを受け入れます。

    7. [Step 5: Review (ステップ 5: 確認)] で、[パイプラインの作成] を選択します。ソースとビルドステージを示す図が表示されます。

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

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

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

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

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

    5. [+ Add action group (+ アクションの追加)] を選択します。

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

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

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

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

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

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

      aws devicefarm list-device-pools --arn arn:aws:devicefarm:us-west-2:account_ID:project:project_ID
    11. [AppType] に、「iOS」と入力します。

      [AppType] の有効な値は次のとおりです。

      • iOS

      • Android

      • Web

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

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

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

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

      [TestType] の有効な値は次のとおりです。

      • APPIUM_JAVA_JUNIT

      • APPIUM_JAVA_TESTNG

      • APPIUM_NODE

      • APPIUM_RUBY

      • APPIUM_PYTHON

      • APPIUM_WEB_JAVA_JUNIT

      • APPIUM_WEB_JAVA_TESTNG

      • APPIUM_WEB_NODE

      • APPIUM_WEB_RUBY

      • APPIUM_WEB_PYTHON

      • BUILTIN_FUZZZ

      • INSTRUMENTATION

      • XCTEST

      • XCTEST_UI

      注記

      カスタム環境ノードはサポートされていません。

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

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

    16. [Save (保存)] を選択します。

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

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