示例#1
0
        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);
            }
        }
示例#2
0
        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));
        }