public ActionResult SaveRunVsTestsStep(RunVsTestStepModel model) { this.CheckPermission(UserRoleAction.DeploymentChangeSteps); if (!this.ModelState.IsValid) { return(this.View("EditRunTestStep", model)); } DeploymentStep deploymentStep = this.GetDeploymentStep(model, DeploymentStepType.RunVsTests); deploymentStep.SetStringProperty("Step.Title", model.StepTitle); deploymentStep.SetStringProperty("FiltersJson", model.FiltersJson); deploymentStep.SetStringProperty("StopOnFailure", model.StopOnFailure.ToString()); deploymentStep.SetStringProperty("ProjectId", model.ProjectId.ToString(CultureInfo.InvariantCulture)); this.UpdateProjectReference(model); this.SaveRoles(model, deploymentStep); this.Entities.SaveChanges(); return(this.RedirectToAction("VersionDeployment", "Bundles", new { id = deploymentStep.BundleVersionId })); }
public ActionResult AddStep(int id, DeploymentStepType deploymentStepType = DeploymentStepType.Undefined) { this.CheckPermission(UserRoleAction.DeploymentChangeSteps); BundleVersion bundleVersion = this.Entities.BundleVersion .Include("DeploymentSteps") .First(bv => bv.Id == id); List <MachineRole> machineRoles = this.Entities.MachineRole.ToList(); this.ViewBag.BundleVersion = bundleVersion; this.ViewBag.MachineRoles = machineRoles; if (deploymentStepType == DeploymentStepType.Undefined) { return(this.View("AddStep")); } this.ViewBag.DeploymentStep = new DeploymentStep(); if (deploymentStepType == DeploymentStepType.DeployWebSite) { this.ViewBag.ProjectsSelect = this.Entities.SourceControlVersion .SelectMany(scv => scv.ProjectVersions) .Where(pv => pv.ProjectType.HasFlag(ProjectType.Web) && !pv.Project.Properties.Any(p => p.Key == "NotForDeployment" && p.Value == "true")) .Select(pv => new SelectListItem { Text = pv.SourceControlVersion.SourceControl.Name + " / " + pv.SourceControlVersion.Name + " / " + pv.Name, Value = pv.Id.ToString() }) .OrderBy(sli => sli.Text) .ToList(); WebSiteDeploymentStepModel model = new WebSiteDeploymentStepModel { BundleVersionId = bundleVersion.Id }; return(this.View("EditWebsiteStep", model)); } if (deploymentStepType == DeploymentStepType.DeployDacpac) { this.ViewBag.ProjectsSelect = this.Entities.SourceControlVersion .SelectMany(scv => scv.ProjectVersions) .Where(pv => pv.ProjectType.HasFlag(ProjectType.Database) && !pv.Project.Properties.Any(p => p.Key == "NotForDeployment" && p.Value == "true")) .Select(pv => new SelectListItem { Text = pv.SourceControlVersion.SourceControl.Name + " / " + pv.SourceControlVersion.Name + " / " + pv.Name, Value = pv.Id.ToString() }) .OrderBy(sli => sli.Text) .ToList(); DacpacDeploymentStepModel model = new DacpacDeploymentStepModel { BundleVersionId = bundleVersion.Id }; return(this.View("EditDacpacStep", model)); } if (deploymentStepType == DeploymentStepType.CopyFiles) { this.ViewBag.ProjectsSelect = this.Entities.SourceControlVersion .SelectMany(scv => scv.ProjectVersions) .Where(pv => pv.ProjectType.HasFlag(ProjectType.ZipArchive) || pv.ProjectType.HasFlag(ProjectType.GulpFile)) .Where(pv => !pv.Project.Properties.Any(p => p.Key == "NotForDeployment" && p.Value == "true")) .Select(pv => new SelectListItem { Text = pv.SourceControlVersion.SourceControl.Name + " / " + pv.SourceControlVersion.Name + " / " + pv.Name, Value = pv.Id.ToString() }) .OrderBy(sli => sli.Text) .ToList(); ZipArchiveDeploymentStepModel model = new ZipArchiveDeploymentStepModel { BundleVersionId = bundleVersion.Id }; return(this.View("EditZipArchiveStep", model)); } if (deploymentStepType == DeploymentStepType.UpdateHostsFile) { HostsDeploymentStepModel model = new HostsDeploymentStepModel { BundleVersionId = bundleVersion.Id }; return(this.View("EditHostsStep", model)); } if (deploymentStepType == DeploymentStepType.RunSQLScript) { SqlScriptDeploymentStepModel model = new SqlScriptDeploymentStepModel { BundleVersionId = bundleVersion.Id }; return(this.View("EditSqlScriptStep", model)); } if (deploymentStepType == DeploymentStepType.Configuration) { ConfigDeploymentStepModel model = new ConfigDeploymentStepModel { BundleVersionId = bundleVersion.Id }; return(this.View("EditConfigStep", model)); } if (deploymentStepType == DeploymentStepType.RunVsTests) { this.ViewBag.ProjectsSelect = this.Entities.SourceControlVersion .SelectMany(scv => scv.ProjectVersions) .Where(pv => pv.ProjectType.HasFlag(ProjectType.Test) && !pv.Project.Properties.Any(p => p.Key == "NotForDeployment" && p.Value == "true")) .Select(pv => new SelectListItem { Text = pv.SourceControlVersion.SourceControl.Name + " / " + pv.SourceControlVersion.Name + " / " + pv.Name, Value = pv.Id.ToString() }) .OrderBy(sli => sli.Text) .ToList(); RunVsTestStepModel model = new RunVsTestStepModel { BundleVersionId = bundleVersion.Id }; return(this.View("EditRunTestStep", model)); } throw new AspNetDeployException("Invalid deployment step type"); }
public ActionResult EditStep(int id, int deploymentStepId) { this.CheckPermission(UserRoleAction.DeploymentChangeSteps); DeploymentStep deploymentStep = this.Entities.DeploymentStep .Include("Properties") .Include("MachineRoles") .Include("BundleVersion.Bundle") .First(ds => ds.Id == deploymentStepId && ds.BundleVersion.Id == id); List <MachineRole> machineRoles = this.Entities.MachineRole.ToList(); this.ViewBag.DeploymentStep = deploymentStep; this.ViewBag.BundleVersion = deploymentStep.BundleVersion; this.ViewBag.MachineRoles = machineRoles; if (deploymentStep.Type == DeploymentStepType.DeployWebSite) { WebSiteDeploymentStepModel model = new WebSiteDeploymentStepModel { OrderIndex = deploymentStep.OrderIndex, DeploymentStepId = deploymentStepId, BundleVersionId = deploymentStep.BundleVersionId, SiteName = deploymentStep.GetStringProperty("IIS.SiteName"), ProjectId = deploymentStep.GetIntProperty("ProjectId"), Destination = deploymentStep.GetStringProperty("IIS.DestinationPath"), Roles = string.Join(", ", deploymentStep.MachineRoles.Select(mr => mr.Name)), BindingsJson = deploymentStep.GetStringProperty("IIS.Bindings") }; this.ViewBag.ProjectsSelect = this.Entities.SourceControlVersion .SelectMany(scv => scv.ProjectVersions) .Where(pv => pv.ProjectType.HasFlag(ProjectType.Web) && !pv.Project.Properties.Any(p => p.Key == "NotForDeployment" && p.Value == "true")) .Select(pv => new SelectListItem { Text = pv.SourceControlVersion.SourceControl.Name + " / " + pv.SourceControlVersion.Name + " / " + pv.Name, Value = pv.Id.ToString() }) .OrderBy(sli => sli.Text) .ToList(); return(this.View("EditWebsiteStep", model)); } if (deploymentStep.Type == DeploymentStepType.CopyFiles) { ZipArchiveDeploymentStepModel model = new ZipArchiveDeploymentStepModel { OrderIndex = deploymentStep.OrderIndex, DeploymentStepId = deploymentStepId, BundleVersionId = deploymentStep.BundleVersionId, StepTitle = deploymentStep.GetStringProperty("Step.Title"), ProjectId = deploymentStep.GetIntProperty("ProjectId"), Destination = deploymentStep.GetStringProperty("DestinationPath"), Roles = string.Join(", ", deploymentStep.MachineRoles.Select(mr => mr.Name)), CustomConfigurationJson = deploymentStep.GetStringProperty("CustomConfiguration") }; this.ViewBag.ProjectsSelect = this.Entities.SourceControlVersion .SelectMany(scv => scv.ProjectVersions) .Where(pv => pv.ProjectType.HasFlag(ProjectType.ZipArchive) || pv.ProjectType.HasFlag(ProjectType.GulpFile)) .Where(pv => !pv.Project.Properties.Any(p => p.Key == "NotForDeployment" && p.Value == "true")) .Select(pv => new SelectListItem { Text = pv.SourceControlVersion.SourceControl.Name + " / " + pv.SourceControlVersion.Name + " / " + pv.Name, Value = pv.Id.ToString() }) .OrderBy(sli => sli.Text) .ToList(); return(this.View("EditZipArchiveStep", model)); } if (deploymentStep.Type == DeploymentStepType.Configuration) { ConfigDeploymentStepModel model = new ConfigDeploymentStepModel { OrderIndex = deploymentStep.OrderIndex, BundleVersionId = deploymentStep.BundleVersionId, DeploymentStepId = deploymentStepId, ConfigJson = deploymentStep.GetStringProperty("SetValues"), StepTitle = deploymentStep.GetStringProperty("Step.Title"), File = deploymentStep.GetStringProperty("File"), Roles = string.Join(", ", deploymentStep.MachineRoles.Select(mr => mr.Name)) }; return(this.View("EditConfigStep", model)); } if (deploymentStep.Type == DeploymentStepType.RunSQLScript) { SqlScriptDeploymentStepModel model = new SqlScriptDeploymentStepModel { OrderIndex = deploymentStep.OrderIndex, BundleVersionId = deploymentStep.BundleVersionId, DeploymentStepId = deploymentStepId, Roles = string.Join(", ", deploymentStep.MachineRoles.Select(mr => mr.Name)), ConnectionString = deploymentStep.GetStringProperty("ConnectionString"), StepTitle = deploymentStep.GetStringProperty("Step.Title"), Command = deploymentStep.GetStringProperty("Command") }; return(this.View("EditSqlScriptStep", model)); } if (deploymentStep.Type == DeploymentStepType.UpdateHostsFile) { HostsDeploymentStepModel model = new HostsDeploymentStepModel { OrderIndex = deploymentStep.OrderIndex, BundleVersionId = deploymentStep.BundleVersionId, DeploymentStepId = deploymentStepId, Roles = string.Join(", ", deploymentStep.MachineRoles.Select(mr => mr.Name)), StepTitle = deploymentStep.GetStringProperty("Step.Title"), ConfigJson = deploymentStep.GetStringProperty("ConfigurationJson") }; return(this.View("EditHostsStep", model)); } if (deploymentStep.Type == DeploymentStepType.DeployDacpac) { DacpacDeploymentStepModel model = new DacpacDeploymentStepModel { OrderIndex = deploymentStep.OrderIndex, BundleVersionId = deploymentStep.BundleVersionId, DeploymentStepId = deploymentStepId, Roles = string.Join(", ", deploymentStep.MachineRoles.Select(mr => mr.Name)), StepTitle = deploymentStep.GetStringProperty("Step.Title"), ProjectId = deploymentStep.GetIntProperty("ProjectId"), ConnectionString = deploymentStep.GetStringProperty("ConnectionString"), TargetDatabase = deploymentStep.GetStringProperty("TargetDatabase"), CustomConfiguration = deploymentStep.GetStringProperty("CustomConfiguration") }; this.ViewBag.ProjectsSelect = this.Entities.SourceControlVersion .SelectMany(scv => scv.ProjectVersions) .Where(pv => pv.ProjectType.HasFlag(ProjectType.Database) && !pv.Project.Properties.Any(p => p.Key == "NotForDeployment" && p.Value == "true")) .Select(pv => new SelectListItem { Text = pv.SourceControlVersion.SourceControl.Name + " / " + pv.SourceControlVersion.Name + " / " + pv.Name, Value = pv.Id.ToString() }) .OrderBy(sli => sli.Text) .ToList(); return(this.View("EditDacpacStep", model)); } if (deploymentStep.Type == DeploymentStepType.RunVsTests) { RunVsTestStepModel model = new RunVsTestStepModel { OrderIndex = deploymentStep.OrderIndex, BundleVersionId = deploymentStep.BundleVersionId, DeploymentStepId = deploymentStepId, Roles = string.Join(", ", deploymentStep.MachineRoles.Select(mr => mr.Name)), StepTitle = deploymentStep.GetStringProperty("Step.Title"), ProjectId = deploymentStep.GetIntProperty("ProjectId"), FiltersJson = deploymentStep.GetStringProperty("FiltersJson"), StopOnFailure = deploymentStep.GetBoolProperty("StopOnFailure") }; this.ViewBag.ProjectsSelect = this.Entities.SourceControlVersion .SelectMany(scv => scv.ProjectVersions) .Where(pv => pv.ProjectType.HasFlag(ProjectType.Test) && !pv.Project.Properties.Any(p => p.Key == "NotForDeployment" && p.Value == "true")) .Select(pv => new SelectListItem { Text = pv.SourceControlVersion.SourceControl.Name + " / " + pv.SourceControlVersion.Name + " / " + pv.Name, Value = pv.Id.ToString() }) .OrderBy(sli => sli.Text) .ToList(); return(this.View("EditRunTestStep", model)); } return(this.Content("Unsupported step type")); }