public TriggerDeploymentResponse Post(TriggerDeployment request) { using (var session = DocumentStore.OpenSession()) { var environment = session.Query<Environment>().FirstOrDefault(e => e.Name == request.Environment); if (environment == null) { throw HttpError.NotFound("Environment {0} not found.".Fmt(request.Environment)); } var deploymentInfo = new Deployment() { EnvironmentId = "environments/" + environment.Id, RequestedAt = DateTime.UtcNow, }; var packageInfo = session.Load<Package>("packages/{0}/{1}".Fmt(request.PackageId, request.Version)); deploymentInfo.Package = packageInfo; deploymentInfo.Status = DeployStatus.Deploying; session.Store(deploymentInfo); session.SaveChanges(); using (var workspace = new Workspace(FileSystem, ServerSettings)) { var neutralPackagePath = PackageDownloader.Downloaad(request.PackageId, request.Version, workspace.TempWorkDir); workspace.UpdateSources(); var packageManager = new PackageManager(workspace.EnviornmentPath); var configuredPackage = packageManager.ConfigurePackageByEnvironment(neutralPackagePath, request.Environment, workspace.TempWorkDir); packageManager.DeployPackage(configuredPackage); deploymentInfo.FinishedAt = DateTime.UtcNow; deploymentInfo.Status = DeployStatus.Successful; session.SaveChanges(); return new TriggerDeploymentResponse(); } } }
private EnvironmentVariablesDto GetEnvironment(string name, bool fetchVariables) { using (var session = DocumentStore.OpenSession()) { var environment = session.Query<Environment>().FirstOrDefault(e => e.Name == name); if (environment == null) { throw HttpError.NotFound("Environment {0} not found.".Fmt(name)); } using (var workspace = new Workspace(FileSystem, ServerSettings)) { var result = new EnvironmentVariablesDto() { Environment = environment.ToDto() }; if (fetchVariables) { workspace.UpdateSources(); var provider = new EnvironmentProvider(); try { var serializedEnvironment = provider.GetEnvironmentFromFile(Path.Combine(workspace.EnviornmentPath, name + ".xml")); var resolver = new VariableResolver(serializedEnvironment.Variables); result.Variables = new List<VariableDto>(); result.Variables.AddRange(serializedEnvironment.Variables.Select(v => new VariableDto() { Name = v.Name, Value = v.Value, Resolved = resolver.TransformVariables(v.Value) })); if (resolver.VariableUsageList.Any(v => v.IsMissingValue)) { result.MissingVariables = new List<string>(resolver.VariableUsageList.Where(v => v.IsMissingValue).Select(v => v.Variable.Name)); } } catch (FileNotFoundException e) { result.Variables = new List<VariableDto>(); result.Warning = "No xml file found for this environment!"; } } return result; } } }