public void Deploy(Guid deploymentId, Guid uniqueClientId, string requesterIdentity, DeploymentInfo deploymentInfoDto) { try { Guard.NotEmpty(deploymentId, "deploymentId"); Guard.NotEmpty(uniqueClientId, "uniqueClientId"); Guard.NotNullNorEmpty(requesterIdentity, "requesterIdentity"); Guard.NotNull(deploymentInfoDto, "DeploymentInfo"); ProjectInfo projectInfo = _projectInfoRepository.FindByName(deploymentInfoDto.ProjectName); if (projectInfo == null) { throw new FaultException <ProjectNotFoundFault>(new ProjectNotFoundFault { ProjectName = deploymentInfoDto.ProjectName }); } Core.Domain.DeploymentInfo deploymentInfo = DtoMapper.ConvertDeploymentInfo(deploymentInfoDto, projectInfo); DoDeploy(uniqueClientId, requesterIdentity, deploymentInfo, projectInfo); } catch (Exception exc) { HandleDeploymentException(exc, uniqueClientId); } }
public ProjectMetadata GetProjectMetadata(string projectName, string environmentName) { Guard.NotNullNorEmpty(projectName, "projectName"); Guard.NotNullNorEmpty(environmentName, "environmentName"); _log.DebugIfEnabled(() => string.Format("Getting project metadata. Project name: '{0}'. Environment name: '{1}'.", projectName, environmentName)); ProjectInfo projectInfo = _projectInfoRepository.FindByName(projectName); if (projectInfo == null) { throw new ArgumentException(string.Format("Project named '{0}' doesn't exist.", projectName)); } EnvironmentInfo environmentInfo = _environmentInfoRepository.FindByName(environmentName); if (environmentInfo == null) { throw new ArgumentException(string.Format("Environment named '{0}' doesn't exist.", environmentName)); } if (projectInfo is DbProjectInfo) { return(GetDbProjectMetadata((DbProjectInfo)projectInfo, environmentInfo)); } else { return(GetOrdinaryProjectMetadata(projectInfo, environmentInfo)); } }
protected override void ExecuteTask() { try { IProjectInfoRepository projectInfoRepository = ObjectFactory.Instance.CreateProjectInfoRepository(); ProjectInfo projectInfo = projectInfoRepository.FindByName(ProjectName); DeploymentTask deploymentTask = projectInfo.CreateDeploymentTask(ObjectFactory.Instance); IDeploymentPipeline deploymentPipeline = ObjectFactory.Instance.CreateDeploymentPipeline(); deploymentPipeline.DiagnosticMessagePosted += (eventSender, tmpArgs) => Log(Level.Info, tmpArgs.Message); var deploymentContext = new DeploymentContext(RequesterIdentity); Guid deploymentId = Guid.NewGuid(); var deploymentInfo = new DeploymentInfo( deploymentId, IsSimulation, ProjectName, ConfigurationName, BuildId, Environment, projectInfo.CreateEmptyInputParams()); deploymentPipeline.StartDeployment(deploymentInfo, deploymentTask, deploymentContext); } catch (Exception exc) { Log(Level.Error, "Error: " + exc); } }
protected T GetProjectInfo <T>() where T : ProjectInfo { ProjectInfo projectInfo = _projectInfoRepository.FindByName(DeploymentInfo.ProjectName); if (projectInfo == null) { throw new DeploymentTaskException(string.Format("Project named '{0}' doesn't exist.", DeploymentInfo.ProjectName)); } if (!(projectInfo is T)) { throw new DeploymentTaskException(string.Format("Project named '{0}' is not of the expected type: '{1}'.", DeploymentInfo.ProjectName, typeof(T).FullName)); } return((T)projectInfo); }
public override int Run(string[] args) { if (args.Length != 2) { DisplayCommandUsage(); return(1); } string projectName = args[0]; string projectConfigurationName = args[1]; IProjectInfoRepository projectInfoRepository = ObjectFactory.Instance.CreateProjectInfoRepository(); ProjectInfo projectInfo = projectInfoRepository.FindByName(projectName); if (projectInfo == null) { OutputWriter.WriteLine("Project named '{0}' doesn't exist.", projectName); return(1); } ITeamCityClient teamCityClient = ObjectFactory.Instance.CreateTeamCityClient(); Project project = teamCityClient.GetProjectByName(projectInfo.ArtifactsRepositoryName); ProjectDetails projectDetails = teamCityClient.GetProjectDetails(project); ProjectConfiguration projectConfiguration = projectDetails.ConfigurationsList.Configurations .SingleOrDefault(pc => pc.Name == projectConfigurationName); if (projectConfiguration == null) { OutputWriter.WriteLine("Project configuration named '{0}' doesn't exist for project '{1}'.", projectConfigurationName, projectName); return(1); } ProjectConfigurationDetails projectConfigurationDetails = teamCityClient.GetProjectConfigurationDetails(projectConfiguration); ProjectConfigurationBuildsList projectConfigurationBuildsList = teamCityClient.GetProjectConfigurationBuilds(projectConfigurationDetails, 0, _MaxProjectConfigurationBuildsCount); foreach (ProjectConfigurationBuild projectConfigurationBuild in projectConfigurationBuildsList.Builds) { OutputWriter.WriteLine("{0}\t{1}", projectConfigurationBuild.Id, projectConfigurationBuild.Status); } return(0); }
public override int Run(string[] args) { if (args.Length != 1) { DisplayCommandUsage(); return(1); } string projectName = args[0]; IProjectInfoRepository projectInfoRepository = ObjectFactory.Instance.CreateProjectInfoRepository(); ProjectInfo projectInfo = projectInfoRepository.FindByName(projectName); if (projectInfo == null) { OutputWriter.WriteLine("Project named '{0}' doesn't exist.", projectName); return(1); } ITeamCityClient teamCityClient = ObjectFactory.Instance.CreateTeamCityClient(); Project project = teamCityClient.GetProjectByName(projectInfo.ArtifactsRepositoryName); ProjectDetails projectDetails = teamCityClient.GetProjectDetails(project); foreach (ProjectConfiguration projectConfiguration in projectDetails.ConfigurationsList.Configurations) { OutputWriter.WriteLine(projectConfiguration.Name); } return(0); }
public override int Run(string[] args) { if (args.Length != 4 && args.Length != 5) { DisplayCommandUsage(); return(1); } IProjectInfoRepository projectInfoRepository = ObjectFactory.Instance.CreateProjectInfoRepository(); string projectName = args[0]; string projectConfigurationName = args[1]; string projectConfigurationBuildId = args[2]; string targetEnvironmentName = args[3]; bool isSimulation = (args.Length >= 5 ? string.Equals(args[4], "simulate", StringComparison.OrdinalIgnoreCase) : false); ProjectInfo projectInfo = projectInfoRepository.FindByName(projectName); if (projectInfo == null) { OutputWriter.WriteLine("Project named '{0}' doesn't exist.", projectName); return(1); } Guid deploymentId = Guid.NewGuid(); var deploymentInfo = new DeploymentInfo( deploymentId, isSimulation, projectName, projectConfigurationName, projectConfigurationBuildId, targetEnvironmentName, projectInfo.CreateEmptyInputParams()); try { DeploymentTask deploymentTask = projectInfo.CreateDeploymentTask(ObjectFactory.Instance); IDeploymentPipeline deploymentPipeline = ObjectFactory.Instance.CreateDeploymentPipeline(); deploymentPipeline.DiagnosticMessagePosted += (sender, tmpArgs) => LogMessage(tmpArgs.Message, tmpArgs.MessageType); var deploymentContext = new DeploymentContext(RequesterIdentity); deploymentPipeline.StartDeployment(deploymentInfo, deploymentTask, deploymentContext, false); return(0); } catch (Exception exc) { LogMessage("Error: " + exc, DiagnosticMessageType.Error); return(1); } }
public override int Run(string[] args) { if (args.Length != 3 && args.Length != 4) { DisplayCommandUsage(); return(1); } IProjectInfoRepository projectInfoRepository = ObjectFactory.Instance.CreateProjectInfoRepository(); string projectName = args[0]; string projectConfigurationName = args[1]; string targetEnvironmentName = args[2]; bool isSimulation = (args.Length >= 4 ? string.Equals(args[3], "simulate", StringComparison.OrdinalIgnoreCase) : false); ProjectInfo projectInfo = projectInfoRepository.FindByName(projectName); if (projectInfo == null) { OutputWriter.WriteLine("Project named '{0}' doesn't exist.", projectName); return(1); } ITeamCityClient teamCityClient = ObjectFactory.Instance.CreateTeamCityClient(); Project project = teamCityClient.GetProjectByName(projectInfo.ArtifactsRepositoryName); ProjectDetails projectDetails = teamCityClient.GetProjectDetails(project); ProjectConfiguration projectConfiguration = projectDetails.ConfigurationsList .Configurations .SingleOrDefault(pc => pc.Name == projectConfigurationName); if (projectConfiguration == null) { OutputWriter.WriteLine( "Project configuration named '{0}' doesn't exist for project '{1}'.", projectConfigurationName, projectName); return(0); } ProjectConfigurationDetails projectConfigurationDetails = teamCityClient.GetProjectConfigurationDetails(projectConfiguration); ProjectConfigurationBuild projectConfigurationBuild = teamCityClient.GetProjectConfigurationBuilds(projectConfigurationDetails, 0, 1) .Builds .FirstOrDefault(); if (projectConfigurationBuild == null) { throw new InvalidOperationException( string.Format( "Project configuration '{0}' of project '{1}' doesn't have any builds yet.", projectConfigurationName, projectName)); } if (projectConfigurationBuild.Status != BuildStatus.Success) { throw new InvalidOperationException( string.Format( "Couldn't deploy latest build of project configuration '{0}' of project '{1}' because it was not successfull.", projectConfigurationName, projectName)); } string projectConfigurationBuildId = projectConfigurationBuild.Id; try { DeploymentTask deploymentTask = projectInfo.CreateDeploymentTask(ObjectFactory.Instance); Guid deploymentId = Guid.NewGuid(); var deploymentInfo = new DeploymentInfo( deploymentId, isSimulation, projectName, projectConfigurationName, projectConfigurationBuildId, targetEnvironmentName, projectInfo.CreateEmptyInputParams()); IDeploymentPipeline deploymentPipeline = ObjectFactory.Instance.CreateDeploymentPipeline(); deploymentPipeline.DiagnosticMessagePosted += (eventSender, tmpArgs) => LogMessage(tmpArgs.Message, tmpArgs.MessageType); var deploymentContext = new DeploymentContext(RequesterIdentity); deploymentPipeline.StartDeployment(deploymentInfo, deploymentTask, deploymentContext, false); return(0); } catch (Exception exc) { LogMessage("Error: " + exc, DiagnosticMessageType.Error); return(1); } }