CircleCI触ったことのない人間でしたが、使えるようにならにゃということで備忘録。
目的
CircleCI使って、テスト〜デプロイ〜リリース作業を自動化する。
テストはローカルでもいいので、とりあえず今回はデプロイの自動化について。
やること
GitHubとCircleCIの連携
これはCircleCIとGitHubアカウントを連携すれば大丈夫。
DeployGateのAPIキーをCircleCI環境変数に保存
プロジェクトの設定→Environment Variables→Add Variables
プロジェクト直下にcircle.ymlを配置
general:
branches:
only:
# プッシュされたビルド実行するブランチを指定
- pre-release
artifacts:
# Artifactsで見えるようにするファイル
- app/build/outputs/apk/app-debug.apk
machine:
java:
# java8を指定
version: openjdk8
environment:
# $ANDROID_HOMEを指定 (おまじない)
ANDROID_HOME: /usr/local/android-sdk-linux
dependencies:
pre:
# 新しいSDKだとCircleCIがライセンス持ってないので、ローカルに合わせる
- mkdir $ANDROID_HOME/licenses
- echo "8933bad161af4178b1185d1a37fbf41ea5269c55" >> $ANDROID_HOME/licenses/android-sdk-license
override:
# AndroidManifest.xmlを参照し、必要なSDKとビルドツールを指定
- echo y | android update sdk --no-ui --filter "android-25,build-tools-25.0.2"
test:
override:
# 今回はテスト書いていないので何もしない
- echo "Nothing to do here."
deployment:
master:
# デプロイするブランチ名を指定
branch: pre-release
commands:
# デバッグAPK生成
- ./gradlew assembleDebug
# DeployGateにアップロード
# 環境変数DEPLOY_GATE_API_KEYはCircleCIで設定
- curl -F "token=${DEPLOY_GATE_API_KEY}" -F "file=@app/build/outputs/apk/app-debug.apk" -F "message=deployed" https://deploygate.com/api/users/ユーザー名/apps
とりあえずこれを配置して、ターゲットブランチをプッシュする。
結果
・プッシュするだけでテスト、ビルド、デプロイをしてくれちゃう。
・DeployGateに勝手に上がるので動作確認楽チン。