こんにちはsekitakaです。
アプリもCIしっかりまわしたいですよね。
今回はCircleCIでAndroidアプリをビルドする方法を紹介します。
CircleCIでビルドできたサンプルプロジェクトも公開しているので、初めての方はforkして試してみるとわかりやすいと思います。
特に重要なのはcircle.ymlとAndroid SDK関連の利用規約への同意をコマンドラインでやることです。
GitHubでプロジェクト作成
予めCIしたいAndroidプロジェクトをGitHubのプロジェクトにしておきます。PrivateでもPublicでも構いません。
リポジトリちょっかにgradlew
がある構成の方が、gradlew
の実行を./gradlew
で出来るので少し楽です。
CircleCIでプロジェクトをフォローする
これでリポジトリにpushされるとCircleCIでビルドを試みるようになります。
circle.ymlを作成
CircleCIがヒルドするにはcircle.yml
というファイルが必要です。このファイルはリポジトリ直下に配置しましょう。
machine:
pre:
# デバッグ用に情報を出力
- env
- pwd
- ls
# チェックアウト関連
checkout:
post:
- echo CheckoutPost
- git submodule sync
- git submodule update --init
# 依存関係解決
dependencies:
pre:
# ライセンスへの同意
- echo y | android update sdk --no-ui --all --filter "tools,build-tools-25.0.2,platform-tools,android-25,extra-android-m2repository"
- mkdir -p $ANDROID_HOME/licenses
# ローカル開発環境で同意した情報を使用する
# OSXの場合このファイルは`~/Library/Android/sdk/licenses/android-sdk-license`
- echo "8933bad161af4178b1185d1a37fbf41ea5269c55" > ${ANDROID_HOME}/licenses/android-sdk-license
override:
- ./gradlew dependencies || true
# テスト実行
test:
override:
- ./gradlew test
# コンパイル
compile:
override:
- ./gradlew assembleDebug
- cp -r app/build/outputs $CIRCLE_ARTIFACTS
dependencies
dependenciesではライセンスへの同意をしています。echo -y
から始まる行と `echo "8333..."の行の両方が必要かよくわからないのですが、このcircle.ymlでビルドできました。
compile
./gradlew assembleDebug
でデバッグビルドのapkを作成しています。
生成されたディレクトリを$CIRCLE_ARTIFACTSにコピーすることで、CircleCIの成果物として管理画面からダウンロードできるようになります。
わーい たーのしー
まとめ
いかがでしたでしょうか。CircleCIでAndroidアプリをビルドする方法を紹介しました。CIはエンジニアを幸せにしてくれると思います。積極的に取り入れていきたいですね。
使用したサンプルプロジェクトを公開していますので、自由に使用してください。