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 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 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 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 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; }