はじめに
こんにちは、STORESの高田です。
今回は Dependabot を用いてライブラリのアップデートに追従する方法についてご紹介します。
プロジェクト開始時に見落とされがちな物のうちの一つに、ライブラリのアップデートがあると思います。途中から更新に追いつこうとすると気が思い作業になるので、早めに設定しておくと後々苦労せずに済みます。
アップデート方針を決める
アップデート方針はチームに合うように調整すると良いと思いますが、今回は以下の方針で設定します。
- ライブラリのアップデートにはできるだけ工数をかけない
- セキュリティアラートは可能な限り早く対応する
Dependabot の設定
Dependabot には「依存関係のアップデート(.github/dependabot.yml
)」と「脆弱性関連の通知(Dependabot alerts)」があります。今回の方針に沿うためにはそれぞれ設定していく必要があります。
上記のアップデート方針に対応するそれぞれの設定例は次のようになります。
.github/dependabot.yml
今回はプロジェクト初期での設定を想定して、 package-ecosystem で gomod
, npm
, github-actions
, docker
を設定します。
ポイントとしては次の通りです。
groups
やdirectories
を設定しておく- 関連するライブラリの更新が1つの Pull Request に集約されるためレビューしやすくなります
github-actions
やdocker
も設定しておく- 見落とされがちですが、アップデートがあるので対応しておきます
設定例は次の通りです。
version: 2 updates: - package-ecosystem: "gomod" directories: - "/pg-api" - "/backend" open-pull-requests-limit: 5 reviewers: - "backend-reviewers" schedule: interval: "monthly" time: "10:00" timezone: "Asia/Tokyo" groups: gomod-dependencies: patterns: - "*" - package-ecosystem: "npm" directory: "web-ui" open-pull-requests-limit: 10 rebase-strategy: "disabled" reviewers: - "frontend-reviewers" schedule: interval: "monthly" time: "10:00" timezone: "Asia/Tokyo" groups: npm-dependencies: patterns: - "*" - package-ecosystem: "github-actions" directory: "/" open-pull-requests-limit: 5 reviewers: - "backend-reviewers" schedule: interval: "monthly" time: "10:00" timezone: "Asia/Tokyo" groups: dependencies: patterns: - "*" - package-ecosystem: "docker" directories: - "**/*" reviewers: - "backend-reviewers" schedule: interval: "monthly" time: "10:00" timezone: "Asia/Tokyo"
※抜粋したため一部省略しています。また、その他の設定項目は dependabot.yml ファイルの構成オプション - GitHub Docs をご参照ください。
Dependabot alerts
https://github.com/:org/:repo/settings/security_analysis
から "Dependabot alerts" と "Dependabot security updates" を有効にします
このように設定すると、当初のアップデート方針に沿って運用できると思います。
事例として参考にしてもらえればと思います。