この記事は GRIPHONE Advent Calendar 2020 10日目の記事です。
こんにちは、多分クライアントエンジニアのKappaBullです。
今回は色々な更新が少し楽になるDependabotをご紹介します。
Dependabotとは
Dependabotは、既知のセキュリティ脆弱性について依存関係を監視し、脆弱性がある場合はその脆弱性が修正されたバージョンを使うよう更新するPull Requestを自動的に作成することで、プロジェクトを安全かつ最新の状態に維持します。
https://github.blog/jp/2019-05-24-building-an-interconnected-community-together/
公式の一文より。
つまり、『自動で更新の確認してPR作ってくれる君』です。
これまで温かみのある手動で確認していたライブラリの更新等をこれを入れるだけで簡単に自動化が行える訳ですね。
Dependabotはもともとは独立したサービスでしたが、Githubに買収されてネイティブ機能として取り込まれたので導入も簡単になり使いやすくなりました。
あと、プライベートリポジトリでも無料で使える様になりましたのでそれも嬉しいところ。
対応パッケージ
対応しているパッケージは結構多く、下記のパッケージに対応しています。
- Bundler
- Cargo
- Composer
- Docker
- Elm
- gitサブモジュール
- GitHub Actions
- Goモジュール
- Gradle
- Maven
- Mix
- npm
- NuGet
- pip
- Terraform
対応しているパッケージにはGitサブモジュール等もあり、少し痒い所に手が届く様な物にも対応しているので対応パッケージが無い場合でも活用の幅があると思います。
使い方
現在、GitHub公式のdependabotとこれまでの独立したサービスとして提供されてた方法の二通りがあります。
- 従来のDependabot管理画面から設定を行う方法
- .github/dependabot.ymlに設定ファイルを配置して設定するGithubActionsの様な方法(こっちがGitHub公式)
今はDependabot管理画面での設定時にdependabot.ymlへコンバートを行う事が出来ますが、従来の方法は無くなると思われるのでDependabotを導入する人はGithubActionsの様な方のYAMLを書く方法で覚えていくと良いと思います。
上記画像が従来の管理画面
簡単な書き方的には下記の様な設定をYAMLに書き起こします。
version: 2
updates:
# GitHubActionsの依存関係を維持する
- package-ecosystem: "github-actions"
directory: "/"
schedule:
interval: "daily"
これだけでGithubActions自体の更新に対して適時PRを作成してくれるので、docker-compose等を長く利用している人はわかるかもしれませんが、過去の記法で知らぬ間に動かなくなる様な事象を低減してくれます。
この書き方だとmasterブランチへのPRを作成する形になりますが、<a href="https://docs.github.com/ja/free-pro-team@latest/github/administering-a-repository/configuration-options-for-dependency-updates#target-branch">target-branch</a>
の設定方法もありますのでYAMLへ追加して適時developブランチ等に変更しましょう。
詳しくは依存関係の更新の設定オプションに記載がありますので見てみると良いでしょう。
その他、PR作成からそのままオートマージしてほしい場合などは従来のDependabotではオートマージ機能がありましたが、GitHub公式になる際に機能が削除されたのでMergery等を入れてPR作成時にautomergeラベルを付けると良い感じに運用できるので活用してみるといいでしょう。
さいごに
まだまだこれからのGitHubActions更新へ付いていく為や未だに更新の多いコンテナ界隈等、活用出来る所は多く存在すると思いますので導入して少しでも開発に集中出来る土台の一部にして貰えたら幸いです。