結論
image: uber/android-build-environment:latest
pipelines:
branches:
staging:
- step:
script:
- mkdir -p "$ANDROID_HOME/licenses"
- echo -e "\n8933bad161af4178b1185d1a37fbf41ea5269c55" > "$ANDROID_HOME/licenses/android-sdk-license"
- echo -e "\n84831b9409646a918e30573bab4c9c91346d8abd" > "$ANDROID_HOME/licenses/android-sdk-preview-license"
- echo y | android update sdk --no-ui -a
- ./gradlew assembleStagingDebug
こうなります。
これを、app直下に設置しておけば、push時にpipelineが起動します。
調べるのに、少し苦労しましたが、これでビルドすることができました。
解説
Androidのビルド環境の準備
image: uber/android-build-environment:latest
Androidをビルドする時のお決まり。
ブランチ指定
branches:
staging:
どのブランチにPushしたら動かすかを指定したい場合。
今回は、stagingって名前のブランチにpushされると動くようにしています。
特にない場合は、
default:
だけにする。
スクリプト
- step:
script:
これ以下に動かしたいスクリプトを記述
ライセンスを書き込み、SDKをアップデートする
- mkdir -p "$ANDROID_HOME/licenses"
- echo -e "\n8933bad161af4178b1185d1a37fbf41ea5269c55" > "$ANDROID_HOME/licenses/android-sdk-license"
- echo -e "\n84831b9409646a918e30573bab4c9c91346d8abd" > "$ANDROID_HOME/licenses/android-sdk-preview-license"
- echo y | android update sdk --no-ui -a
ここもBitbucketPipeLineで、Androidをビルドしようとすると、お決まりになります。
ライセンス情報ベタ書きワロスwwwwwとか思うかもしれないけど、みんな一緒なので問題ないです。
これがないと、ビルドに失敗します。
さぁビルドしよう
- ./gradlew assembleStagingDebug
よくあるビルドコマンドです。
ここは、それぞれの環境で変えて使ってもらうことになると思います。
テストの実行したり、Fabricにリリースしたり、マーケットにリリースしたり。
ちなみに、Bitbucketの処理実行時間の限界は、約2時間です。
120分動かしたところで、強制終了されちゃいました。
普通にビルドしたり、アップロードしたりするだけなら、十分ですね。
最後に
Bitbucketだと、CircleCIも1TravisCI対応してないよーって状態ですよね。
Pipelineの登場で、お、自動デプロイいけるやも!
って思ったら、Androidデプロイの情報が英語でしかなくて、泣きそうだったので、今回書いておくことにしました。
どなたかのお役に立てば幸いです。
-
CircleCIは結構前に対応していたようです。Githubでログインしっぱなしで気付かなかった・・・。 ↩