GitHub PackagesにてRuby Gemの公開

GitHub PackagesにてRuby Gemを公開した時の記録。結論としては、Gemをデプロイできたが、RubyGemsと同様の運用は不可能で、考えていた用途に合わない。

前提

  • GitHub PackagesにてRuby Gemの公開
  • 個人アカウント
  • rakeコマンドでタグ打ちとGithub Actions経由でGemのデプロイ

今回デプロイしたGem

github.com

デプロイの方針

自ホストからrake releaseでも可能だが、運用を考えると、GitHub Actionsに任せたかった。そのため、タグをpushした時点で、GitHub Actionsのランナーの中で、bundle exec rake releaseを打鍵するようにした。

参考サイトには、GitHubマーケットプレイスで公開されているワークフローがあると記載があったが、シークレットを扱う・挙動が不明や、その他色々理由があるため、そのパッケージは使用しなかった。

  • 参考:GitHub Actionsワークフロー
name: Publish gem

on:
  push:
    tags:
      - 'v*'
jobs:
  release:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: ruby/setup-ruby@v1
        with:
          ruby-version: '3.3'
      - run: bundle install
      - name: Setup git config
        run: |
          git config --global user.name "YumaYX"
          git config --global user.email "86939129+YumaYX@users.noreply.github.com"
      - name: Publish to RubyGems
        run: bundle exec rake release
    env:
      GEM_HOST_API_KEY: ${{ secrets.RUBYGEMS_API_KEY }}

わかりにくかったところ

workflowの変数

${{ secrets.RUBYGEMS_API_KEY }}

${{ secrets.RUBYGEMS_API_KEY }}は、レポジトリに登録できるシークレット。RUBYGEMS_API_KEYは、登録する際、好きな名前をつけられる。値には、Personal Access Tokens(Classic)のghp_xxxxを登録する。TOKENのみ記載する。

認証なしでbundle installできない

docs.github.com

非公開パッケージ、内部パッケージ、公開パッケージを発行、インストール、削除するには、アクセス トークンが必要です。

とあるように、インストールする際にも、アクセストークンが必要なため、作成者が公開しても、アクセストークンなしでは、Gemのインストールができない。インストラクションに従って、認証すれば、インストール可能である。

使い道がよくわからない。

参考