時間がない人へのまとめ

この記事では、依存関係にあるパッケージに更新があった場合にアップデートするPRを作成してくれたり、脆弱性がある場合にアラートを出してくれるDependabotを自分の管理するリポジトリに導入してみます。

目次

Dependabotって?

Dependabotは、依存関係にあるパッケージに更新があった場合にアップデートするPRを作成してくれたり、脆弱性がある場合にアラートを出してくれます。

実際にDependabotが作成したPRは以下のような感じです。

バージョンが何から何に変わり、その間にどういった変更が入ったかも記載してくれます。

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の設定画面
Dependabotの設定画面

これで、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-ecosystemgomodを指定しています。

その他のパッケージマネージャーの指定する場合の値は、下記を確認してください。

ほかに設定できるオプションもあるので、気になる方は下記を確認してください。

これで、準備は完了です。

確認

mainに変更内容をあげて動作を確認してみましょう。

「Insights>Dependency graph>Dependabot」を確認すると以下のように、go.modがchecking nowと表示されていると思います。

Dependency graphの様子
Dependency graphの様子

これが正常に完了すると下記のようになります。

チェックが完了している様子
チェックが完了している様子

この状態で、使用しているパッケージに更新等あれば、下記のようにPRが作成されます。

作成されたPR
作成されたPR

作成されたPRの中身を確認すると、下記のように、バージョンが何から何に変わったのか、どのようなcommitが積まれているのかなどが記載されています。

Dependabotの作成したPR
Dependabotの作成したPR

おわりに

今回パッケージの脆弱性対応と更新をしやすくしてくれるDependabotの導入を行いました。 しっかりテストを整備しておけば、Dependabotがパッケージ更新のPRを作成して、CIでテストが自動で回り動作が担保された状態になります。 ぜひ導入していない方は導入してコードをセキュアに保ちやすくする環境を作ってみてはどうでしょうか?

参考