Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
117
Help us understand the problem. What is going on with this article?

More than 5 years have passed since last update.

@gfx

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

追記: 実際に運用する際はライセンスにご注意ください: 公開用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 にして解決
117
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
117
Help us understand the problem. What is going on with this article?