自動依存関係更新とは?自動操縦でのパッチ適用
自動依存関係更新は、toolingを使って古いまたは脆弱なパッケージを検出し、アップグレードをあなたに提案します。そのためパッチ適用が公開のペースに追いつきます。
依存関係は、あなたが見るのをやめた瞬間に古くなっていきます。自動依存関係更新は、botにreleaseとadvisoryを追跡させ、アップグレードのpull requestを自ら開かせることで、そのギャップを埋めます。目標は、セキュリティパッチが恐ろしく遅れた飛躍ではなく、小さくリスクの低い更新になるよう、upstreamに十分近くいることです。
toolingがすること
更新botはあなたのmanifestとlockfileを監視し、最新のreleaseや既知のadvisoryと比較し、変更とそのchangelogを添えたpull requestを立てます。あなたのCIが各PRに対して実行され、merge前にpass/failのシグナルを与えます。
一般的なツール
DependabotとRenovateが人気の選択肢です。Renovateは高度に設定可能(grouping、schedule、automergeルール)で、Dependabotは深くGitHubに統合されています。どちらも手動の雑用をレビュー可能なPRの安定した流れに変えます。
セキュリティ更新対通常更新
- Security updates: 公開された脆弱性に素早く反応する。
- Routine updates: 最新に保ち、次のセキュリティ更新を些細なものにする。
- Grouped updates: 低リスクの更新をまとめてレビュー負荷を減らす。
- Automerge: よくテストされた低リスクの更新を手を触れずに着地させる。
良いテストの役割
自動更新は、テストスイートがリグレッションを捕まえる場合にのみ安全です。CIカバレッジが強いほど、マイナー更新をより自信を持ってautomergeでき、人間のレビューをmajorに取っておけます。テストが弱いと、すべてを手作業でレビューせざるを得ません。
更新疲労を避ける
PRが多すぎるとチームはそれらを無視し始め、目的を損ないます。通常更新をグループ化し、クリティカルパスの外にスケジュールし、即座の注意はセキュリティPRに取っておきましょう。調整された設定はシグナルを高く保ちます。
重要なポイント
- 自動更新は依存関係を最新に保ち、セキュリティパッチを小さく保ちます。
- DependabotとRenovateはレビュー可能なPRを開き、各PRに対してCIが実行されます。
- 良いテストカバレッジこそが、安全にautomergeして疲労を避けることを可能にします。