Dependabot で GitHub Packages に公開した Gem のアップデートをチェックする
dependabot.com
で提供されていた旧 Dependabot の終了に伴い、GitHub に組み込まれた新 Dependabot に移行した。
とあるプロジェクトで GitHub のプライベートリポジトリから Gem をインストールしていたのだが、新 Dependabot ではプライベートリポジトリの Gem には対応していない上に、アップデートの対象から除外することもできない。そのため、新 Dependabot に移行するために、GitHub Packages で Gem を公開する作業が必要だった。
今回は、新 Dependabot で GitHub Packages に公開した Gem のアップデートをチェックするための手順をメモしておく。 GitHub Packages で Gem を公開する作業は終わっている前提。
Dependabot から GitHub Packages にアクセスする準備
Dependabot から GitHub Packages にアクセスするため、GitHub ユーザーの Personal access token を発行して Dependabot の Secrets に追加する。
Personal access token の発行
Personal access token の発行手順は以下。発行するユーザーについては、Organization であれば Machine User が一般的と思われる。
GitHub Packages の読み取り権限が必要なので、read:packages
権限を割り当てる。
Personal access token を Dependabot の Secrets に設定
Organization に Dependabot 専用の Secrets を設定する項目がある。手順は以下。
Name
には MACHINE_USER_TOKEN
など分かりやすい名前を入力する。後ほど Dependabot の設定ファイルで {{secrets.MACHINE_USER_TOKEN}}
のように指定する。
Value
には先ほど作成した Personal access token を入力する。
Dependabot の設定ファイルを編集
Gem を使用するリポジトリの Dependabot の設定ファイルを編集する。
以下は .github/dependabot.yml
の例。
version: 2
registries:
github-packages:
type: rubygems-server
url: https://rubygems.pkg.github.com
token: ${{secrets.MACHINE_USER_TOKEN}}
updates:
- package-ecosystem: bundler
directory: "/"
registries:
- github-packages
insecure-external-code-execution: allow
RubyGems の URL について、ドキュメントのサンプルではリポジトリ名まで指定しているが、ホスト名のみの指定で問題なかった。
insecure-external-code-execution
は外部コードの実行を許可するかのオプションだが、Bundler の場合は allow
を指定しないとアップデートが失敗する。
詳しくは以下を参照。
手順は以上。
せっかく GitHub に組み込んでいるのだから、もっと楽にできないのかというのが正直な感想。
おまけ
Gem を GitHub Packages にリリースする GitHub Action はこちらを使用した。