Edited at

Android用CI環境をBitriseで構築

More than 1 year has passed since last update.

もともと社内ではJenkinsによるCI環境を作成していたのだが、HockeyAPPと連携したり最新のAndroidSDKに対応しつつ

古いSDKと共存したりとあんまりLinuxに明るくない私にとって要件が厳しくなりだしたので、アプリ用のCI環境を

提供しているBitriseに乗り換えてみた。


前提条件


  • gradlewファイルによるGradleビルドができること。

Bitriseに限らずCI環境を作成する上では割と重要だと思う。ローカル環境のAndroidStudioでは無視しているエラーが

あったりするとビルドで失敗するので、適宜ソースを修正する必要がある。


  • Bitbucketで管理されていること。

GitHubでもできるはず。私はBitBucket上のdevelopブランチにPushされたタイミングでビルドしてほしかったので、

そのやり方も書きます。


  • HockeyAPPでアップする先があること。

HockeyAPPと連携する必要がないのなら必要ないです。


ビルドするまでの準備

1. Bitriseにログインし【ADD NEW APP】をクリック

2. 【Connect your repository】で対象のレポジトリを選択

3. 【We generated an SSH keypair for you!】で対象レポジトリにSSH接続用の公開鍵を登録

GitHubなら【Auto-add This Key】でいけるかもしれないが、プライベートレポジトリのBitBucketではエラーになるので、

手動で公開鍵を登録する必要がある。

BitBucketのWebサイトにログインし対象レポジトリのSettings ⇒ デプロイ鍵の順で遷移する画面で登録する。

公開鍵はBitrise上に表示される【ssh-rsa】から始まる文字の羅列を登録する。

BitBucketでの公開鍵登録が終わったら、Bitriseに戻って、【I added the Public Key】をクリック。

4. Specify your default branchでデフォルトブランチを登録

developを対象としたいので、developでよいはず。

5. テスト用のビルドが始まるのでしばらく待機

ちゃんとAndroid Studio に対応しているプロジェクトなら、ここはすんなり突破できるが、

ここでエラーが出るようなら色々修正する必要がある。

6. Select Gradle Fileで本プロジェクトのbuild.gradleを選択。

ちゃんとAndroid Studio に対応しているプロジェクトならこの選択肢が出る。ここで出ないプロジェクトはいったん構築した後に色々手を加えてやる必要ある。

7. Select gradle task でassembleDevelopを選択。

テスト用のアプリを作成したいので、assembleDevelopを選択。

ちゃんとAndroid Studio に対応しているプロジェクトならこの選択肢が出る。ここで出ないプロジェクトはいったん構築した後に色々手を加えてやる必要ある。

8. Webhook setupはスキップ

あとで、設定できる。

ここまで進めば、準備が整うはず。


Tips


コンパイルに必要なAndroidSDKがなくてビルドできない。

いったん準備を終えたら、まず、WorkFlowタブを選択し、【MANAGE WORKFLOWS】を選択し、WorkflowEditorに遷移する。

Bitrise上で動作するワークフローをカスタマイズできるので、ビルドが始める前に

android update sdk コマンドで必要なアドオンをインストールすればよい。

コマンドの登録の仕方は各ステップの間にある【+】を押すとその間に登録できる。

下記のステップを選択する。

bitrise_script.png

登録したら、下記の記述はScript contentに記述する。

--filter に指定するパラメータは【android list sdk --all -e】で取得できる。

#!/bin/bash

echo y | android update sdk --no-ui --all --filter addon-google_apis-google-23,addon-google_apis_x86-google-19,android-16


BitBucketにソースがPushされたときにビルドしてほしい。

CodeタブのWEBHOOKS欄でBitBucketを選択すると表示されるURLをBitBucket側に登録すればよい。

BitBucketのWebサイトで対象レポジトリのSettings ⇒ Webhooksの順で遷移する画面で登録する。

ちなみにこれだけをやると、全てのブランチに対して、Pushされたときに勝手にビルドしてしまうので、

対象ブランチをdevelopに絞る。

WorkFlowEditorでTriggersを選択すると、デフォルトでは対象パターンがアスタリスク、対象ワークフローがprimaryのトリガーが

登録されているのが見えるので、対象パターンがdevelop、対象ワークフローがprimaryのトリガーを作成し、

既存のトリガーは削除する。


ビルドしたアプリをHockeyAPPにアップロードしたい。

WorkFlowEditorで最後のステップとしてHockeyAPPへのアップロードをするステップを追加する。

bitrise_hockeyapp.png

以下の項目に対して設定する。


  • mapping.txt file path

【$BITRISE_MAPPING_PATH】でよいはず。


  • API Token

Hockey APPのAccount Settings画面⇒API Token 画面で作成する。

APP IDではないので、注意。


  • HockeyApp: App ID

HockeyAPPのアプリごとの画面にあるAPP ID(Secretではない方)を登録する。