Github Actionsからgemを公開する

Github actionsで rake releaseを実行してgemをrubygemsに公開した、ということを書きます。

https://docs.github.com/ja/actions/guides/building-and-testing-ruby

Github actionsを使ってgemを公開する方法は、公式で紹介しているんだけど、「actionをマニュアル実行」もしくは「タグを打った」時にrubygemsにpushするworkflowを作る、ということが書かれている。 自分の気持ちでは、打ち間違いする可能性があるのでタグ名の入力を手で入れたくなくて、ソースコードに埋め込んでいる値でタグを打って欲しい、と思った。ということでこれをやりました。
(rake releaseを実行すると、githubにtagが打たれて、rubygemsにアップロードしている。)

name: Publish to RubyGems

on:
  [workflow_dispatch]

jobs:
  release:
    runs-on: ubuntu-latest
    permissions:
      contents: write

    steps:
    - uses: actions/checkout@v2
      with:
        token: ${{ secrets.GITHUB_TOKEN }}
    - name: Set up Ruby 2.6
      uses: ruby/setup-ruby@v1
      with:
        ruby-version: 2.6
        bundler-cache: true
    - name: Publish to RubyGems
      run: |
        git config --local user.email "action@github.com"
        git config --local user.name "GitHub Action"

        mkdir -p $HOME/.gem
        touch $HOME/.gem/credentials
        chmod 0600 $HOME/.gem/credentials
        printf -- "---\n:rubygems_api_key: ${RUBYGEMS_API_TOKEN}\n" > $HOME/.gem/credentials
        bundle exec rake release
      env:
        RUBYGEMS_API_TOKEN: "${{secrets.RUBYGEMS_API_TOKEN}}"
        GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}}

secrets.RUBYGEMS_API_TOKEN は、 https://github.com/splaplapla/pbmenv/settings/secrets/actions からセットする必要があります。
はまりポイントがいくつかあって、githubに書き込むときには権限が必要で、 actions/checkout@v2 でtokenを渡す必要があった。(rakeタスクのソースを読むとgit pushしていた。)。他には、なんかあったけど忘れた。

終わり