[Flutter] GitHub Dependabot

2023-03-18 hit count image

GitHubのDependabotを使って自動でFlutterパッケージのバージョンを検討してアップデータがある場合、Pull requestを自動で生成する方法について説明します。

概要

GitHubDependabotと言う機能を提供しております。GitHubでこの機能を使うと、定期的にプロジェクトで使ってるパッケージ、ライブラリのバージョンをチェックしてアップデートがある場合、Pull requestを自動で生成してくれます。

GitHubDependabotに最近Flutter/Dartのpubパッケージ管理者が追加されました。

今回のブログポストではGitHubDependabotを使ってFlutterで使ってるパッケージのバージョンをチェックしてアップデートする方法について説明します。

FlutterのDependabotの設定

GitHubDependabotを使うためにはプロジェクトフォルダに.githubフォルダを生成した後、dependabot.ymlファイルを生成する必要があります。

.github/dependabot.ymlファイルを生成したら、当該ファイルを開いて下記のように修正します。

version: 2
enable-beta-ecosystems: true
updates:
  - package-ecosystem: "pub"
    directory: "/"
    schedule:
      interval: weekly
      time: "09:00"
      timezone: Asia/Tokyo
    open-pull-requests-limit: 5

pubのパッケージ管理者はまだbetaバージョンなのでenable-beta-ecosystems: trueを設定する必要があります。

Flutterプロジェクトでたくさんのパッケージを使っている場合、たくさんのPull requestが生成され、実際の作業に邪魔になる可能性があります。したがってopen-pull-requests-limit: 5オプションを設定してDependabotが生成できるPull requestの数を制限したり、scheduleを設定して、特定のサイクルでDependabotを起動するように設定することができます。

AndroidのDependabotの設定

AndroidはGradleを使ってライブラリのバージョンを管理しています。したがって、DependabotにGradleを設定してAndroidに追加したライブラリのバージョンを管理することができます。.github/dependabot.ymlファイルを開いて、下記のように修正してGradleのためのDependabotを追加します。

version: 2
enable-beta-ecosystems: true
updates:
  ...
  - package-ecosystem: "gradle"
    directory: "/android"
    schedule:
      interval: weekly
      time: "09:00"
      timezone: Asia/Tokyo

iOSのDependabotの設定

iOSはCocoaPodsを使ってライブラリのバージョンを管理します。しかし、残念ながらiOS用のDependabotは現在提供されてないです。Dependabotがサポートしてる言語は公式ドキュメントで確認できます。

確認

このように.github/dependabot.ymlファイルを生成して設定したら、当該ファイルをGitHubに上げます。(mainブランチにmergeします。)そしたら特定のサイクルがおわっると次のようにDependabotが新しいバージョンでPull requestを作ってくれることが確認できます。

Flutter - Dependabot pull request

当該Pull requestを開いて見ると、次のようにRelease notesCommitsが確認できます。

Flutter - Dependabot details: release notes and commits

各項目開いて見ると、詳しく修正内容を確認することができます。

  • Release notes
Flutter - Dependabot release notes detail
  • commits
Flutter - Dependabot commits detail

これを使うと、新しいバージョンの変更を確認することが分かるし、現在プロジェクトの影響範囲を確認することができます。

File changedタブを開くとpubspec.yamlpubspec.lockファイルが変更されたことが確認できます。

Flutter - Dependabot file changed detail

GitHub Actions

次はGitHubDependabotは皆さんが使ってるパッケージのアップデートがある場合、自動でPull requestを生成してくれます。このように生成したPull requestを適用するかどうか考えるようになりますが、FlutterLinterの設定やテストコードを上手く作成して、GitHub Actionsを使うと当該Pull requestを検査することができます。

また、次のように.github/dependabot.ymlを修正しておくと、DependabotGitHub Actionsで使ってるActionsのバージョンをチェックしてアップデートがある場合お知らせしてくれます。

version: 2
enable-beta-ecosystems: true
updates:
  ...
  - package-ecosystem: github-actions
    directory: "/"
    schedule:
      interval: weekly
      time: "09:00"
      timezone: Asia/Tokyo

完了

これでGitHubDependabotを使って、Flutterプロジェクトで使ってるパッケージのバージョンを自動でチェックしてアップデートするように構成する方法をみてみました。皆さんもDependabotを使ってプロジェクトで使ってるパッケージのバージョンをいつも最新バージョンを使えるようにしてみてください。

私のブログが役に立ちましたか?下にコメントを残してください。それは私にとって大きな大きな力になります!

アプリ広報

今見てるブログを作成たDekuが開発したアプリを使ってみてください。
Dekuが開発したアプリはFlutterで開発されています。

興味がある方はアプリをダウンロードしてアプリを使ってくれると本当に助かります。

Posts