CircleCIとDeployGateで自動化を少し進めてみる
アプリをリリースして、アップデートするたびに手順が多くてめんどくさいと思い、自動化について調べてみて、少しやってみた備忘録です。
使用ツール
CircleCIとDeployGateを使いました。
流れとしては、githubにソースコードをプッシュもしくはマージされると、ビルドとテストを実行し、問題なければDeployGateで最新の状態のアプリがダウンロード可能になるというものです。
ツールを使えるようにする
CircleCIとDeployGateをインストールします。
手順は割愛しますが、両方とも無理プランで登録しました。
CircleCIは無料プランだと1コンテナまでなので、必要に応じてプランを上げる必要があるかもしれません。
ymlの作成
ymlファイルを作成して、DeployGateに上げるまでの手順を記載します。
①aliasの作成
場合によっては同じ手順が存在するかと思いますので、呼び出せるようにまとめます。
ymlでは&name
で名前をつけて*name
で参照することができる
aliases:
android_docker: &android_docker
docker:
- image: circleci/android:api-27
environment:
TZ: Asia/Tokyo
steps:
- restore_cache: &restore_cache
key: &jars_key jars-{{ checksum "build.gradle" }}-{{ checksum "app/build.gradle" }}
- run: &download_deps
name: Download dependencies
command: sudo chmod +x ./gradlew
- save_cache: &save_cache
paths:
- ~/.gradle
key: *jars_key
- run: &build_debug_apk
name: Build debug APK
command: ./gradlew assembleDebug
- run: &test
name: test
command: ./gradlew test
- run: &upload_to_deploy_gate
name: Upload to DeployGate
command: |
APK_PATH=app/build/outputs/apk/debug/app-debug.apk
curl -F "file=@app/build/outputs/apk/debug/app-debug.apk" -F "token=${DEPLOY_GATE_API_KEY}" -F "message=Build by CircleCI" (DeployGateのURL)
aliases:
でバージョン指定、steps:
でのちに行う手順をまとめています。ビルドやデプロイのコマンド等をまとめています。
②ワークフローの作成
次に、ビルドしてからDeployGateにアップロードするまでのワークフローを記載します。
version: 2
jobs:
build:
<<: *android_docker
steps:
- checkout
- restore_cache: *restore_cache
- run: *download_deps
- save_cache: *save_cache
- run: *build_debug_apk
test:
<<: *android_docker
steps:
- checkout
- restore_cache: *restore_cache
- run: *download_deps
- save_cache: *save_cache
- run: *test
deploy:
<<: *android_docker
steps:
- checkout
- restore_cache: *restore_cache
- run: *download_deps
- save_cache: *save_cache
- run: *build_debug_apk
- run: *upload_to_deploy_gate
workflows:
version: 2
build_and_deploy:
jobs:
- build
- test
- deploy:
requires:
- build
- test
filters:
branches:
only: master
context: (DeployGateで設定した値)
workflows:
が実行する順序で、Jobsが何をするかの記載です。
今回の場合だと、Githubからチェックアウトし、ビルドとテストを実行し、問題なければDeployGateに上げるという流れにしています。
workflows:
では実行するための条件を少し加えています。
requires:
で必要条件を設定しています。
ビルドとテストが成功しないと先に進まないようにしました。
そして、only:master
でマスターブランチに変更が入った場合のみ実行するようにしています。
最後のcontextはDeployGateで設定するもので、設定したcontextで①で使った${DEPLOY_GATE_API_KEY}
を設定しています。
簡単に記載しましたが、ドキュメントが詳しいので、ある程度のことは載っていると思います。
また、DeployGateに自動的に更新されたアプリが表示されたときは自動化っていいなあと思いました。
リリースするまでに多くの手順が存在するため、少しでも簡略化できるなら使ったほうがいいなあと思いました。
参照
Author And Source
この問題について(CircleCIとDeployGateで自動化を少し進めてみる), 我々は、より多くの情報をここで見つけました https://qiita.com/kumas/items/754d1aba29c35fa7b9b2著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .