コード例 #1
0
        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);
            }
        }
コード例 #2
0
        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));
            }
        }
コード例 #3
0
        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);
            }
        }
コード例 #4
0
        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);
        }
コード例 #5
0
        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);
        }
コード例 #6
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);
        }
コード例 #7
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);
            }
        }
コード例 #8
0
        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);
            }
        }