public void ProcessParameterDeserializer_ConvertsExportedTestSpec()
 {
     var testSpec = new AgileTestPlatformSpec
     {
         AssemblyFileSpec = @"**\*.Tests.dll",
         ExecutionPlatform = ExecutionPlatformType.X86,
         FailBuildOnFailure = true,
         RunName = "Unit Tests",
         RunSettingsForTestRun = new RunSettings {ServerRunSettingsFile = "run.settings", TypeRunSettings = RunSettingsType.CodeCoverageEnabled},
         TestCaseFilter = "*FakeTests"
     };
     var procParam = new[] { "AgileTestSpecs", Serialize(new ExportedAgileTestPlatformSpec[] { testSpec }) };
     ExportedProcessParameterTransformer.ProcessParameterDeserializer(procParam).ShouldBeEquivalentTo(new TestSpecList(testSpec));
 }
コード例 #2
0
        public void ProcessParameterDeserializer_ConvertsExportedTestSpec()
        {
            var testSpec = new AgileTestPlatformSpec
            {
                AssemblyFileSpec      = @"**\*.Tests.dll",
                ExecutionPlatform     = ExecutionPlatformType.X86,
                FailBuildOnFailure    = true,
                RunName               = "Unit Tests",
                RunSettingsForTestRun = new RunSettings {
                    ServerRunSettingsFile = "run.settings", TypeRunSettings = RunSettingsType.CodeCoverageEnabled
                },
                TestCaseFilter = "*FakeTests"
            };

            var procParam = new[] { "AgileTestSpecs", this.Serialize(new ExportedAgileTestPlatformSpec[] { testSpec }) };

            ExportedProcessParameterTransformer.ProcessParameterDeserializer(procParam).ShouldBeEquivalentTo(new TestSpecList(testSpec));
        }
コード例 #3
0
        private void ButtonImport_OnClick(object sender, RoutedEventArgs e)
        {
            foreach (var item in this.DataGridBuildsToImport.Items)
            {
                BuildImport bi = item as BuildImport;
                try
                {
                    if (bi == null)
                    {
                        return;
                    }

                    if (!File.Exists(bi.JsonFile))
                    {
                        bi.Status = "Failed";
                        bi.StatusImage = "Graphics/Failed.png";
                        bi.Message = "File not found";
                    }
                    else
                    {
                        ExportedBuildDefinition exdef = JsonConvert.DeserializeObject<ExportedBuildDefinition>(File.ReadAllText(bi.JsonFile));
                        var newBuildDefinition = this.buildServer.CreateBuildDefinition(this.lableTeamProject.Content.ToString());
                        newBuildDefinition.Name = exdef.Name;
                        newBuildDefinition.Description = exdef.Description;
                        newBuildDefinition.ContinuousIntegrationType = exdef.ContinuousIntegrationType;
                        newBuildDefinition.ContinuousIntegrationQuietPeriod = exdef.ContinuousIntegrationQuietPeriod;

                        newBuildDefinition.QueueStatus = exdef.QueueStatus;
                        if (exdef.SourceProviders.All(s => s.Name != "TFGIT"))
                        {
                            foreach (var mapping in exdef.Mappings)
                            {
                                newBuildDefinition.Workspace.AddMapping(mapping.ServerItem, mapping.LocalItem, mapping.MappingType);
                            }
                        }

                        newBuildDefinition.RetentionPolicyList.Clear();
                        foreach (var ret in exdef.RetentionPolicyList)
                        {
                            newBuildDefinition.AddRetentionPolicy(ret.BuildReason, ret.BuildStatus, ret.NumberToKeep, ret.DeleteOptions);
                        }

                        foreach (var sp in exdef.SourceProviders)
                        {
                            var provider = newBuildDefinition.CreateInitialSourceProvider(sp.Name);
                            if (exdef.SourceProviders.All(s => s.Name == "TFGIT"))
                            {
                                provider.Fields["RepositoryName"] = sp.Fields["RepositoryName"];
                                provider.Fields["DefaultBranch"] = sp.Fields["DefaultBranch"];
                                provider.Fields["CIBranches"] = sp.Fields["CIBranches"];
                                provider.Fields["RepositoryUrl"] = sp.Fields["RepositoryUrl"];
                            }

                            newBuildDefinition.SetSourceProvider(provider);
                        }

                        newBuildDefinition.BuildController = this.buildServer.GetBuildController(exdef.BuildController);
                        var x = this.buildServer.QueryProcessTemplates(this.lableTeamProject.Content.ToString());
                        if (x.All(p => p.ServerPath != exdef.ProcessTemplate))
                        {
                            bi.Status = "Failed";
                            bi.StatusImage = "Graphics/Failed.png";
                            bi.Message = "Process Template not found - " + exdef.ProcessTemplate;
                            continue;
                        }

                        newBuildDefinition.Process = this.buildServer.QueryProcessTemplates(this.lableTeamProject.Content.ToString()).First(p => p.ServerPath == exdef.ProcessTemplate);
                        newBuildDefinition.DefaultDropLocation = exdef.DefaultDropLocation;
                        foreach (var sched in exdef.Schedules)
                        {
                            var newSched = newBuildDefinition.AddSchedule();
                            newSched.DaysToBuild = sched.DaysToBuild;
                            newSched.StartTime = sched.StartTime;
                            newSched.TimeZone = sched.TimeZone;
                        }

                        var process = WorkflowHelpers.DeserializeProcessParameters(newBuildDefinition.ProcessParameters);

                        foreach (var param in exdef.ProcessParameters)
                        {
                            if (param.Key != "AgentSettings" && param.Key != "BuildSettings" && param.Key != "TestSpecs")
                            {
                                Newtonsoft.Json.Linq.JArray arrayItem = param.Value as Newtonsoft.Json.Linq.JArray;
                                if (arrayItem == null)
                                {
                                    Newtonsoft.Json.Linq.JObject objectItem = param.Value as Newtonsoft.Json.Linq.JObject;
                                    if (objectItem == null)
                                    {
                                        if (param.Key == "CleanWorkspace")
                                        {
                                            process.Add(param.Key, (CleanWorkspaceOption)Enum.Parse(typeof(CleanWorkspaceOption), param.Value.ToString()));
                                        }
                                        else if (param.Key == "RunCodeAnalysis")
                                        {
                                            process.Add(param.Key, (CodeAnalysisOption)Enum.Parse(typeof(CodeAnalysisOption), param.Value.ToString()));
                                        }
                                        else
                                        {
                                            process.Add(param.Key, param.Value);
                                        }
                                    }
                                    else
                                    {
                                        Microsoft.TeamFoundation.Build.Common.BuildParameter paramItem = new Microsoft.TeamFoundation.Build.Common.BuildParameter(param.Value.ToString());
                                        process.Add(param.Key, paramItem);
                                    }
                                }
                                else
                                {
                                    string[] arrayItemList = new string[arrayItem.Count];
                                    for (int i = 0; i < arrayItem.Count; i++)
                                    {
                                        arrayItemList[i] = arrayItem[i].ToString();
                                    }

                                    process.Add(param.Key, arrayItemList);
                                }
                            }
                        }

                        if (exdef.ProjectsToBuild != null)
                        {
                            process.Add("BuildSettings", new BuildSettings { ProjectsToBuild = exdef.ProjectsToBuild, PlatformConfigurations = exdef.ConfigurationsToBuild });
                        }

                        if (exdef.TfvcAgentSettings != null)
                        {
                            process.Add("AgentSettings", new AgentSettings { MaxExecutionTime = exdef.TfvcAgentSettings.MaxExecutionTime, MaxWaitTime = exdef.TfvcAgentSettings.MaxWaitTime, Name = exdef.TfvcAgentSettings.Name, TagComparison = exdef.TfvcAgentSettings.Comparison, Tags = exdef.TfvcAgentSettings.Tags });
                        }
                        else if (exdef.GitAgentSettings != null)
                        {
                            process.Add("AgentSettings", exdef.GitAgentSettings);
                        }

                        if (exdef.AgileTestSpecs != null)
                        {
                            TestSpecList tsl = new TestSpecList();
                            foreach (var aitem in exdef.AgileTestSpecs)
                            {
                                AgileTestPlatformSpec agileSpec = new AgileTestPlatformSpec();
                                agileSpec.AssemblyFileSpec = aitem.AssemblyFileSpec;
                                agileSpec.ExecutionPlatform = aitem.ExecutionPlatform;
                                agileSpec.FailBuildOnFailure = aitem.FailBuildOnFailure;
                                agileSpec.RunName = aitem.RunName;
                                agileSpec.TestCaseFilter = aitem.TestCaseFilter;
                                agileSpec.RunSettingsForTestRun = new RunSettings();
                                agileSpec.RunSettingsForTestRun.ServerRunSettingsFile = aitem.RunSettingsFileName;
                                agileSpec.RunSettingsForTestRun.TypeRunSettings = aitem.TypeRunSettings;
                                tsl.Add(agileSpec);
                            }

                            process.Add("TestSpecs", tsl);
                        }

                        if (exdef.BuildReasons != null)
                        {
                            foreach (var key in exdef.BuildReasons.Keys)
                            {
                                if (process.ContainsKey(key))
                                {
                                    process[key] = exdef.BuildReasons[key];
                                }
                            }
                        }

                        if (exdef.IntegerParameters != null)
                        {
                            foreach (var key in exdef.IntegerParameters.Keys)
                            {
                                if (process.ContainsKey(key))
                                {
                                    process[key] = exdef.IntegerParameters[key];
                                }
                            }
                        }

                        if (exdef.BuildVerbosities != null)
                        {
                            foreach (var key in exdef.BuildVerbosities.Keys)
                            {
                                if (process.ContainsKey(key))
                                {
                                    process[key] = exdef.BuildVerbosities[key];
                                }
                            }
                        }

                        newBuildDefinition.ProcessParameters = WorkflowHelpers.SerializeProcessParameters(process);
                        newBuildDefinition.Save();
                        bi.Status = "Succeeded";
                        bi.StatusImage = "Graphics/Succeeded.png";
                        bi.Message = string.Empty;
                    }
                }
                catch (Exception ex)
                {
                    bi.Status = "Failed";
                    bi.StatusImage = "Graphics/Failed.png";
                    bi.Message = ex.Message;
                }
                finally
                {
                    this.DataGridBuildsToImport.ItemsSource = null;
                    this.DataGridBuildsToImport.ItemsSource = this.buildFiles;
                }
            }
        }
コード例 #4
0
        private void ButtonImport_OnClick(object sender, RoutedEventArgs e)
        {
            foreach (var item in this.DataGridBuildsToImport.Items)
            {
                BuildImport bi = item as BuildImport;
                try
                {
                    if (bi == null)
                    {
                        return;
                    }

                    if (!File.Exists(bi.JsonFile))
                    {
                        bi.Status      = "Failed";
                        bi.StatusImage = "Graphics/Failed.png";
                        bi.Message     = "File not found";
                    }
                    else
                    {
                        ExportedBuildDefinition exdef = JsonConvert.DeserializeObject <ExportedBuildDefinition>(File.ReadAllText(bi.JsonFile));
                        var newBuildDefinition        = this.buildServer.CreateBuildDefinition(this.lableTeamProject.Content.ToString());
                        newBuildDefinition.Name        = exdef.Name;
                        newBuildDefinition.Description = exdef.Description;
                        newBuildDefinition.ContinuousIntegrationType        = exdef.ContinuousIntegrationType;
                        newBuildDefinition.ContinuousIntegrationQuietPeriod = exdef.ContinuousIntegrationQuietPeriod;

                        newBuildDefinition.QueueStatus = exdef.QueueStatus;
                        if (exdef.SourceProviders.All(s => s.Name != "TFGIT"))
                        {
                            foreach (var mapping in exdef.Mappings)
                            {
                                newBuildDefinition.Workspace.AddMapping(mapping.ServerItem, mapping.LocalItem, mapping.MappingType);
                            }
                        }

                        newBuildDefinition.RetentionPolicyList.Clear();
                        foreach (var ret in exdef.RetentionPolicyList)
                        {
                            newBuildDefinition.AddRetentionPolicy(ret.BuildReason, ret.BuildStatus, ret.NumberToKeep, ret.DeleteOptions);
                        }

                        foreach (var sp in exdef.SourceProviders)
                        {
                            var provider = newBuildDefinition.CreateInitialSourceProvider(sp.Name);
                            if (exdef.SourceProviders.All(s => s.Name == "TFGIT"))
                            {
                                provider.Fields["RepositoryName"] = sp.Fields["RepositoryName"];
                                provider.Fields["DefaultBranch"]  = sp.Fields["DefaultBranch"];
                                provider.Fields["CIBranches"]     = sp.Fields["CIBranches"];
                                provider.Fields["RepositoryUrl"]  = sp.Fields["RepositoryUrl"];
                            }

                            newBuildDefinition.SetSourceProvider(provider);
                        }

                        newBuildDefinition.BuildController = this.buildServer.GetBuildController(exdef.BuildController);
                        var x = this.buildServer.QueryProcessTemplates(this.lableTeamProject.Content.ToString());
                        if (x.All(p => p.ServerPath != exdef.ProcessTemplate))
                        {
                            bi.Status      = "Failed";
                            bi.StatusImage = "Graphics/Failed.png";
                            bi.Message     = "Process Template not found - " + exdef.ProcessTemplate;
                            continue;
                        }

                        newBuildDefinition.Process             = this.buildServer.QueryProcessTemplates(this.lableTeamProject.Content.ToString()).First(p => p.ServerPath == exdef.ProcessTemplate);
                        newBuildDefinition.DefaultDropLocation = exdef.DefaultDropLocation;
                        foreach (var sched in exdef.Schedules)
                        {
                            var newSched = newBuildDefinition.AddSchedule();
                            newSched.DaysToBuild = sched.DaysToBuild;
                            newSched.StartTime   = sched.StartTime;
                            newSched.TimeZone    = sched.TimeZone;
                        }

                        var process = WorkflowHelpers.DeserializeProcessParameters(newBuildDefinition.ProcessParameters);

                        foreach (var param in exdef.ProcessParameters)
                        {
                            if (param.Key != "AgentSettings" && param.Key != "BuildSettings" && param.Key != "TestSpecs")
                            {
                                Newtonsoft.Json.Linq.JArray arrayItem = param.Value as Newtonsoft.Json.Linq.JArray;
                                if (arrayItem == null)
                                {
                                    Newtonsoft.Json.Linq.JObject objectItem = param.Value as Newtonsoft.Json.Linq.JObject;
                                    if (objectItem == null)
                                    {
                                        if (param.Key == "CleanWorkspace")
                                        {
                                            process.Add(param.Key, (CleanWorkspaceOption)Enum.Parse(typeof(CleanWorkspaceOption), param.Value.ToString()));
                                        }
                                        else if (param.Key == "RunCodeAnalysis")
                                        {
                                            process.Add(param.Key, (CodeAnalysisOption)Enum.Parse(typeof(CodeAnalysisOption), param.Value.ToString()));
                                        }
                                        else
                                        {
                                            process.Add(param.Key, param.Value);
                                        }
                                    }
                                    else
                                    {
                                        Microsoft.TeamFoundation.Build.Common.BuildParameter paramItem = new Microsoft.TeamFoundation.Build.Common.BuildParameter(param.Value.ToString());
                                        process.Add(param.Key, paramItem);
                                    }
                                }
                                else
                                {
                                    string[] arrayItemList = new string[arrayItem.Count];
                                    for (int i = 0; i < arrayItem.Count; i++)
                                    {
                                        arrayItemList[i] = arrayItem[i].ToString();
                                    }

                                    process.Add(param.Key, arrayItemList);
                                }
                            }
                        }

                        if (exdef.ProjectsToBuild != null)
                        {
                            process.Add("BuildSettings", new BuildSettings {
                                ProjectsToBuild = exdef.ProjectsToBuild, PlatformConfigurations = exdef.ConfigurationsToBuild
                            });
                        }

                        if (exdef.TfvcAgentSettings != null)
                        {
                            process.Add("AgentSettings", new AgentSettings {
                                MaxExecutionTime = exdef.TfvcAgentSettings.MaxExecutionTime, MaxWaitTime = exdef.TfvcAgentSettings.MaxWaitTime, Name = exdef.TfvcAgentSettings.Name, TagComparison = exdef.TfvcAgentSettings.Comparison, Tags = exdef.TfvcAgentSettings.Tags
                            });
                        }
                        else if (exdef.GitAgentSettings != null)
                        {
                            process.Add("AgentSettings", exdef.GitAgentSettings);
                        }

                        if (exdef.AgileTestSpecs != null)
                        {
                            TestSpecList tsl = new TestSpecList();
                            foreach (var aitem in exdef.AgileTestSpecs)
                            {
                                AgileTestPlatformSpec agileSpec = new AgileTestPlatformSpec();
                                agileSpec.AssemblyFileSpec      = aitem.AssemblyFileSpec;
                                agileSpec.ExecutionPlatform     = aitem.ExecutionPlatform;
                                agileSpec.FailBuildOnFailure    = aitem.FailBuildOnFailure;
                                agileSpec.RunName               = aitem.RunName;
                                agileSpec.TestCaseFilter        = aitem.TestCaseFilter;
                                agileSpec.RunSettingsForTestRun = new RunSettings();
                                agileSpec.RunSettingsForTestRun.ServerRunSettingsFile = aitem.RunSettingsFileName;
                                agileSpec.RunSettingsForTestRun.TypeRunSettings       = aitem.TypeRunSettings;
                                tsl.Add(agileSpec);
                            }

                            process.Add("TestSpecs", tsl);
                        }

                        if (exdef.BuildReasons != null)
                        {
                            foreach (var key in exdef.BuildReasons.Keys)
                            {
                                if (process.ContainsKey(key))
                                {
                                    process[key] = exdef.BuildReasons[key];
                                }
                            }
                        }

                        if (exdef.IntegerParameters != null)
                        {
                            foreach (var key in exdef.IntegerParameters.Keys)
                            {
                                if (process.ContainsKey(key))
                                {
                                    process[key] = exdef.IntegerParameters[key];
                                }
                            }
                        }

                        if (exdef.BuildVerbosities != null)
                        {
                            foreach (var key in exdef.BuildVerbosities.Keys)
                            {
                                if (process.ContainsKey(key))
                                {
                                    process[key] = exdef.BuildVerbosities[key];
                                }
                            }
                        }

                        newBuildDefinition.ProcessParameters = WorkflowHelpers.SerializeProcessParameters(process);
                        newBuildDefinition.Save();
                        bi.Status      = "Succeeded";
                        bi.StatusImage = "Graphics/Succeeded.png";
                        bi.Message     = string.Empty;
                    }
                }
                catch (Exception ex)
                {
                    bi.Status      = "Failed";
                    bi.StatusImage = "Graphics/Failed.png";
                    bi.Message     = ex.Message;
                }
                finally
                {
                    this.DataGridBuildsToImport.ItemsSource = null;
                    this.DataGridBuildsToImport.ItemsSource = this.buildFiles;
                }
            }
        }