LoginSignup
8
6

More than 5 years have passed since last update.

Testing with Google Cloud Test Lab in CircleCI

Last updated at Posted at 2016-03-15

概要

Testing with Google Cloud Test Labの意訳。

Google Cloud Test Labでのテスト

このガイドは現在β版で提供されいているGoogle Cloud Test Labのコマンドを元に作成しています。公式ドキュメントのOverviewを常に確認するようにしてください。

事前準備

CircleCIでCloud Test Labを使用する前に、以下のステップを完了させる必要があります。

1. gcloudのセットアップ

Using Cloud Test Lab from the Command Lineを参考にGoogle Cloudのプロジェクトを作成し、Cloud Test LabのBetaプログラムへの参加を申請します。そしてローカルにGoogle Cloud SDK環境を構築しましょう。CircleCIにはGoogle Cloud SDKの利用環境がデフォルトで用意されいていますが、コマンドの挙動を確認したりする際にローカルにも環境が構築してあると役立ちます。

2. サービスアカウントの作成

サービスアカウントを作成します。サービスアカウントを利用することで、gcloudは人間の代わりにプログラムをユーザーとして扱います。これによって、スパムチェックを回避し、ブロックまたはcaptchaを要求されることからアカウントを防ぐことができます。gcloud auth activate-service-account commandを参考にサービスアカウントの作成と有効化を行ってください。

3. 必要なAPIの有効化

サービスアカウントでログイン後、Google Developers ConsoleでGoogle Cloud Testing APIとCloud Tool Results APIを有効化します。これらのAPIを有効にするためには、コンソール上部の検索窓にAPI名を入力し、APIの概要ページで「APIを有効にする」をクリックします。

CircleCIのセットアップ

もしあなたがCircleCIのユーザーで無いのならば、Getting Started guideを参考にすることでセットアップをすぐに完了できます。

また、このセクションでは、説明のためのサンプルとしてNotepad example Android appを使用します。

プロジェクトの設定と環境変数

以前のセクションでサービスアカウントを作成した際に拡張子が.jsonとなっているprivate keyがダウンロードされたと思います。CircleCIがgcloudを認証するために、CircleCIはこのkeyへアクセスする必要があります。しかし、keyをバージョンコントロール下で直接管理するのはセキュリティ的にスマートなやり方ではありません。

keyを直接管理する代わりにCircleCIの環境変数を利用して認証させましょう。どうすればいいかはこちらを参照してください。

circle.yml

dependencies:
  pre:
    - sudo pip install -U crcmod
  post:
    - ./gradlew :app:assembleDebug -PdisablePreDex
    - ./gradlew :app:assembleDebugTest -PdisablePreDex
    - echo $CLIENT_SECRET | base64 --decode > ${HOME}/client-secret.json
    - sudo /opt/google-cloud-sdk/bin/gcloud config set project circle-ctl-test
    - sudo /opt/google-cloud-sdk/bin/gcloud --quiet components update
    - sudo /opt/google-cloud-sdk/bin/gcloud --quiet components install beta
    - sudo /opt/google-cloud-sdk/bin/gcloud auth activate-service-account --key-file ${HOME}/client-secret.json

まずcrcmodのインストールから始めます。これは、Googleのgsutilツールを利用するために必要になります。

dependenciesセクションでは、debug apktest apkの両方をビルドしています。そして、その次にgcloudのセットアップを行っています。ここでは、.json keyを再生成し、プロジェクトの指定やCloud Test Labを利用するためのbetaコマンドのインストール、そして再生成したkeyを使用してgcloudへの認証を行います。上記サンプルのプロジェクト名は適宜置き換えてください。

test:
  override:
    - echo "y" | sudo /opt/google-cloud-sdk/bin/gcloud beta test android run --app app/build/outputs/apk/app-debug.apk --test app/build/outputs/apk/app-debug-test-unaligned.apk --results-bucket cloud-test-circle-ctl-test
  post:
    - sudo /opt/google-cloud-sdk/bin/gsutil -m cp -r -U `sudo /opt/google-cloud-sdk/bin/gsutil ls gs://cloud-test-circle-ctl-test | tail -1` $CIRCLE_ARTIFACTS/ | true

testセクションでは、CircleCIのgradle testのデフォルトのアクションを上書きし、その代わりにgcloudにCloud Test Labでのテストの実行を指示します。apkネームやGoogle Cloud StorageのURLについては、適切なものに置き換えてください。

postはtestセクションにおいてデフォルトアクションやpre、overrideより後に実行されます。ここでgsutilを使うことでCircleCIのartifactsにbucketのもっとも新しいファイルをダウンロードすることができます。これによって、Google Cloud StorageとCircleCIの両方でテスト結果を利用することができます。

8
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
6