概要
前回 dockerhub に push するアクションを作成しました
今回は rubygems に push するアクションを作成しました
環境
- macOS 11.7.10
- GithubActions v3
- rubygems (2024/06/18時点)
gem.yml
- vim .github/workflows/gem.yml
name: ci
on:
workflow_dispatch:
inputs:
rubygems-otp-code:
description: RubyGems OTP code
required: true
jobs:
release:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: ruby/setup-ruby@v1
with:
ruby-version: 3.2.2
- run: bundle install
- name: Setup git config
run: |
git config --global user.email "your-github-email-address@xxx.com"
git config --global user.name "your-github-name"
- name: git
run: |
git status
git diff
- name: Publish to RubyGems
run: bundle exec rake release
env:
GEM_HOST_API_KEY: ${{ secrets.RUBYGEMS_API_KEY }}
Rubygems の API キーの取得
設定 -> API キー
で作成できます
rubygems に push できる権限を扶養しましょう
RUBYGEMS_API_KEY の登録
リポジトリのシークレットに登録します
自分のプロジェクト -> Settings -> Secrets and variables -> Actions -> Repository secrets -> New repository secret
トラブルシューティング
There are files that need to be committed first.
ローカルの開発環境が Mac の場合 nokogiri など darwin 用のパッケージがインストールされます
nokogiri (1.16.6-x86_64-darwin)
racc (~> 1.4)
この状態の Gemfile.lock で Github Actions 上の Ubuntu で bundle install を実行すると linux 用の nokogiri がインストールされます
+ nokogiri (1.16.6-x86_64-linux)
+ racc (~> 1.4)
Github Actions では必ずこれがインストールされてしまうので事前に Mac 上で Linux 用のパッケージも追加してあげる必要があります
-
bundle lock --add-platform linux
You have enabled multi-factor authentication.
Rubygems で 2auth を有効にしている場合はワンタイムパスワードを入力する必要があります
env に GEM_HOST_OTP_CODE: ${{ github.event.inputs.rubygems-otp-code }}
を追加することでアクション実行時にワンタイムパスワードを入力することができるのでこれで対応します
動作確認
version.rb や bundle update をして何かしら更新しましょう
そして Github に push します
今回ワークフローは手動でなので手動実行します
さらにワンタイムパスワードを入力しましょう
するとワークフローが実行されて version.rb に記載した新しいバージョンの gem が公開されていることが確認できると思います
最後に
Github Actions で rubygems に自動で push してみました
master に push されると自動で実行されます
Rubygems の API キーには有効期限があるので切れた場合は再度 Github に登録してあげましょう
0 件のコメント:
コメントを投稿