177 lines
8.1 KiB
C#
177 lines
8.1 KiB
C#
using UnityEditor;
|
||
using UnityEngine;
|
||
using YooAsset;
|
||
using YooAsset.Editor;
|
||
|
||
public class JenkinsTool
|
||
{
|
||
static FileOffsetEncryption _encrypt;
|
||
static IEncryptionServices encrypt
|
||
{
|
||
get
|
||
{
|
||
if (_encrypt == null)
|
||
_encrypt = new FileOffsetEncryption();
|
||
return _encrypt;
|
||
}
|
||
}
|
||
/// <summary>
|
||
/// 打包某个资源包
|
||
/// </summary>
|
||
public static void PacketRes(string name, bool isRawFileIgnoreRule = false, BuildTarget target = BuildTarget.StandaloneWindows64, bool isprod = true)
|
||
{
|
||
//视频用原生文件构筑
|
||
var eline = isRawFileIgnoreRule ? EBuildPipeline.RawFileBuildPipeline : EBuildPipeline.BuiltinBuildPipeline;
|
||
//视频不做加密
|
||
var isEncrypt = !isRawFileIgnoreRule;
|
||
//视频不做压缩, 其他包采用LZ4压缩
|
||
var eCompress = isRawFileIgnoreRule ? ECompressOption.Uncompressed : ECompressOption.LZ4;
|
||
BuildInternal(target, name, VersionUtils.PackageVesion_Add1(name).ToString(), eline, isEncrypt, eCompress);
|
||
}
|
||
|
||
//public static void PacketScriptRes(BuildTarget target = BuildTarget.StandaloneWindows64, bool isprod = true)
|
||
//{
|
||
// string projectPath = Application.dataPath.Substring(0, Application.dataPath.Length - "/Assets".Length);
|
||
|
||
// string HotUpdateDllPath = $"{projectPath}/{HybridCLRSettings.Instance.hotUpdateDllCompileOutputRootDir}/{target}/";
|
||
// string HotUpdateDestinationPath = $"{Application.dataPath}/Script/Dlls/HotUpdateDlls/HotUpdateDll/HotUpdate.dll.bytes";
|
||
|
||
// CompileDllCommand.CompileDll(target);
|
||
// FileUtil.DeleteFileOrDirectory(HotUpdateDestinationPath);
|
||
// //File.Create(HotUpdateDestinationPath);
|
||
// FileUtil.CopyFileOrDirectory(HotUpdateDllPath + "HotUpdate.dll", HotUpdateDestinationPath);
|
||
//}
|
||
|
||
private static void BuildInternal(BuildTarget buildTarget, string packageName, string packageVersion = "0", EBuildPipeline eBuildPipeline = EBuildPipeline.BuiltinBuildPipeline, bool isEncrypt = true, ECompressOption eCompress = ECompressOption.LZ4)
|
||
{
|
||
Debug.Log($"<color=yellow>开始构建 : {buildTarget}</color>");
|
||
|
||
if(packageName == "ScriptPackage")
|
||
{
|
||
Editor_BuildApkPanel.Build_Script_Asset();
|
||
}
|
||
|
||
var buildoutputRoot = AssetBundleBuilderHelper.GetDefaultBuildOutputRoot();
|
||
var streamingAssetsRoot = AssetBundleBuilderHelper.GetStreamingAssetsRoot();
|
||
|
||
// 构建参数
|
||
BuiltinBuildParameters buildParameters = new BuiltinBuildParameters();
|
||
|
||
buildParameters.BuildOutputRoot = buildoutputRoot;
|
||
buildParameters.BuildinFileRoot = streamingAssetsRoot;
|
||
buildParameters.BuildPipeline = eBuildPipeline.ToString();
|
||
|
||
//if(eBuildPipeline != EBuildPipeline.RawFileBuildPipeline)
|
||
buildParameters.BuildBundleType = (int)EBuildBundleType.AssetBundle; //必须指定资源包类型
|
||
|
||
buildParameters.BuildTarget = buildTarget;
|
||
buildParameters.PackageName = packageName;
|
||
buildParameters.PackageVersion = packageVersion;
|
||
buildParameters.VerifyBuildingResult = true;
|
||
buildParameters.EnableSharePackRule = true; //启用共享资源构建模式,兼容1.5x版本
|
||
buildParameters.FileNameStyle = EFileNameStyle.BundleName_HashName;
|
||
buildParameters.BuildinFileCopyOption = EBuildinFileCopyOption.None;
|
||
buildParameters.BuildinFileCopyParams = string.Empty;
|
||
if (isEncrypt)
|
||
buildParameters.EncryptionServices = encrypt;
|
||
buildParameters.CompressOption = eCompress;
|
||
|
||
|
||
// 执行构建
|
||
BuiltinBuildPipeline pipeline = new BuiltinBuildPipeline();
|
||
|
||
var buildResult = pipeline.Run(buildParameters, true);
|
||
if (buildResult.Success)
|
||
{
|
||
//OnBuildFinished(packageName, buildResult.OutputPackageDirectory);
|
||
Debug.Log($"<color=yellow>{packageName}构建成功</color>");
|
||
|
||
//Debug.Log($"构建成功 : {buildResult.OutputPackageDirectory}");
|
||
//Debug.Log($"开始清空 : {packageName} 数据");
|
||
////ClearDirectory(Application.streamingAssetsPath + "/yoo/" + packageName);
|
||
//FileUtil.DeleteFileOrDirectory(Application.streamingAssetsPath + "/yoo/" + packageName);
|
||
//Debug.Log($"清空 : {packageName} 数据完成");
|
||
|
||
//Debug.Log($"开始复制 : {packageName} 数据");
|
||
|
||
if (EditorUserBuildSettings.activeBuildTarget == BuildTarget.Android)
|
||
{
|
||
//安卓下
|
||
FileUtil.CopyFileOrDirectory(buildResult.OutputPackageDirectory, "F:\\nginx-1.27.5\\html\\CDN\\Android\\v1.0\\" + packageName + "\\" + packageVersion);
|
||
}
|
||
else if (EditorUserBuildSettings.activeBuildTarget == BuildTarget.iOS)
|
||
{
|
||
//IOS下
|
||
FileUtil.CopyFileOrDirectory(buildResult.OutputPackageDirectory, "D:\\nginx-1.9.10\\html\\CDN\\IPhone\\v1.0\\" + packageName + "\\" + packageVersion);
|
||
}
|
||
else if (EditorUserBuildSettings.activeBuildTarget == BuildTarget.StandaloneWindows ||
|
||
EditorUserBuildSettings.activeBuildTarget == BuildTarget.StandaloneWindows64 ||
|
||
EditorUserBuildSettings.activeBuildTarget == BuildTarget.StandaloneOSX ||
|
||
EditorUserBuildSettings.activeBuildTarget == BuildTarget.StandaloneLinux64)
|
||
{
|
||
//PC下
|
||
FileUtil.CopyFileOrDirectory(buildResult.OutputPackageDirectory, "D:\\nginx-1.9.10\\html\\CDN\\PC\\v1.0\\" + packageName + "\\" + packageVersion);
|
||
}
|
||
else
|
||
{
|
||
Debug.Log("当前构建目标平台不是安卓、iOS 或 PC");
|
||
}
|
||
|
||
|
||
|
||
//Debug.Log($"复制 : {packageName} 数据完成");
|
||
}
|
||
else
|
||
{
|
||
Debug.LogError($"构建失败 : {buildResult.ErrorInfo}");
|
||
}
|
||
}
|
||
|
||
private static void BuildVideoInternal(BuildTarget buildTarget, string packageName, string packageVersion = "1.0")
|
||
{
|
||
Debug.Log($"开始构建 : {buildTarget}");
|
||
|
||
var buildoutputRoot = AssetBundleBuilderHelper.GetDefaultBuildOutputRoot();
|
||
var streamingAssetsRoot = AssetBundleBuilderHelper.GetStreamingAssetsRoot();
|
||
// 构建参数
|
||
RawFileBuildParameters buildParameters = new RawFileBuildParameters();
|
||
buildParameters.BuildOutputRoot = buildoutputRoot;
|
||
buildParameters.BuildinFileRoot = streamingAssetsRoot;
|
||
buildParameters.BuildPipeline = EBuildPipeline.RawFileBuildPipeline.ToString();
|
||
buildParameters.BuildTarget = buildTarget;
|
||
buildParameters.PackageName = packageName;
|
||
buildParameters.PackageVersion = packageVersion;
|
||
buildParameters.VerifyBuildingResult = true;
|
||
//buildParameters.EnableSharePackRule = true; //启用共享资源构建模式,兼容1.5x版本
|
||
buildParameters.FileNameStyle = EFileNameStyle.BundleName_HashName;
|
||
buildParameters.BuildinFileCopyOption = EBuildinFileCopyOption.None;
|
||
buildParameters.BuildinFileCopyParams = string.Empty;
|
||
|
||
// 执行构建
|
||
RawFileBuildPipeline pipeline = new RawFileBuildPipeline();
|
||
|
||
var buildResult = pipeline.Run(buildParameters, true);
|
||
if (buildResult.Success)
|
||
{
|
||
OnBuildFinished(packageName, buildResult.OutputPackageDirectory);
|
||
}
|
||
else
|
||
{
|
||
Debug.LogError($"构建失败 : {buildResult.ErrorInfo}");
|
||
}
|
||
}
|
||
|
||
static void OnBuildFinished(string packageName, string outputPackageDirectory)
|
||
{
|
||
Debug.Log($"构建成功 : {outputPackageDirectory}");
|
||
Debug.Log($"开始清空 : {packageName} 数据");
|
||
//ClearDirectory(Application.streamingAssetsPath + "/yoo/" + packageName);
|
||
FileUtil.DeleteFileOrDirectory(Application.streamingAssetsPath + "/yoo/" + packageName);
|
||
Debug.Log($"清空 : {packageName} 数据完成");
|
||
|
||
Debug.Log($"开始复制 : {packageName} 数据");
|
||
FileUtil.CopyFileOrDirectory(outputPackageDirectory, Application.streamingAssetsPath + "/yoo/" + packageName);
|
||
Debug.Log($"复制 : {packageName} 数据完成");
|
||
}
|
||
}
|