検証環境
概要
- Jenkins から Addressables のビルドを実行する場合、
アセットバンドルのビルドに失敗しても、
Jenkins 上ではビルドに成功したことになってしまった
- アセットバンドルをビルドする AddressableAssetSettings.BuildPlayerContentImpl で
ビルドに失敗したら例外を投げるようにして、
なおかつ Jenkins からアセットバンドルをビルドする時に
AddressableAssetSettings.BuildPlayerContent を呼び出している箇所を
try ~ catch で囲んで、例外をキャッチしたら
EditorApplication.Exit( 1 );
を実行するようにすれば
Jenkins で失敗扱いになる
AddressableAssetSettings.cs
1906 行目以降
internal void BuildPlayerContentImpl()
{
if (Directory.Exists(Addressables.BuildPath))
{
try
{
Directory.Delete(Addressables.BuildPath, true);
}
catch (Exception e)
{
Debug.LogException(e);
}
}
var buildContext = new AddressablesDataBuilderInput(this);
var result = ActivePlayerDataBuilder.BuildData<AddressablesPlayerBuildResult>(buildContext);
if (!string.IsNullOrEmpty(result.Error))
Debug.LogError(result.Error);
AddressableAnalytics.Report(this);
if (BuildScript.buildCompleted != null)
BuildScript.buildCompleted(result);
AssetDatabase.Refresh();
if ( !string.IsNullOrEmpty( result.Error ) )
{
throw new Exception( result.Error );
}
}
AddressableAssetSettings.BuildPlayerContent を呼び出している箇所
try
{
AddressableAssetSettings.BuildPlayerContent();
}
catch ( Exception e )
{
EditorApplication.Exit( 1 );
}