GithubのDependabotを使ってみる
時間がない人へのまとめ
この記事では、依存関係にあるパッケージに更新があった場合にアップデートするPRを作成してくれたり、脆弱性がある場合にアラートを出してくれるDependabotを自分の管理するリポジトリに導入してみます。
目次
Dependabotって?
Dependabotは、依存関係にあるパッケージに更新があった場合にアップデートするPRを作成してくれたり、脆弱性がある場合にアラートを出してくれます。
実際にDependabotが作成したPRは以下のような感じです。
バージョンが何から何に変わり、その間にどういった変更が入ったかも記載してくれます。
Dependabotの機能は大きく下記の3つになります。
名前 | 説明 |
---|---|
dependabot alerts | Dependabot アラートは、コードが安全でないパッケージに依存していることを示します。 |
Dependabot security updates | Dependabotは、セキュリティアップデートのプルリクエストを上げることで、脆弱性のある依存関係をあなたに代わって修正することができます。 |
Dependabot version updates | Dependabotを利用することで、使用するパッケージを常に最新のバージョンに更新することができます。 |
導入
さっそく、Dependabotにパッケージのupdateがある場合に自動でPRを作成してもらえるようにします。 今回は、自身の出しているOSSのwhrisのリポジトリに設定してみます。
リポジトリの設定
導入したいリポジトリの「settings>Code security and analysis」を開きます。 そして、Dependabotの項目内にある下記2つを有効化します。
- Dependabot alerts
- Dependabot security updates
これで、Dependabot がPRを自動的に作成し、Dependabot アラートを解決できるようになりました。
dependabot.ymlの作成
dependabotを使用するための設定を書きます。
導入したいリポジトリに、.github/dependabot.yml
を作成し下記内容を記載します。
version: 2
updates:
- package-ecosystem: "gomod"
directory: "/" # Location of package manifests
schedule:
interval: "weekly"
今回は、Goで書いているので、package-ecosystem
にgomod
を指定しています。
その他のパッケージマネージャーの指定する場合の値は、下記を確認してください。
ほかに設定できるオプションもあるので、気になる方は下記を確認してください。
これで、準備は完了です。
確認
mainに変更内容をあげて動作を確認してみましょう。
「Insights>Dependency graph>Dependabot」を確認すると以下のように、go.mod
がchecking nowと表示されていると思います。
これが正常に完了すると下記のようになります。
この状態で、使用しているパッケージに更新等あれば、下記のようにPRが作成されます。
作成されたPRの中身を確認すると、下記のように、バージョンが何から何に変わったのか、どのようなcommitが積まれているのかなどが記載されています。
おわりに
今回パッケージの脆弱性対応と更新をしやすくしてくれるDependabotの導入を行いました。 しっかりテストを整備しておけば、Dependabotがパッケージ更新のPRを作成して、CIでテストが自動で回り動作が担保された状態になります。 ぜひ導入していない方は導入してコードをセキュアに保ちやすくする環境を作ってみてはどうでしょうか?