JenkinsのWindows nodeでUnityのAndroidビルドが失敗する

Unity

JenkinsのノードとしてWindowsを利用する際に、ノードの起動方法でWindowsサービスに登録する方法がある。Windowsサービスとしてノードを起動した場合に、UnityのAndroidビルドを実行すると次のエラーが発生することがある。

Failed to get socket connection from UnityShaderCompiler.exe shader compiler!

このエラーログだけではよくわからないが、エラーメッセージで検索すると次が見つかった。

Jenkins automated deployment reported Failed to get socket connection from - Programmer Sought
Jenkins automated deployment reported Failed to get socket connection from, Programmer Sought, the best programmer technical posts sharing site.

Jenkinsがプロセスを起動させるが、上限を超えると問題が発生するらしい。確かにAndroidのビルド中はシェーダーのプロセスが複数動いていたので、このプロセス起動に失敗してビルドに失敗していたらしい。元記事に対応方法はあるが、念のため手順を書いておく。

1. regedit.exeを起動

2. HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager\SubSystems\Windows を探す

3. 値のSharedSectionの値を変更する
デフォルトの値: %SystemRoot%\system32\csrss.exe ObjectDirectory=\Windows SharedSection=1024,20480,768 Windows=On SubSystemType=Windows ServerDll=basesrv,1 ServerDll=winsrv:UserServerDllInitialization,3 ServerDll=winsrv:ConServerDllInitialization,2 ServerDll=sxssrv,4 ProfileControl=Off MaxRequestThreads=16
SharedSection=1024,20480,768 -> SharedSection=1024,20480,2048

コメント