GitHub の Dependabot version updates で依存ライブラリを継続的に更新する

| 2 min read
Author: masahiro-kondo masahiro-kondoの画像

開発しているソフトウェアのコードベースを久々に変更しようとすると、使用しているライブラリのバージョンが古くなっていて、そのままだと作業継続できないという状況に陥ります。最新、またはメンテナンスされているバージョンを取り込んで動作確認するのに時間が取られてしまい、肝心のコードにたどりつかず、「明日から本気出す」ということよくありますよね。GitHub の Dependabot version updates を利用することで、継続的に依存関係のライブラリのアップデートに追従することができます。

Dependabot は依存ライブラリに脆弱性が発見された場合アラートを発砲したり、修正バージョンにアップデートする PR を発行したりする Bot です。この機能は、Profile の Code security and analysis で有効・無効化できます。

Dependabot は脆弱性に対応するアップデートだけでなく、使用しているライブラリを常に最新にしておくためにも利用できます。

GitHub Dependabot のバージョンアップデートについて | GitHub Docs

Insights > Dependency graph > Dependabot のタブで設定できます。ちょっと気付きにくい画面遷移だったのですが、先日 UI が改善され、リポジトリの Settings > Code Security and analysis のタブから設定できるようになりました。

Enable Dependabot version updates from the repository settings page | GitHub Changelog

Enable をクリックすると、マニフェストファイル dependabot.yml の編集画面になります

このリポジトリは Go Modules を使っているので、package-ecosystemgomoddirectory は go.mod があるプロジェクトルートを指定しました。scheduledailyweekly などが選べますが、テンプレート通り daily を指定。更新時刻やタイムゾーンも指定できます。

version: 2
updates:
- package-ecosystem: "gomod"
directory: "/"
schedule:
interval: "daily"
time: "07:00"
timezone: "Asia/Tokyo"

この他、target-branchdevelop など特定のブランチを指定することも可能です。main ブランチに PR を取り込んでビルドが壊れてしまうなどの影響が懸念される場合に設定できます。

設定値方法やオプションの詳細については、以下のドキュメントを参照してください。

dependabot.yml をコミットした後は、Configure ボタンから設定を変更できます。

もちろん、ローカルで dependabot.yml を修正して commit/push しても同じです。

Insights の画面でも Go Modules が有効になっていることがわかります。

設定したら早速 PR が来ました。

Go の CLI の引数を処理するフレームワーク cobra のバージョンを上げる PR です。

ライブラリバージョンの更新を Dependabot で定期的に行うことで、メンテナンス作業が楽になります。PR が作成された時にビルド・テストする CI を整備しておくことで、安心してマージできるようになります。継続的にメンテナンスしているソフトウェアのリポジトリには設定しておくとよいでしょう。

豆蔵デベロッパーサイト - 先週のアクセスランキング
  1. 基本から理解するJWTとJWT認証の仕組み (2022-12-08)
  2. AWS認定資格を12個すべて取得したので勉強したことなどをまとめます (2022-12-12)
  3. Nuxt3入門(第4回) - Nuxtのルーティングを理解する (2022-10-09)
  4. Viteベースの高速テスティングフレームワークVitestを使ってみる (2022-12-28)
  5. Nuxt3入門(第8回) - Nuxt3のuseStateでコンポーネント間で状態を共有する (2022-10-28)
  6. ORマッパーのTypeORMをTypeScriptで使う (2022-07-27)
  7. Nuxt3入門(第1回) - Nuxtがサポートするレンダリングモードを理解する (2022-09-25)
  8. Jest再入門 - 関数・モジュールモック編 (2022-07-03)
  9. GitHub Actions - 構成変数(環境変数)が外部設定できるようになったので用途を整理する (2023-01-16)
  10. Nuxt3入門(第7回) - Nuxt3のプラグイン・ミドルウェアを使う (2022-10-23)