GitHub PackagesにてRuby Gemを公開した時の記録。結論としては、Gemをデプロイできたが、RubyGemsと同様の運用は不可能で、考えていた用途に合わない。
前提
今回デプロイしたGem
デプロイの方針
自ホストから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できない
非公開パッケージ、内部パッケージ、公開パッケージを発行、インストール、削除するには、アクセス トークンが必要です。
とあるように、インストールする際にも、アクセストークンが必要なため、作成者が公開しても、アクセストークンなしでは、Gemのインストールができない。インストラクションに従って、認証すれば、インストール可能である。
使い道がよくわからない。