public virtual void OnPreBuild(IStepLocator locator) { var pipelineStep = locator.Get <BuildPipelineStep>(); var buildTarget = pipelineStep.BuildTarget; var buildTargetGroup = BuildPipeline.GetBuildTargetGroup(buildTarget); var defines = CompilerDefinesUtils.ReadDefines() .GetAllDefinesByPlatform(buildTargetGroup) .Union(_addDefines) .Except(_removeDefines) .ToList(); CompilerDefinesUtils.Write(defines, buildTargetGroup); }
/// <summary> /// Собирает информацию о билде и создает файл /// </summary> public virtual void OnPreBuild(IStepLocator locator) { var buildInfo = ScriptableObject.CreateInstance <BuildInfo>(); buildInfo.BuildTimestamp = DateTime.Now; #if UNITY_5_6_OR_NEWER buildInfo.BundleIdentifier = PlayerSettings.applicationIdentifier; #else buildInfo.BundleIdentifier = PlayerSettings.bundleIdentifier; #endif buildInfo.BundleVersion = !string.IsNullOrEmpty(PlayerSettings.bundleVersion) ? PlayerSettings.bundleVersion : "N/A"; buildInfo.BuildDefines = CompilerDefinesUtils.ReadDefines().GetAllDefinesByPlatform(EditorUserBuildSettings.selectedBuildTargetGroup).ToArray(); // Если собирается на сервере CI ряд параметров берётся из переменных окружения. if (EnvVar("TEAMCITY_VERSION") != null) // { buildInfo.MilestoneCodename = EnvVar("TEAMCITY_PROJECT_NAME") ?? "TEAMCITY N/A"; buildInfo.BuildJob = EnvVar("TEAMCITY_BUILDCONF_NAME") ?? "TEAMCITY N/A"; buildInfo.SourceCodeVersion = EnvVar("BUILD_VCS_NUMBER") ?? "TEAMCITY N/A"; if (!int.TryParse(EnvVar("BUILD_NUMBER") ?? "-1", out buildInfo.BuildNumber)) { buildInfo.BuildNumber = -1; } } else { buildInfo.MilestoneCodename = "N/A"; buildInfo.BuildJob = "N/A"; buildInfo.SourceCodeVersion = "N/A"; buildInfo.BuildNumber = -1; } Debug.Log("BuildInfo: \n" + buildInfo); var directoryName = Path.GetDirectoryName(BuildInfoFullPath); if (!Directory.Exists(directoryName)) { Directory.CreateDirectory(directoryName); } AssetDatabase.CreateAsset(buildInfo, BuildInfoFullPath); AssetDatabase.ImportAsset(BuildInfoFullPath, ImportAssetOptions.ForceUpdate | ImportAssetOptions.ForceSynchronousImport); }