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の作成以外にもリントやリリースノートの作成など軽量なワークフローで使うよう置き換えてみた。現状大きな問題は見られないので、簡単にコスト削減が実現できて満足している。

Next

リーディングリストをもっと使いやすくするChrome拡張`AtodeYomu`をリリースした

PR

関連記事