private void ApplyBuildDefinitions(IEnumerable <IBuildDefinition> buildDefinitions) { BuildDefinitions.AddRange(buildDefinitions.Select(buildDefinition => { var vm = new BuildDefinitionViewModel(buildDefinition); var definition = MonitorSettings.SelectedBuildDefinitions.SingleOrDefault(a => a.Id == vm.BuildDefinition.Id); if (definition != null && this.buildDefinitionEqualityComparer.Equals(definition, vm.BuildDefinition)) { vm.IsSelected = true; } return(vm); })); var obsoleteDefinitions = MonitorSettings.SelectedBuildDefinitions.Where(a => BuildDefinitions.All(x => x.BuildDefinition.Id != a.Id)).ToList(); foreach (var obsoleteDefinition in obsoleteDefinitions) { var vm = new BuildDefinitionViewModel(obsoleteDefinition) { IsDeleted = true, IsSelected = true }; BuildDefinitions.Add(vm); } }
public ActionResult Index() { var defs = MvcApplication.BuildDefinitions; var vm = new HomeIndexPageViewModel(); foreach (var buildDefinition in defs) { var artefacts = ArtefactRepository.GetFileListing(buildDefinition.ArtefactQuery); var build = new BuildDefinitionViewModel(buildDefinition.Title, buildDefinition.Anchor) { Artefacts = artefacts }; vm.Builds.Add(build); } vm.RenderInformation = "Rendered at: " + DateTime.Now.ToString() + ", .NET Version: " + Environment.Version; return(View(vm)); }
private static void ExportDefinition(BuildDefinitionViewModel b, string filePath) { ExportedBuildDefinition buildToExport = new ExportedBuildDefinition { Name = b.BuildDefinition.Name, Description = b.BuildDefinition.Description }; if (b.BuildDefinition.BuildController != null) { buildToExport.BuildController = b.BuildDefinition.BuildController.Name; } buildToExport.ContinuousIntegrationType = b.BuildDefinition.ContinuousIntegrationType; buildToExport.DefaultDropLocation = b.BuildDefinition.DefaultDropLocation; buildToExport.Schedules = new List<ExportedISchedule>(); foreach (var schedule in b.BuildDefinition.Schedules) { buildToExport.Schedules.Add(new ExportedISchedule { StartTime = schedule.StartTime, DaysToBuild = schedule.DaysToBuild, TimeZone = schedule.TimeZone }); } buildToExport.SourceProviders = new List<ExportedIBuildDefinitionSourceProvider>(); foreach (var provider in b.BuildDefinition.SourceProviders) { buildToExport.SourceProviders.Add(new ExportedIBuildDefinitionSourceProvider { Fields = provider.Fields, Name = provider.Name, SupportedTriggerTypes = provider.SupportedTriggerTypes }); } buildToExport.QueueStatus = b.BuildDefinition.QueueStatus; buildToExport.ContinuousIntegrationQuietPeriod = b.BuildDefinition.ContinuousIntegrationQuietPeriod; if (b.BuildDefinition.SourceProviders.All(s => s.Name != "TFGIT")) { buildToExport.Mappings = new List<ExportedIWorkspaceMapping>(); foreach (var map in b.BuildDefinition.Workspace.Mappings) { buildToExport.Mappings.Add(new ExportedIWorkspaceMapping { Depth = map.Depth, LocalItem = map.LocalItem, MappingType = map.MappingType, ServerItem = map.ServerItem }); } } buildToExport.RetentionPolicyList = new List<ExportedIRetentionPolicy>(); foreach (var rp in b.BuildDefinition.RetentionPolicyList) { buildToExport.RetentionPolicyList.Add(new ExportedIRetentionPolicy { BuildDefinition = rp.BuildDefinition, BuildReason = rp.BuildReason, BuildStatus = rp.BuildStatus, NumberToKeep = rp.NumberToKeep, DeleteOptions = rp.DeleteOptions }); } if (b.BuildDefinition.Process != null) { buildToExport.ProcessTemplate = b.BuildDefinition.Process.ServerPath; } var processParameters = WorkflowHelpers.DeserializeProcessParameters(b.BuildDefinition.ProcessParameters); if (processParameters.ContainsKey("AgentSettings")) { if (processParameters["AgentSettings"].GetType() == typeof(AgentSettings)) { AgentSettings ags = (AgentSettings)processParameters["AgentSettings"]; AgentSettingsBuildParameter agentSet = new AgentSettingsBuildParameter(); agentSet.MaxExecutionTime = ags.MaxExecutionTime; agentSet.MaxWaitTime = ags.MaxWaitTime; agentSet.Name = ags.Name; agentSet.Comparison = ags.TagComparison; agentSet.Tags = ags.Tags; buildToExport.TfvcAgentSettings = agentSet; } else if (processParameters["AgentSettings"].GetType() == typeof(BuildParameter)) { BuildParameter ags = (BuildParameter)processParameters["AgentSettings"]; { buildToExport.GitAgentSettings = ags; } } } buildToExport.ProcessParameters = WorkflowHelpers.DeserializeProcessParameters(b.BuildDefinition.ProcessParameters); File.WriteAllText(Path.Combine(filePath, b.Name + ".json"), JsonConvert.SerializeObject(buildToExport, Formatting.Indented)); }
public static void ExportDefinition(BuildDefinitionViewModel b, string filePath) { ExportedBuildDefinition buildToExport = new ExportedBuildDefinition { Name = b.BuildDefinition.Name, Description = b.BuildDefinition.Description }; if (b.BuildDefinition.BuildController != null) { buildToExport.BuildController = b.BuildDefinition.BuildController.Name; } buildToExport.ContinuousIntegrationType = b.BuildDefinition.ContinuousIntegrationType; buildToExport.DefaultDropLocation = b.BuildDefinition.DefaultDropLocation; buildToExport.Schedules = new List<ExportedISchedule>(); foreach (var schedule in b.BuildDefinition.Schedules) { buildToExport.Schedules.Add(new ExportedISchedule { StartTime = schedule.StartTime, DaysToBuild = schedule.DaysToBuild, TimeZone = schedule.TimeZone }); } buildToExport.SourceProviders = new List<ExportedIBuildDefinitionSourceProvider>(); foreach (var provider in b.BuildDefinition.SourceProviders) { buildToExport.SourceProviders.Add(new ExportedIBuildDefinitionSourceProvider { Fields = provider.Fields, Name = provider.Name, SupportedTriggerTypes = provider.SupportedTriggerTypes }); } buildToExport.QueueStatus = b.BuildDefinition.QueueStatus; buildToExport.ContinuousIntegrationQuietPeriod = b.BuildDefinition.ContinuousIntegrationQuietPeriod; if (b.BuildDefinition.SourceProviders.All(s => s.Name != "TFGIT")) { buildToExport.Mappings = new List<ExportedIWorkspaceMapping>(); foreach (var map in b.BuildDefinition.Workspace.Mappings) { buildToExport.Mappings.Add(new ExportedIWorkspaceMapping { Depth = map.Depth, LocalItem = map.LocalItem, MappingType = map.MappingType, ServerItem = map.ServerItem }); } } buildToExport.RetentionPolicyList = new List<ExportedIRetentionPolicy>(); foreach (var rp in b.BuildDefinition.RetentionPolicyList) { buildToExport.RetentionPolicyList.Add(new ExportedIRetentionPolicy { BuildDefinition = rp.BuildDefinition, BuildReason = rp.BuildReason, BuildStatus = rp.BuildStatus, NumberToKeep = rp.NumberToKeep, DeleteOptions = rp.DeleteOptions }); } if (b.BuildDefinition.Process != null) { buildToExport.ProcessTemplate = b.BuildDefinition.Process.ServerPath; } var processParameters = WorkflowHelpers.DeserializeProcessParameters(b.BuildDefinition.ProcessParameters); if (processParameters.ContainsKey("AgentSettings")) { if (processParameters["AgentSettings"].GetType() == typeof(AgentSettings)) { AgentSettings ags = (AgentSettings)processParameters["AgentSettings"]; AgentSettingsBuildParameter agentSet = new AgentSettingsBuildParameter(); agentSet.MaxExecutionTime = ags.MaxExecutionTime; agentSet.MaxWaitTime = ags.MaxWaitTime; agentSet.Name = ags.Name; agentSet.Comparison = ags.TagComparison; agentSet.Tags = ags.Tags; buildToExport.TfvcAgentSettings = agentSet; } else if (processParameters["AgentSettings"].GetType() == typeof(BuildParameter)) { BuildParameter ags = (BuildParameter)processParameters["AgentSettings"]; { buildToExport.GitAgentSettings = ags; } } } if (processParameters.ContainsKey("BuildSettings")) { var buildSettings = processParameters["BuildSettings"] as BuildSettings; if (buildSettings != null && buildSettings.HasProjectsToBuild) { buildToExport.ProjectsToBuild = buildSettings.ProjectsToBuild; if (buildSettings.HasPlatformConfigurations) { buildToExport.ConfigurationsToBuild = buildSettings.PlatformConfigurations; } } } if (processParameters.ContainsKey("TestSpecs")) { var testSpecs = processParameters["TestSpecs"] as TestSpecList; if (testSpecs != null) { buildToExport.AgileTestSpecs = new List<ExportedAgileTestPlatformSpec>(); foreach (var spec in testSpecs) { var agilespec = spec as AgileTestPlatformSpec; if (agilespec != null) { ExportedAgileTestPlatformSpec expAgileSpec = new ExportedAgileTestPlatformSpec(); expAgileSpec.AssemblyFileSpec = agilespec.AssemblyFileSpec; expAgileSpec.ExecutionPlatform = agilespec.ExecutionPlatform; expAgileSpec.FailBuildOnFailure = agilespec.FailBuildOnFailure; expAgileSpec.RunName = agilespec.RunName; expAgileSpec.TestCaseFilter = agilespec.TestCaseFilter; expAgileSpec.RunSettingsFileName = agilespec.RunSettingsForTestRun.ServerRunSettingsFile; expAgileSpec.TypeRunSettings = agilespec.RunSettingsForTestRun.TypeRunSettings; buildToExport.AgileTestSpecs.Add(expAgileSpec); } } } } buildToExport.ProcessParameters = WorkflowHelpers.DeserializeProcessParameters(b.BuildDefinition.ProcessParameters); foreach (KeyValuePair<string, object> item in processParameters) { if (item.Value.GetType() == typeof(Microsoft.TeamFoundation.Build.Common.BuildParameter)) { buildToExport.ProcessParameters[item.Key] = JsonConvert.DeserializeObject(item.Value.ToString()); } else if (item.Value.GetType() == typeof(BuildReason)) { buildToExport.BuildReasons.Add(item.Key, (BuildReason)item.Value); } else if (item.Value is int) { buildToExport.IntegerParameters.Add(item.Key, (int)item.Value); } else if (item.Value.GetType() == typeof(BuildVerbosity)) { buildToExport.BuildVerbosities.Add(item.Key, (BuildVerbosity)item.Value); } } var jsonSerializerSettings = new JsonSerializerSettings { PreserveReferencesHandling = PreserveReferencesHandling.Objects, ReferenceLoopHandling = ReferenceLoopHandling.Serialize }; File.WriteAllText(Path.Combine(filePath, b.Name + ".json"), JsonConvert.SerializeObject(buildToExport, Formatting.Indented, jsonSerializerSettings)); }