public async Task<LabWorkflowManager.TFS.Common.WorkflowConfig.AssociatedBuildDefinition> CreateBuildDefinitionFromDefinition(LabWorkflowManager.TFS.Common.WorkflowConfig.LabWorkflowDefinitionDetails labworkflowDefinitionDetails) { var def = await Task.Run(() => ConvertToAssociatedBuildDefinition(this.CreateBuildDefinition(labworkflowDefinitionDetails).Result)); return await Task.Run(() => def); }
public async Task<IBuildDefinition> CreateBuildDefinition(LabWorkflowManager.TFS.Common.WorkflowConfig.LabWorkflowDefinitionDetails labworkflowDefinitionDetails) { return await Task.Run(() => { if (this.BuildServer != null) { var buildDefinition = this.BuildServer.CreateBuildDefinition(this.connectivity.TeamProjects.First().Name); ConfigMainBuildDefinitionSettings(labworkflowDefinitionDetails.LabBuildDefinitionDetails, buildDefinition); var processParameters = WorkflowHelpers.DeserializeProcessParameters(buildDefinition.ProcessParameters); var labWorkflowDetails = new LabWorkflowDetails(); ConfigLabBuildSettings(labworkflowDefinitionDetails.SourceBuildDetails, labWorkflowDetails); ConfigLabEnvironmentSettings(labworkflowDefinitionDetails.LabEnvironmentDetails, labWorkflowDetails); ConfigLabDeploymentSettings(labworkflowDefinitionDetails.DeploymentDetails, labWorkflowDetails); ConfigLabTestSettings(labworkflowDefinitionDetails.TestDetails, labWorkflowDetails); processParameters.Add("LabWorkflowParameters", labWorkflowDetails); buildDefinition.ProcessParameters = WorkflowHelpers.SerializeProcessParameters(processParameters); buildDefinition.Save(); return buildDefinition; } throw new Exception("No connection to TFS!"); }); }
private void ConfigMainBuildDefinitionSettings(LabWorkflowManager.TFS.Common.WorkflowConfig.LabBuildDefinitionDetails buildDefinitionDetails, IBuildDefinition buildDefinition) { buildDefinition.Name = buildDefinitionDetails.Name; buildDefinition.Description = buildDefinitionDetails.Description; buildDefinition.ContinuousIntegrationType = (ContinuousIntegrationType)buildDefinitionDetails.ContinuousIntegrationType; if (buildDefinition.ContinuousIntegrationType == ContinuousIntegrationType.Schedule || buildDefinition.ContinuousIntegrationType == ContinuousIntegrationType.ScheduleForced) { var schedule = buildDefinition.AddSchedule(); schedule.DaysToBuild = (ScheduleDays)buildDefinitionDetails.ScheduledDays; schedule.StartTime = buildDefinitionDetails.StartTime; } else if (buildDefinition.ContinuousIntegrationType == ContinuousIntegrationType.Batch) { buildDefinition.ContinuousIntegrationQuietPeriod = buildDefinitionDetails.QuietPeriod; } buildDefinition.BuildController = this.BuildServer.GetBuildController(string.Format("*{0}*", buildDefinitionDetails.ControllerName)); var buildDefinitionProcessTemplate = this.BuildServer.QueryProcessTemplates(this.connectivity.TeamProjects.First().Name).Where(t => t.ServerPath.Contains(buildDefinitionDetails.ProcessTemplateFilename)).First(); buildDefinition.Process = buildDefinitionProcessTemplate; }
private LabWorkflowDetails ConfigLabBuildSettings(LabWorkflowManager.TFS.Common.WorkflowConfig.SourceBuildDetails sourceBuildDetails, LabWorkflowDetails labWorkflowDetails) { if (sourceBuildDetails.BuildDefinitionUri != null) { var compileBuildDefinition = this.BuildServer.GetBuildDefinition(new Uri(sourceBuildDetails.BuildDefinitionUri)); labWorkflowDetails.BuildDetails.BuildDefinitionUri = compileBuildDefinition.Uri; labWorkflowDetails.BuildDetails.BuildDefinitionName = compileBuildDefinition.Name; labWorkflowDetails.BuildDetails.QueueNewBuild = sourceBuildDetails.QueueNewBuild; if (!string.IsNullOrWhiteSpace(sourceBuildDetails.BuildUri)) { labWorkflowDetails.BuildDetails.BuildUri = new Uri(sourceBuildDetails.BuildUri); } labWorkflowDetails.BuildDetails.IsTeamSystemBuild = true; } else { labWorkflowDetails.BuildDetails.CustomBuildPath = sourceBuildDetails.CustomBuildPath; } return labWorkflowDetails; }
private void ConfigLabEnvironmentSettings(LabWorkflowManager.TFS.Common.WorkflowConfig.LabEnvironmentDetails labEnvironmentDetails, LabWorkflowDetails labWorkflowDetails) { var labService = this.connectivity.Tpc.GetService<LabService>(); var environment = labService.GetLabEnvironment(new Uri(labEnvironmentDetails.LabEnvironmentUri)); labWorkflowDetails.EnvironmentDetails.LabEnvironmentUri = environment.Uri; labWorkflowDetails.EnvironmentDetails.LabEnvironmentName = environment.Name; if (!string.IsNullOrWhiteSpace(labEnvironmentDetails.SnapshotName)) { labWorkflowDetails.EnvironmentDetails.SnapshotName = labEnvironmentDetails.SnapshotName; labWorkflowDetails.EnvironmentDetails.RevertToSnapshot = true; } labWorkflowDetails.EnvironmentDetails.RevertToSnapshot = labEnvironmentDetails.RevertToSnapshot; }
private static void ConfigLabDeploymentSettings(LabWorkflowManager.TFS.Common.WorkflowConfig.DeploymentDetails deploymentDetails, LabWorkflowDetails labWorkflowDetails) { labWorkflowDetails.DeploymentDetails.DeploymentNeeded = true; labWorkflowDetails.DeploymentDetails.UseRoleForDeployment = true; labWorkflowDetails.DeploymentDetails.TakePostDeploymentSnapshot = deploymentDetails.TakePostDeploymentSnapshot; labWorkflowDetails.DeploymentDetails.PostDeploymentSnapshotName = deploymentDetails.SnapshotName; labWorkflowDetails.DeploymentDetails.UseRoleForDeployment = true; labWorkflowDetails.DeploymentDetails.Scripts = new Microsoft.TeamFoundation.Build.Workflow.Activities.StringList(); labWorkflowDetails.DeploymentDetails.Scripts.AddRange(deploymentDetails.ScriptStrings); }
private void ConfigLabTestSettings(LabWorkflowManager.TFS.Common.WorkflowConfig.TestDetails testDetails, LabWorkflowDetails labWorkflowDetails) { labWorkflowDetails.TestParameters.ProjectName = this.connectivity.TeamProjects.First().Name; labWorkflowDetails.TestParameters.RunTest = true; labWorkflowDetails.TestParameters.TestPlanId = testDetails.TestPlanId; labWorkflowDetails.TestParameters.TestSuiteIdList = testDetails.TestSuiteIdList.ToList(); labWorkflowDetails.TestParameters.TestSettingsId = testDetails.TestSettingsId; labWorkflowDetails.TestParameters.TestConfigurationId = testDetails.TestConfigurationId; }