LoginSignup
1
0

CircleCIとGitHubでAndroidの自動テスト環境を構築するためのメモ

Posted at

CircleCIでAndroidの自動テスト

個人的な勉強でCircleCIとGitHubの連携を試した時のメモです。

おそらく、次回同じことをやろうとした時には忘れているのでメモを残します。

目次

手順

  1. GitHubのリポジトリを用意する
  2. CircleCIのアカウントを作成する
  3. CircleCIとGitHubを連携させる
  4. スクリプトを修正する

GitHubのリポジトリを用意する

これは説明するまでもないですね。

CircleCIのアカウントを作成する

GitHubアカウントで登録してしまえば、CircleCIで新たにアカウントを作成しなくて済みます。

  • その場合も、事後的にメールアドレスを登録して認証しないと一部の機能が使えないようです。

CircleCIとGitHubを連携させる

鍵を作成して、CircleCI側とGitHub側それぞれに預けます。

鍵の作成

https://circleci.com/docs/ja/add-ssh-key/

ssh-keygen -t ed25519 -C "email_address@example.ne.jp"

実行すると、実行したディレクトリにkeykey.pubというファイルができます。

  • 前者が秘密鍵です。CircleCIに保管します。
  • 後者が公開鍵です。GitHubに保管します。

公開鍵をGitHubへ保管する

手順

  1. GitHubのRepositoryを選ぶ
  2. Settingsg -> Deploy keys -> Add deploy keyと進む
  3. 適当なタイトルをつけて、先ほど作成した公開鍵を貼り付け、Add keyを押す

今回の例だと、公開鍵は

ssh-ed25519 ...(鍵本体)... email_address@example.ne.jp

のような型式になっていると思います。

秘密鍵をCircleCIへ保管する

CircleCIにログインしてProjects -> Create Project -> GitHtbと進みます。

  • 進んだ先の画面では、実は上記の「鍵の作成」「公開鍵をGitHubへ保管する」部分も含めた説明があります。

わかりやすい名前をプロジェクトにつけ、秘密鍵をPrivate Key蘭に貼り付けます。

-----BEGIN OPENSSH PRIVATE KEY-----
...(鍵本体)...
-----END OPENSSH PRIVATE KEY-----

秘密鍵はこんな型式だと思います。BEGINの行からENDの行まで、ハイフンを含めて全部貼り付けます。

最後にリポジトリを選んでCreate Projectを押せば完成です。

スクリプトを修正する

CircleCIのプロジェクト作成時、GitHubリポジトリに.circleci/config.ymlが存在しない場合はCircleCIがファイルのプルリクエストを作成します。

これ自体は確実にfailする上に、何のテストも実施してくれません。なので、failしないようにまたtestを実施するように修正します。

circleci-project-setupをpullする

GitHubのremoteにcircleci-project-setupというブランチができているはずなので、これをpullします。

.circleci/config.ymlを修正する

ドットファイルなので、所在に注意してください。

必ずfailするのを修正する

- run:
    name: Run tests
    command: echo 'replace me with real tests!' && false

この最後の&& falseを削除すると、とりあえずはfailしなくなります。ただし、testと言いながら何も実施していないです。

テスト項目を追加する

追加する項目は以下です。

  1. androidのorbを追加する
  2. jobs:の下にunit-testandroid-testを定義する
  3. workflowsunit-testandroid-testを追加する
config.yml
version: 2.1
...
orbs:
  android: circleci/android@2.5.0
...
jobs:
  unit-test:
    executor:
      name: android/android-machine
      #resource-class: xlarge <- これは課金アイテム
      tag: 2024.01.1
    steps:
      - checkout
      - android/restore-gradle-cache
      - android/restore-build-cache
      - android/run-tests:
          test-command: ./gradlew testDebug
      - android/save-gradle-cache
      - android/save-build-cache
  android-test:
    executor:
      name: android/android-machine
      #resource-class: xlarge
      tag: 2024.01.1
    steps:
      - checkout
      - android/start-emulator-and-run-tests
...
workflows:
  example:
    jobs:
      - unit-test
      - android-test
      - build:
          requires:
            - unit-test
            - android-test
      - deploy:
          requires:
            - unit-test
            - android-test

できあがり

何かすると自動でテストが走るようになりました。何でもかんでも走るので、不要なテストは避けるような設定を入れるべきかもしれません。

1
0
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
1
0