
Dependabotのプルリクエストコメント欄にignoreコマンドを入力して特定のパッケージを無視してみた
こんにちは!製造ビジネステクノロジーの小林です。
Dependabotは依存パッケージの更新を自動化してくれるとても便利なツールですよね。
しかし、すべての更新が歓迎されるわけではありません。特にメジャーバージョンの更新は破壊的変更を含むことが多く、慎重な対応が必要です。
今回は実際に、更新を無視したいパッケージがある場合の手順を試してみました。
Dependabotとは?
GitHubが提供する自動依存関係更新ツールで、リポジトリ内のライブラリやパッケージに脆弱性・バグ・新機能が発見された場合、自動的にアップデートのプルリクエストを作成します。
Dependabotの初期設定
まずは、GitHubリポジトリでDependabotを設定していきましょう。わずか数ステップで自動更新の仕組みが整います。
「Create Config File」ボタンをクリックして、Dependabotの設定ファイルを作成します。
今回は以下の設定を使用します。この設定により、マイナーとパッチレベルの更新が週1回、1つのプルリクエストにまとめられます。
version: 2 # Dependabot設定ファイルのバージョンを指定
updates:
- package-ecosystem: "npm" # パッケージエコシステムを指定(npmを指定)
directory: "/" # パッケージ(package.json)の場所
schedule:
interval: "weekly" # 更新頻度(週1回)
groups:
# すべてのパッケージの更新を1つのプルリクエストにまとめる
dependencies: # グループ名を指定
patterns:
- "*" # すべてのパッケージを対象にする
update-types:
- "minor" # マイナーバージョンアップデート
- "patch" # パッチバージョンアップデート
設定内容を確認したら「Commit changes」ボタンをクリックして保存します。これで.github/dependabot.ymlファイルがリポジトリに追加され、自動更新の準備が整いました。
Dependabotの作成したプルリクエストを確認する
Dependabotが正常に動作していることを確認してみましょう。設定が完了すると、自動的にパッケージの更新チェックが始まります。
ちなみに「Check for updates」ボタンをクリックすることで、手動でDependabotを起動できます。
Dependabotが作成したプルリクエストを見てみましょう。設定に応じて複数のプルリクエストが作成されています。
今回は先ほど設定した「groups」機能によって作成された「dependencies」グループのプルリクエストを確認します。複数のパッケージ更新がひとつのプルリクエストにまとめられていることがわかります。
特定のパッケージをプルリクエストから無視する
プロジェクトの状況によっては、特定のパッケージだけ更新したくないケースがあります。ここでは設定ファイルを変更せずに、プルリクエストのコメント欄から直接除外する便利な方法を紹介します。
コメントコマンドで特定パッケージを除外
今回はTypescriptパッケージを更新対象から除外してみます。プルリクエストのコメント欄に以下のコマンドを入力します。
@dependabot ignore typescript
コマンドを入力すると、Dependabotから確認メッセージが返ってきます。このメッセージでは「無視設定を解除するまでTypescriptの更新通知は行わない」と伝えています。
しばらくすると、現在のプルリクエストがクローズされ、Typescriptを除外した新しいプルリクエストが自動的に作成されます。
新しいプルリクエストを確認すると、確かにTypescriptパッケージが除外されていることがわかります!
無視設定の確認と解除
無視設定の確認方法
Typescriptパッケージが無視設定を確認するには、以下のコマンドを使用します。
@dependabot show typescript ignore conditions
無視設定の解除方法
パッケージの更新を再開したい場合は、無視設定を解除できます。
解除コマンドを実行すると、現在のプルリクエストはクローズされ、Typescriptパッケージを含む新しいプルリクエストが自動的に作成されます。
まとめ
Dependabotを活用して依存パッケージの更新を自動化する際、必要に応じて特定のパッケージを更新対象から除外できることがわかりました。
今回ご紹介した方法では、設定ファイルを変更することなく、プルリクエストのコメント欄に簡単なコマンドを入力するだけで特定パッケージの更新を制御できます。この手軽さは、急な対応が必要な場合に特に役立ちますね!
ただし、コメントベースの設定は、リポジトリの設定として保存されるものの、「どのパッケージが無視設定されているか」が一目で確認できません。チームで開発を行う場合はこれらの無視設定を.github/dependabot.ymlファイル内に明示的に記述して管理する方法もありかと思います。本記事がDependabotの導入・運用のお役に立てば幸いです。
参考資料