暇人じゃない

Dependabot で GitHub Packages に公開した Gem のアップデートをチェックする
GitHubGemDependabot

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 はこちらを使用した。


About

chocoby (GitHub / Twitter)

個人事業主のソフトウェア開発者です。 Ruby と Rails を使った Web サービスの開発を得意としています。

CurryBu というサービスや、jp_prefecture という Gem を作っています。