LoginSignup
120
117

More than 5 years have passed since last update.

AndroidのCIはDockerでビルドするのが楽

Last updated at Posted at 2015-03-08

追記: 実際に運用する際はライセンスにご注意ください: 公開用DockerイメージにAndroid SDKを含めるのはライセンス違反という話 - Islands in the byte stream

三行まとめ

  • 社内のJenkins環境 / Travis-CI / Circle-CI など、CIサービスごとにビルド設定を調べるのにうんざりしたのでDockerizeしてみた
  • 手元とCI環境がまったく同じになるので一度動くようになったら安定して動かせるはず
  • とりあえずCircle-CIで試して動いた

前提

OSXの場合、boot2dockerとdockerをhomebrewで入れましょう。boot2dockerはdockerを動かすためのVMとLinuxイメージを適当に整えてくれるやつです。

brew install Caskroom/cask/virtualbox # まだ入れてなければ
brew install boot2docker docker
boot2docker init
boot2docker shellinit >> ~/.zshrc # 適当
boot2docker start

Dockerfile

Dockerfile はこんな感じ。samtstern/android-sdk をベースにした gfx2015/android を使っていて、これはJDK8ベースなandroid project設定です。

アプリ固有の設定としては、projectをCOPYしてビルドするだけ。

これで手元でもCircle−CIでもビルドできて、実際のビルド結果の実例は以下のようになります。

ビルドとテストをしているだけで、成果物の取得はまだしていませんが、だいたいこんな感じでいけそうですね。

ハマりどころ

  • FROM samtstern/android-sdk にしたらJDK 7で、JDK 8に依存しているgradle pluginが動かなかったので利用できず
    • samtstern/android-sdk をベースにしたDockerfileを作ることにした
  • android-sdk-linux archiveの展開がそのままではうまくいかなかった
    • Circle-CIでだけ tar: android-sdk-linux: Cannot change ownership to uid 144773, gid 5000: Invalid argument というエラーが出る
    • tar --no-same-owner でとりあえず解決
  • WORKDIR /project しているにもかかわらず COPY . . がうまく動かず、/ にコピーされてしまった
    • COPY . /project にして解決
120
117
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
120
117