チュートリアル: で Android アプリを構築してテストするパイプラインを作成する AWS Device Farm - AWS CodePipeline

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

チュートリアル: で Android アプリを構築してテストするパイプラインを作成する AWS Device Farm

AWS CodePipeline を使用して、コミットがプッシュされるたびにアプリが構築およびテストされる継続的統合フローを設定できます。このチュートリアルでは、 GitHub リポジトリ内のソースコードを使用して Android アプリを構築およびテストするためのパイプラインを作成および設定する方法を示します。パイプラインは新しい GitHub コミットの到着を検出し、 CodeBuildを使用してアプリケーションを構築し、Device Farm を使用してテストします。

重要

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

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

既存の Android アプリとテスト定義を使用してこれを試すか、 Device Farmが提供したサンプルアプリケーションとテスト定義 を使用できます。

注記

開始する前に

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

  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 テストを使用する CodePipeline ように を設定する

  1. アプリコードのルートbuildspec.ymlに というファイルを追加してコミットし、リポジトリにプッシュします。 はこのファイル CodeBuild を使用して、アプリの構築に必要なコマンドを実行し、アーティファクトにアクセスします。

    version: 0.2 phases: build: commands: - chmod +x ./gradlew - ./gradlew assembleDebug artifacts: files: - './android/app/build/outputs/**/*.apk' discard-paths: yes
  2. (オプション) Calabash または Appium を使用してアプリケーションをテストする場合は、テスト定義ファイルをリポジトリに追加します。後のステップで、定義を使用してテストスイートを実行するように Device Farm を設定できます。

    Device Farm の組み込みのテストを使用する場合は、このステップを省略できます。

  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. ステップ 2: ソースステージの追加ページで、ソースプロバイダー で を選択しますGitHub

    7. 接続 で、既存の接続を選択するか、新規の接続を作成します。 GitHub ソースアクションの接続を作成または管理するには、「」を参照してくださいGitHub 接続

    8. [リポジトリ] で、ソースリポジトリを選択します。

    9. [ブランチ] で、使用するブランチを選択します。

    10. 出典アクションについては、残りのデフォルトのままにしておきます。[次へ] をクリックします。

  4. [Add build stage (ビルドステージの追加)] で、ビルドステージを追加します。

    1. [ビルドプロバイダ] で、[AWS CodeBuild] を選択します。[リージョン] がデフォルトでパイプラインリージョンになることを許可します。

    2. [プロジェクトを作成] を選択します。

    3. [プロジェクト名] に、このビルドプロジェクトの名前を入力します。

    4. [環境イメージ] で、[Managed image (マネージド型イメージ)] を選択します。[Operating system] で、[Ubuntu] を選択します。

    5. [ランタイム] で、[Standard (標準)] を選択します。[イメージ] で、[aws/codebuild/standard:5.0] を選択します。

      CodeBuild は、Android Studio がインストールされているこの OS イメージを使用してアプリを構築します。

    6. サービスロール で、既存の CodeBuild サービスロールを選択するか、新しいサービスロールを作成します。

    7. [ビルド仕様] で、[Use a buildspec file (ビルド仕様ファイルの使用)] を選択します。

    8. 「 に進む」を選択します CodePipeline。これによりコンソール CodePipelineに戻り、リポジトリbuildspec.yml内の を使用して設定を行う CodeBuild プロジェクトが作成されます。ビルドプロジェクトでは、サービスロールを使用して AWS サービス のアクセス許可を管理します。このステップには数分かかる場合があります。

    9. [次へ] をクリックします。

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

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

  7. パイプラインに Device Farm テストアクションを追加します。

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

    2. 図の最下部で [+ Add stage] (+ ステージの追加) を選択します。[ステージ名] に名前 (Test など) を入力します。

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

    4. [アクション名] に名前を入力します。

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

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

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

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

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

      aws devicefarm list-device-pools --arn arn:aws:devicefarm:us-west-2:account_ID:project:project_ID
    9. AppTypeAndroid と入力します。

      以下は、 の有効な値のリストですAppType

      • iOS

      • Android

      • Web

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

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

      以下は、 の有効な値のリストです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

      注記

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

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

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

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

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

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