前置き
"Flutter でも Codecov を導入して test モチベを上げよう!" で書いたように、CircleCI で Flutter の analyze + test を走らせて Codecov で coverage を眺められるようにしているのですが、GitHub Actions で同様のことをやってみました。
Workflow をどう書くか
結論
先に結論となるファイルを示すとこんな感じです。
シンプルなサンプルにしました。
これで flutter analyze
+ flutter test
+ codecov への upload
が出来ちゃいます
あ、.codecov.yml
は配置してあるものとします。
.github/workflows/flutter_analyze_and_test.yaml
name: flutter_analyze_and_test
on:
pull_request:
types: [opened, synchronize]
push:
branches:
- master
jobs:
test:
name: sample test sensuikan1973
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v1
- uses: actions/setup-java@v1
with:
java-version: '12.x'
- uses: subosito/flutter-action@v1
with:
channel: 'stable'
- run: flutter pub get
- run: flutter analyze
- run: flutter test --verbose --coverage --coverage-path=~/coverage/lcov.info
- uses: codecov/codecov-action@v1.0.2
with:
token: ${{secrets.CODECOV_TOKEN}}
file: ~/coverage/lcov.info
PR 上ではこんな感じに表示されます。
ちなみに、CircleCi ほど cache 周りを頑張れないのが辛いのですが、今後強化されていくんだと思います。
依存
Marketplace で気になる単語を調べると、既に色々出ています!
今回使わせてもらったのは以下 2 つ。
- Codecov GitHub Action : 早くも公式で出ているので、これを使う
- Flutter action : サードパーティとして早くも出ているものがあったので使わせてもらいました。
hook
events-that-trigger-workflows に書かれているように、とても大量のトリガーが用意されていて、すごい色々なことに使えそうですね。
今回はとりあえず、PR の更新(push)のタイミング, master への push のタイミング で走らせたかったので、こんな風に書きました。
on:
pull_request:
types: [opened, synchronize]
push:
branches:
- master
secrets
バッジも出せる
いいですねー
詳細は 公式ドキュメント を参照のこと。