概要
どうも、@daiki1003です!Flutter
でもなんでもそうですが、普段開発をする上で
安定して高品質なプロダクトをリリースしなければならないため、CIは欠かせない存在になっていますね。
そんな必要不可欠なCIですが、1秒でも早く終わってほしいですよね?
毎回のことなので、少しでも改善できれば複利のように効いてくるので
ぜひ本記事を読んで使えるところは使ってみてくださいね!
最終的に完成したyamlも貼り付けるのでコピペで
使えると思いますよ 👍
今回CIの改善で行ったのは下記3点です。
・Flutter
インストールのキャッシュ
・flutter pub get
のキャッシュ
・build_runner
のキャッシュ
では行ってみましょー!
Flutterのインストールのキャッシュ
ここだけやるだけでも結構効果的ですね。
やり方は2通りあると思います。
・subosito/flutter-action@v2
を使い、cache
の有効化
・actions/cache@v2
の使用
今回は前者のみ解説しようと思いますが、もし要望があれば後者も追記しますね。
subosito/flutter-action@v2を使い、cacheの有効化
Flutter
をインストールする上で、一番使われているであろうsubosito/flutter-action
。
すでに使われている場合は、バージョンをv2にした上で、cache: true
を追加するだけでOKです。
v2にしないとcacheなんてキーはないよ、と怒られます。
もし、キャッシュが効けば3〜40秒ほどの時間短縮になるかと思います。(もちろん環境に依ります)
flutter pub getのキャッシュ
actions/cache@v2
を使っていきます。
Flutter
をインストールしたあとは、依存パッケージの取得などを行います。
その際に、flutter pub get
を行うと思いますがこの結果をキャッシュします。pubspec.lock
の内容が変更されたらキャッシュは使用しないようにするため、pubspec.lock
のハッシュ値をキーに含めます。
これも成功すれば数十秒の時間短縮になるかと思います。
build_runnerのキャッシュ
これは必要ない人もいると思いますが、freezed
などの生成ファイルをコミットしていない場合、
CIでflutter pub run build_runner build --delete-conflicting-outputs
を実行すると思います。
もちろんファイル数や設定によりますがこれも数分かかったりする場合があります。
この結果をキャッシュします。pubspec.lock
及びasset_graph.json
が更新されたらキャッシュは使用しません。
これは生成対象となるファイル数やbuild.yaml
の設定によりますが、かなりの時間短縮につながる可能性がありますね。
最後に
これらを全て行うyamlファイルは以下のようになります。
いかがでしたでしょうか?
では、良いCIライフを!
本記事は、以下の記事を参考にさせていただきました!
Twitterフォローお願いします
「次回以降も記事を読んでみたい!」「この辺分からなかったから質問したい!」
そんな時は、是非Twitter (@daiki1003)やInstagram (@ashdik_flutter)のフォローお願いします♪
Twitterコミュニティ参加お願いします
Twitterコミュニティ「Flutter lovers」を開設しました!参加お待ちしております😁
☕️ Buy me a coffee
また、記事がとても役に立ったと思う人はコーヒーを奢っていただけると非常に嬉しいです!
コメント