GitLab CIとxcprettyのロケールエラー解消の手順

GitLabのCIによるXCTest実行中に、特定のエラーによりジョブが失敗する事象が確認されています。

/Library/Ruby/Gems/2.6.0/gems/xcpretty-0.3.0/lib/xcpretty/parser.rb:434:in `===': invalid byte sequence in US-ASCII (ArgumentError)
	from /Library/Ruby/Gems/2.6.0/gems/xcpretty-0.3.0/lib/xcpretty/parser.rb:434:in `update_test_state'
	from /Library/Ruby/Gems/2.6.0/gems/xcpretty-0.3.0/lib/xcpretty/parser.rb:307:in `parse'
	from /Library/Ruby/Gems/2.6.0/gems/xcpretty-0.3.0/lib/xcpretty/formatters/formatter.rb:88:in `pretty_format'
	from /Library/Ruby/Gems/2.6.0/gems/xcpretty-0.3.0/lib/xcpretty/printer.rb:19:in `pretty_print'
	from /Library/Ruby/Gems/2.6.0/gems/xcpretty-0.3.0/bin/xcpretty:84:in `block in <top (required)>'
	from /Library/Ruby/Gems/2.6.0/gems/xcpretty-0.3.0/bin/xcpretty:83:in `each_line'
	from /Library/Ruby/Gems/2.6.0/gems/xcpretty-0.3.0/bin/xcpretty:83:in `<top (required)>'
	from /usr/local/bin/xcpretty:23:in `load'
	from /usr/local/bin/xcpretty:23:in `<main>'
2022-06-28 19:15:17.149 xcodebuild[28965:188047] NSFileHandle couldn't write. Exception: *** -[_NSStdIOFileHandle writeData:]: Broken pipe

この記事では、この問題を解決するための方法を解説します。

目次

エラー原因

xcodebuildからのログ出力に、xcprettyが対処できない文字列が含まれ、これがxcprettyのクラッシュを引き起こし、結果的にxcodebuildのログ出力が阻害されるという事象が発生しています。これがこのエラーの原因です。

解決方法

gitlab-runnerのロケールを正しく設定することで解決できます。具体的な手順は以下の通りです。

(1) ~/Library/LaunchAgents/gitlab-runner.plistファイルを開きます。

(2) 次のようにEnvironmentVariablesを追加します。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>

<!-- 省略 -->

	<key>EnvironmentVariables</key>
	<dict>
		<key>LC_ALL</key>
		<string>en_US.UTF-8</string>
	</dict>
</dict>

(3) マシンを再起動するか、次のようにして、gitlab-runnerを再起動します。

gitlab-runner stop
gitlab-runner start

著書紹介

Authored Books

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

Akira Hayashi (林 晃)のアバター Akira Hayashi (林 晃) Representative(代表), Software Engineer(ソフトウェアエンジニア)

アールケー開発代表。Appleプラットフォーム向けの開発を専門としているソフトウェアエンジニア。ソフトウェアの受託開発、技術書執筆、技術指導・セミナー講師。note, Medium, LinkedIn
-
Representative of RK Kaihatsu. Software Engineer Specializing in Development for the Apple Platform. Specializing in contract software development, technical writing, and serving as a tech workshop lecturer. note, Medium, LinkedIn

目次