GitHub ActionでAndroidのCIを設定してみた
ベータを申し込んだら1日で有効になったので使ってみた
設定
ひとまずPR時にUTとlintを並列で動かしてみる。
name: Android CI on: pull_request: branches: - develop jobs: unit_test: runs-on: ubuntu-latest steps: - uses: actions/checkout@v1 - name: set up JDK 1.8 uses: actions/setup-java@v1 with: java-version: 1.8 - name: Decode google-services.json env: GOOGLE_SERVICE: ${{ secrets.GOOGLE_SERVICE}} run: echo $GOOGLE_SERVICE | base64 --decode > ./app/google-services.json - name: Unit Test env: TZ: Asia/Tokyo run: ./gradlew testDebugUnitTest lint: runs-on: ubuntu-latest steps: - uses: actions/checkout@v1 - name: set up JDK 1.8 uses: actions/setup-java@v1 with: java-version: 1.8 - name: Decode google-services.json env: GOOGLE_SERVICE: ${{ secrets.GOOGLE_SERVICE}} run: echo $GOOGLE_SERVICE | base64 --decode > ./app/google-services.json - name: Lint run: ./gradlew lintDebug
を.github/workflows以下に置くだけ。 google-services.jsonは一旦base64のデコードでお茶を濁す。Secretsはリポジトリ -> Settings -> Secret -> Add a new secretで追加できる。 タイムゾーンは環境変数TZを設定してあげればよい。
感想
まず無料でベータだから仕方ないかもしれないがCircleCIに比べて単純に遅い。無課金のCircleCIで ./gradlew testDebugUnitTest
が1分10秒ほど、 ./gradlew lintDebug
が1分30秒ほどだったのに対し、GitHub Actionでは ./gradlew testDebugUnitTest
が3分20秒ほど、 ./gradlew lintDebug
が3分40秒ほどかかった。個人プロジェクトなど時間にこだわらない用途であればいい選択肢だと思う。無料で1リポジトリ辺り20並列まで使えるのはCircleCIやBitriseより遥かに上を行っているし、この程度の設定なら30分くらいで設定できた。実際のプロダクトで使うかはCPUが強いプランが来てくれたらかなと思った。
また↓の記事では不安定だったというのもあるのでそのあたりも改善されたい。
あとGitHub Actionが出たことによってCircleCIやBitriseとの競争がより激しくなり、互いのサービスがよりよくなる流れがきてるのがいいなと思った。