【Github】GitHub Dependabot

■ はじめに

 CI/CD に関する打ち合わせの中で、
「Dependabot (ディベンダ ボット)」なるものが出てきたので
メモしておく。

目次

【1】Dependabot
【2】サポート言語
【3】Dependabot の 適用
 1)Python / Poetry

【1】Dependabot

* パッケージ管理(e.g. Poetry)のマニフェストファイルを見て、
 安全ではないライブラリを検知し、Web UI上に通知したり、
 それを解決するためのプルリクを自動で生成してくれるサービス
* 元は独立したサービスだったが、2019 年に GitHub が買収

実際に表示されたメッセージ

We found potential security vulnerabilities in your dependencies.
Only the owner of this repository can see this message.

【2】サポート言語

* JavaScript/TypeScript (npm, yarn)
* Python (pip, pipenv, pip-compil, poetry)
* Ruby (Bundler)
* PHP (Composer)
* Rust (Cargo)
* Docker
* Terraform
* GitHub Actions
* Java/Kotolin (Gradle, Maven)
* .NET (NuGet)
* Go (Go modules)
etc

 => 主要な言語は、ほぼ網羅している。
 => 詳細は、以下の公式サイトを参照のこと。

https://docs.github.com/en/code-security/supply-chain-security/keeping-your-dependencies-updated-automatically/configuration-options-for-dependency-updates#package-ecosystem

【3】Dependabot の 適用

* 結構、簡単に導入できるので、試してみてもいいかも。

1)Python / Poetry

https://docs.github.com/ja/code-security/supply-chain-security/keeping-your-dependencies-updated-automatically/configuration-options-for-dependency-updates#package-ecosystem

より抜粋
~~~~~~~~~~
pipenvやpoetryといったパッケージマネージャでは、
pipのYAML値を使う必要があります。
たとえばPythonの依存関係を管理するのにpoetryを使っており、
Dependabotに新しいバージョンのために依存関係のマニフェストファイルを
モニターさせたい場合は、dependabot.ymlファイル中で
package-ecosystem: "pip"を使ってください。
~~~~~~~~~~

実際の適用手順

[1] Github に [Insights]-[Dependency graph]-[Dependabot]を選択
[2] 「Enable Dependabot」、「Create config file」ボタン押下
 => 「dependabot.yml」ができる
[3] 「- package-ecosystem: ""」を「- package-ecosystem: "pip"」に変更
 => 例えば、Gradle の場合、「- package-ecosystem: "gradle"」に変更
 => 例えば、npm の場合、「- package-ecosystem: "npm"」に変更
 => 設定値は、以下のサイト参照。

https://docs.github.com/ja/code-security/supply-chain-security/keeping-your-dependencies-updated-automatically/configuration-options-for-dependency-updates

[4] 「Commit new file」ボタン押下

dependabot.yml

version: 2
updates:
  - package-ecosystem: "pip" # See documentation for possible values
    directory: "/" # Location of package manifests
    schedule:
      interval: "daily"

参考文献

https://qiita.com/takasp/items/c2907f2da855c207b8ef
https://dev.classmethod.jp/articles/dependabot-101/
https://dev.classmethod.jp/articles/github-dependabot-2021/

関連記事

Github ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2019/07/18/234652
GithubGithub Actions 編 ~
https://dk521123.hatenablog.com/entry/2021/11/04/142835
パッケージ管理 ~ Poetry ~
https://dk521123.hatenablog.com/entry/2021/11/09/155903
Python を奇麗に書くためのツール群
https://dk521123.hatenablog.com/entry/2021/11/08/221219