GitHubActionsのubuntu-slim上でgit-pr-release実行時に発生するEncoding::CompatibilityErrorの対処法
はじめに
先日、GitHubActions上でよりスペックの小さい1vCPUのubuntu-slimが登場した。
早速軽量なワークフローをこのランナーに置き換えようと対応していたところ、リリース用のPullRequestを作成するワークフローで使用していたgit-pr-releaseの実行時に以下のエラーが発生した。
(erb):34:in 'block in Git::Pr::Release::Util#build_pr_title_and_body': incompatible character encodings: BINARY (ASCII-8BIT) and UTF-8 (Encoding::CompatibilityError)今回はその対応方法について残しておく。
対応方法
原因としては、ubuntu-slimランナー上でのRubyではエンコーディングがASCII-8BITであり、PullRequestのタイトルに含まれるUTF-8文字の日本語を処理できずエラーが発生していたのだと思われる。実際に、日本語タイトルを英語タイトルに変更した場合にはエラーは発生しなかった。
解決方法としては、Rubyの環境変数にエンコーディング用のオプション-ERUF-8を渡すことで対応できた。
runs-on: ubuntu-slim
env:
  RUBYOPT: -EUTF-8最初はerbファイルにエンコーディング用のマジックコメントを追加して対応を試してみた。しかし、git-pr-releaseはテンプレートファイルの1行目をタイトルとして使用する仕様のためか、code: missing_fieldエラーが発生してしまってうまくいかなかった。
<%# encoding: UTF-8 %>おわり
新しく登場したubuntu-slimランナーだが、リリース用のPullRequestの作成以外にもリントやリリースノートの作成など軽量なワークフローで使うよう置き換えてみた。現状大きな問題は見られないので、簡単にコスト削減が実現できて満足している。
 
 
  
 