いつものようにJenkinsでUnityアプリをビルドしていると、こんなエラーが。
Compiled shader 'TMPro/Distance Field (Surface)' in 18.91s
gles (total internal programs: 90, unique: 50)
gles3 (total internal programs: 90, unique: 71)
Assertion failed on expression: 'success && actual == (UInt64)size'
当該のシェーダーを見ても問題はないどころか、そもそもこんなassertを書いている箇所はありません。
…で、ざっくり言うと、
PCのハードディスクがいっぱいになった
が原因です。
調べたところ、たまたまこのシェーダーをコンパイルした瞬間にハードディスクがいっぱいになり、ファイルが書き込めず、想定と実際のファイルサイズが違ってしまったのでビルドスクリプトのassertで止まった、ということのようです。
特に自動ビルドPCには過去の成果物ファイルがたまったりしてHDDがいっぱいになりがちで、かつ、普段はログインしないPCなので確認がおろそかになります。注意しましょう。イマドキ500GB程度ではこころもとないですね…。
なお、Windowsで出力されるファイルが2GBを超えた場合などにも同じエラーが出ることがあったようなんですが、これはUnity5.3.0で解消されているようです。
[BUILDING] WINDOWS STANDALONE NOT BUILDABLE WHEN SHAREDASSETS FILE IS LARGER THAN 2GB
https://issuetracker.unity3d.com/issues/building-windows-standalone-not-buildable-when-sharedassets-file-is-larger-than-2gb