public IEnumerable <BuildTargetConfig> GetSupportedTargets(BuildContextSettings contextSettings) { // Filter targets for CI var targetConfigs = BuildTargets .Where(t => t.Enabled && contextSettings.Matches(t.Target)) .ToList(); // Filter out any deprecated targets var supportedTargets = targetConfigs .Where(c => !c.Deprecated) .ToList(); // Which build targets are not supported by current install? var missingTargets = supportedTargets .Where(c => !BuildSupportChecker.CanBuildTarget(c.Target)) .ToList(); // Error on missing required build support if (missingTargets.Any(c => c.Required)) { var targetNames = string.Join(", ", missingTargets .Where(c => c.Required) .Select(c => c.Target.ToString())); throw new BuildFailedException($"Cannot build for required ({targetNames}) because build support is not installed in the Unity Editor."); } // Log builds we're skipping if (missingTargets.Count > 0) { var targetNames = string.Join(", ", missingTargets.Select(c => c.Target.ToString())); Debug.LogWarning( $"Skipping ({targetNames}) because build support is not installed in the Unity Editor and the build target is not marked as 'Required'."); supportedTargets.RemoveAll(t => missingTargets.Contains(t)); } return(supportedTargets); }
public static List <BuildContext> GetBuildContexts(BuildConfig buildConfig, BuildContextSettings contextSettings) { var result = new List <BuildContext>(); foreach (var workerType in contextSettings.WantedWorkerTypes) { var environmentConfig = buildConfig.GetEnvironmentConfigForWorker(workerType, contextSettings.BuildEnvironment); if (environmentConfig == null) { continue; } IEnumerable <BuildTargetConfig> supportedTargets; try { supportedTargets = environmentConfig.GetSupportedTargets(contextSettings); } catch (BuildFailedException exception) { throw new BuildFailedException($"Build failed for {workerType}. {exception.Message}"); } result.AddRange(supportedTargets.Select(targetConfig => new BuildContext { WorkerType = workerType, BuildEnvironment = contextSettings.BuildEnvironment, ScriptingImplementation = contextSettings.ScriptImplementation ?? targetConfig.ScriptingImplementation, BuildTargetConfig = targetConfig, IOSSdkVersion = (targetConfig.Target == BuildTarget.iOS) ? contextSettings.IOSSdkVersion : null })); } return(result); }