Exemplo n.º 1
0
 private void OnDeploymentTaskStarting(DeploymentTask deploymentTask, DeploymentContext deploymentContext)
 {
     foreach (IDeploymentPipelineModule deploymentPipelineModule in _modules)
       {
     deploymentPipelineModule.OnDeploymentTaskStarting(deploymentTask, deploymentContext);
       }
 }
Exemplo n.º 2
0
        public void StartDeployment(DeploymentTask deploymentTask, DeploymentContext deploymentContext)
        {
            if (deploymentTask == null)
              {
            throw new ArgumentNullException("deploymentTask");
              }

              if (deploymentContext == null)
              {
            throw new ArgumentNullException("deploymentContext");
              }

              deploymentContext.DateStarted = DateTime.UtcNow;

              bool finishedSuccessfully = false;

              OnDeploymentTaskStarting(deploymentTask, deploymentContext);

              try
              {
            deploymentTask.PrepareAndExecute();

            finishedSuccessfully = true;
              }
              finally
              {
            deploymentContext.DateFinished = DateTime.UtcNow;
            deploymentContext.FinishedSuccessfully = finishedSuccessfully;

            // TODO IMM HI: catch exceptions; pass them upstream using some mechanisms like DeploymentTask.DiagnosticMessagePosted event
            OnDeploymentTaskFinished(
              deploymentTask,
              deploymentContext);
              }
        }
        public void OnDeploymentTaskFinished_DoNothing_SoDoesNotThrows()
        {
            var enforceTargetEnvironmentConstraintsModule = new EnforceTargetEnvironmentConstraintsModule();
              var environmentInfoRepository = new Mock<IEnvironmentInfoRepository>();
              var artifactsRepository = new Mock<IArtifactsRepository>();
              TerminalAppProjectInfo projectInfo = new TerminalAppProjectInfo("name", "artifactsRepositoryName", "artifactsrepositoryDirName", false, "terminalAppName", "terminalAppDirName", "terminalAppExeName");
              var deploymentTask = new DeployTerminalAppDeploymentTask(environmentInfoRepository.Object, artifactsRepository.Object, projectInfo, "Production", "buildId", "prod");
              var deploymentContext = new DeploymentContext("requester");

              Assert.DoesNotThrow(() => enforceTargetEnvironmentConstraintsModule.OnDeploymentTaskFinished(deploymentTask, deploymentContext));
        }
        public void OnDeploymentTaskStarting_WhenEnvironmentIsProductionAndConfigurationIsNot_ThrowsInvalidOperationException()
        {
            var enforceTargetEnvironmentConstraintsModule = new EnforceTargetEnvironmentConstraintsModule();
              var environmentInfoRepository = new Mock<IEnvironmentInfoRepository>();
              var artifactsRepository = new Mock<IArtifactsRepository>();
              TerminalAppProjectInfo projectInfo = new TerminalAppProjectInfo("name", "artifactsRepositoryName", "artifactsrepositoryDirName", false, "terminalAppName", "terminalAppDirName", "terminalAppExeName");
              var deploymentTask = new DeployTerminalAppDeploymentTask(environmentInfoRepository.Object, artifactsRepository.Object, projectInfo, "trunk", "buildId", "prod");
              var deploymentContext = new DeploymentContext("requester");

              Assert.Throws<InvalidOperationException>(() => enforceTargetEnvironmentConstraintsModule.OnDeploymentTaskStarting(deploymentTask, deploymentContext));
        }
Exemplo n.º 5
0
        public void OnDeploymentTaskStarting_DoNothing_SoDoesNotThrow()
        {
            var deploymentRequestRepository = new Mock<IDeploymentRequestRepository>();
              var auditingModule = new AuditingModule(deploymentRequestRepository.Object);

              var environmentInfoRepository = new Mock<IEnvironmentInfoRepository>();
              var artifactsRepository = new Mock<IArtifactsRepository>();
              TerminalAppProjectInfo projectInfo = new TerminalAppProjectInfo("name", "artifactsRepositoryName", "artifactsrepositoryDirName", false, "terminalAppName", "terminalAppDirName", "terminalAppExeName");
              var deploymentTask = new DeployTerminalAppDeploymentTask(environmentInfoRepository.Object, artifactsRepository.Object, projectInfo, "Production", "buildId", "prod");
              var deploymentContext = new DeploymentContext("requester");

              Assert.DoesNotThrow(() => auditingModule.OnDeploymentTaskStarting(deploymentTask, deploymentContext));
        }
Exemplo n.º 6
0
        public void StartDeployment(string targetEnvironment, List<ProjectDeploymentData> projectDeployments, DeploymentContext deploymentContext)
        {
            Guard.NotNull(projectDeployments, "projectDeploymentInfos");
              Guard.NotNull(deploymentContext, "deploymentContext");

              if (projectDeployments.Any() == false)
              {
            PostDiagnosticMessage(string.Format("No projects to deploy on environment '{0}'.", targetEnvironment), DiagnosticMessageType.Info);
            return;
              }

              PostDiagnosticMessage(string.Format("Starting deployment of environment: '{0}'.", targetEnvironment), DiagnosticMessageType.Info);
              PostDiagnosticMessage(string.Format("Projects count to deploy: '{0}'.", projectDeployments.Count), DiagnosticMessageType.Info);

              deploymentContext.DateStarted = DateTime.UtcNow;

              int successfullyDeployed = 0;

              foreach (var projectDeployment in projectDeployments)
              {
            var isPrepared = PrepareProject(projectDeployment, deploymentContext);

            if (isPrepared == false)
            {
              continue;
            }

            var isDeployed = ExecuteProjectDeployment(projectDeployment, deploymentContext);

            if (isDeployed)
            {
              successfullyDeployed++;
            }
              }

              deploymentContext.DateFinished = DateTime.UtcNow;
              deploymentContext.FinishedSuccessfully = projectDeployments.Count == successfullyDeployed;

              int failedCount = projectDeployments.Count - successfullyDeployed;

              PostDiagnosticMessage(string.Format("Finished deployment of environment: '{0}', successfully deployed: {1}, failed: {2}", targetEnvironment, successfullyDeployed, failedCount), DiagnosticMessageType.Info);
              PostDiagnosticMessage(
            "- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -",
            DiagnosticMessageType.Info);
        }
Exemplo n.º 7
0
        public void OnDeploymentTaskStarting_DoNothing_SoDoesNotThrow()
        {
            var deploymentRequestRepository = new Mock<IDeploymentRequestRepository>();
              var auditingModule = new AuditingModule(deploymentRequestRepository.Object);

              var projectsInfoRepository = new Mock<IProjectInfoRepository>();
              var environmentInfoRepository = new Mock<IEnvironmentInfoRepository>();
              var artifactsRepository = new Mock<IArtifactsRepository>();
              var directoryAdapter = new Mock<IDirectoryAdapter>();
              var fileAdapter = new Mock<IFileAdapter>();
              var zipFileAdapter = new Mock<IZipFileAdapter>();
              var deploymentTask = new DeployTerminalAppDeploymentTask(projectsInfoRepository.Object, environmentInfoRepository.Object, artifactsRepository.Object, directoryAdapter.Object, fileAdapter.Object, zipFileAdapter.Object);
              var deploymentContext = new DeploymentContext("requester");

              DeploymentInfo deploymentInfo = DeploymentInfoGenerator.GetTerminalAppDeploymentInfo();

              Assert.DoesNotThrow(() => auditingModule.OnDeploymentTaskStarting(deploymentInfo, deploymentTask, deploymentContext));
        }
Exemplo n.º 8
0
        public void OnDeploymentTaskFinished_ExpectAddDeploymentRequest()
        {
            DeploymentInfo deploymentInfo = DeploymentInfoGenerator.GetTerminalAppDeploymentInfo();

              var deploymentRequestRepository = new Mock<IDeploymentRequestRepository>(MockBehavior.Strict);
              var auditingModule = new AuditingModule(deploymentRequestRepository.Object);

              var environmentInfoRepository = new Mock<IEnvironmentInfoRepository>();
              var artifactsRepository = new Mock<IArtifactsRepository>();
              var projectsInfoRepository = new Mock<IProjectInfoRepository>();
              var directoryAdapter = new Mock<IDirectoryAdapter>();
              var fileAdapter = new Mock<IFileAdapter>();
              var zipFileAdapter = new Mock<IZipFileAdapter>();

              var deploymentTask = new DeployTerminalAppDeploymentTask(projectsInfoRepository.Object, environmentInfoRepository.Object, artifactsRepository.Object, directoryAdapter.Object, fileAdapter.Object, zipFileAdapter.Object);
              var deploymentContext = new DeploymentContext("requester");

              deploymentRequestRepository
            .Setup(
              drr =>
              drr.AddDeploymentRequest(
            It.Is<DeploymentRequest>(
              r => r.ProjectName == deploymentInfo.ProjectName
                && r.TargetEnvironmentName == deploymentInfo.TargetEnvironmentName)));

              environmentInfoRepository
            .Setup(x => x.FindByName(deploymentInfo.TargetEnvironmentName))
            .Returns(DeploymentDataGenerator.GetEnvironmentInfo());

              projectsInfoRepository
            .Setup(pir => pir.FindByName(deploymentInfo.ProjectName))
            .Returns(DeploymentDataGenerator.GetTerminalAppProjectInfo());

              deploymentTask.Initialize(deploymentInfo);
              deploymentTask.Prepare();

              Assert.DoesNotThrow(() => auditingModule.OnDeploymentTaskFinished(deploymentInfo, deploymentTask, deploymentContext));
        }
Exemplo n.º 9
0
        public void OnDeploymentTaskFinished_ExpectAddDeploymnetRequest()
        {
            string projectName = "projectName";
              string targetEnvironmentName = "targetEnvironmentName";
              var deploymentRequestRepository = new Mock<IDeploymentRequestRepository>(MockBehavior.Strict);
              var auditingModule = new AuditingModule(deploymentRequestRepository.Object);

              var environmentInfoRepository = new Mock<IEnvironmentInfoRepository>();
              var artifactsRepository = new Mock<IArtifactsRepository>();
              TerminalAppProjectInfo projectInfo = new TerminalAppProjectInfo(projectName, "artifactsRepositoryName", "artifactsrepositoryDirName", false, "terminalAppName", "terminalAppDirName", "terminalAppExeName");
              var deploymentTask = new DeployTerminalAppDeploymentTask(environmentInfoRepository.Object, artifactsRepository.Object, projectInfo, "Production", "buildId", targetEnvironmentName);
              var deploymentContext = new DeploymentContext("requester");

              deploymentRequestRepository
            .Setup(
              drr =>
              drr.AddDeploymentRequest(
            It.Is<DeploymentRequest>(
              r => r.ProjectName == projectName
                && r.TargetEnvironmentName == targetEnvironmentName)));

              Assert.DoesNotThrow(() => auditingModule.OnDeploymentTaskFinished(deploymentTask, deploymentContext));
        }
        public void StartDeployment(DeploymentInfo deploymentInfo, DeploymentTask deploymentTask, DeploymentContext deploymentContext)
        {
            Guard.NotNull(deploymentInfo, "deploymentInfo");
              Guard.NotNull(deploymentTask, "deploymentTask");
              Guard.NotNull(deploymentContext, "deploymentContext");

              PostDiagnosticMessage(string.Format("Starting{0} '{1}'.", (deploymentInfo.IsSimulation ? " (simulation)" : ""), deploymentTask.GetType().Name), DiagnosticMessageType.Info);

              deploymentContext.DateStarted = DateTime.UtcNow;

              deploymentTask.DiagnosticMessagePosted += OnDeploymentTaskDiagnosticMessagePosted;

              bool finishedSuccessfully = false;

              OnDeploymentTaskStarting(deploymentInfo, deploymentTask, deploymentContext);

              try
              {
            deploymentTask.Initialize(deploymentInfo);
            deploymentTask.PrepareAndExecute();

            finishedSuccessfully = true;

            PostDiagnosticMessage(string.Format("Finished{0} '{1}' (\"{2}\").", (deploymentInfo.IsSimulation ? " (simulation)" : ""), deploymentTask.GetType().Name, deploymentTask.Description), DiagnosticMessageType.Info);
            PostDiagnosticMessage("- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -", DiagnosticMessageType.Info);
              }
              finally
              {
            deploymentContext.DateFinished = DateTime.UtcNow;
            deploymentContext.FinishedSuccessfully = finishedSuccessfully;

            // TODO IMM HI: catch exceptions; pass them upstream using some mechanisms like DeploymentTask.DiagnosticMessagePosted event
            OnDeploymentTaskFinished(deploymentInfo, deploymentTask, deploymentContext);

            deploymentTask.DiagnosticMessagePosted -= OnDeploymentTaskDiagnosticMessagePosted;
              }
        }
 private void OnDeploymentTaskFinished(DeploymentInfo deploymentInfo, DeploymentTask deploymentTask, DeploymentContext deploymentContext)
 {
     foreach (IDeploymentPipelineModule deploymentPipelineModule in _modules)
       {
     deploymentPipelineModule.OnDeploymentTaskFinished(deploymentInfo, deploymentTask, deploymentContext);
       }
 }
Exemplo n.º 12
0
        public override int Run(string[] args)
        {
            if (args.Length != 3)
              {
            DisplayCommandUsage();
            return 1;
              }

              IProjectInfoRepository projectInfoRepository =
            ObjectFactory.Instance.CreateProjectInfoRepository();

              string projectName = args[0];
              string projectConfigurationName = args[1];
              string targetEnvironmentName = args[2];

              ProjectInfo projectInfo = projectInfoRepository.GetByName(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,
            projectConfigurationName,
            projectConfigurationBuildId,
            targetEnvironmentName);

            deploymentTask.DiagnosticMessagePosted +=
              (eventSender, tmpArgs) => LogMessage(tmpArgs.Message);

            IDeploymentPipeline deploymentPipeline =
              ObjectFactory.Instance.CreateDeploymentPipeline();

            var deploymentContext = new DeploymentContext(RequesterIdentity);

            deploymentPipeline.StartDeployment(deploymentTask, deploymentContext);

            return 0;
              }
              catch (Exception exc)
              {
            LogMessage("Error: " + exc);

            return 1;
              }
        }
Exemplo n.º 13
0
        private void StartTask(DeploymentTask deploymentTask, Guid uniqueClientId, string requesterIdentity, Core.Domain.DeploymentInfo deploymentInfo)
        {
            var deploymentContext =
            new DeploymentContext(requesterIdentity);

              EventHandler<DiagnosticMessageEventArgs> deploymentPipelineDiagnosticMessageAction =
            (eventSender, tmpArgs) => LogMessage(uniqueClientId, tmpArgs.MessageType, tmpArgs.Message);

              try
              {
            _deploymentPipeline.DiagnosticMessagePosted += deploymentPipelineDiagnosticMessageAction;

            _deploymentPipeline.StartDeployment(deploymentInfo, deploymentTask, deploymentContext, _applicationConfiguration.DeployDependentProjects);
              }
              finally
              {
            _deploymentPipeline.DiagnosticMessagePosted -= deploymentPipelineDiagnosticMessageAction;
              }
        }
Exemplo n.º 14
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 void StartDeployment(DeploymentInfo deploymentInfo, DeploymentTask deploymentTask, DeploymentContext deploymentContext, bool deployDependencies)
        {
            Guard.NotNull(deploymentInfo, "deploymentInfo");
            Guard.NotNull(deploymentTask, "deploymentTask");
            Guard.NotNull(deploymentContext, "deploymentContext");

            PostDiagnosticMessage(string.Format("Starting{0} '{1}'.", (deploymentInfo.IsSimulation ? " (simulation)" : ""), deploymentTask.GetType().Name), DiagnosticMessageType.Info);

            deploymentContext.DateStarted = DateTime.UtcNow;

            deploymentTask.DiagnosticMessagePosted += OnDeploymentTaskDiagnosticMessagePosted;

            bool finishedSuccessfully = false;

            OnDeploymentTaskStarting(deploymentInfo, deploymentTask, deploymentContext);

            try
            {
                deploymentTask.Initialize(deploymentInfo);

                if (_applicationConfiguration.DeployDependentProjects && deploymentInfo.ProjectConfigurationName == DeployDependenciesTask.DefaultTeamCityProjectConfiguration)
                {
                    deploymentTask.EnableDependenciesDeployment(_objectFactory);
                }

                deploymentTask.PrepareAndExecute();

                finishedSuccessfully = true;

                PostDiagnosticMessage(
                    string.Format("Finished{0} '{1}' (\"{2}\").", (deploymentInfo.IsSimulation ? " (simulation)" : ""),
                                  deploymentTask.GetType().Name, deploymentTask.Description), DiagnosticMessageType.Info);
                PostDiagnosticMessage(
                    "- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -",
                    DiagnosticMessageType.Info);
            }
            catch (Exception ex)
            {
                PostDiagnosticMessage(string.Format("Exception: {0}", ex.Message), DiagnosticMessageType.Error);
            }
            finally
            {
                deploymentContext.DateFinished         = DateTime.UtcNow;
                deploymentContext.FinishedSuccessfully = finishedSuccessfully;

                // TODO IMM HI: catch exceptions; pass them upstream using some mechanisms like DeploymentTask.DiagnosticMessagePosted event
                OnDeploymentTaskFinished(deploymentInfo, deploymentTask, deploymentContext);

                deploymentTask.DiagnosticMessagePosted -= OnDeploymentTaskDiagnosticMessagePosted;
            }
        }
 private void OnDeploymentTaskFinished(DeploymentInfo deploymentInfo, DeploymentTask deploymentTask, DeploymentContext deploymentContext)
 {
     foreach (IDeploymentPipelineModule deploymentPipelineModule in _modules)
     {
         deploymentPipelineModule.OnDeploymentTaskFinished(deploymentInfo, deploymentTask, deploymentContext);
     }
 }
Exemplo n.º 17
0
        public void StartDeployment(string targetEnvironment, List <ProjectDeploymentData> projectDeployments, DeploymentContext deploymentContext)
        {
            Guard.NotNull(projectDeployments, "projectDeploymentInfos");
            Guard.NotNull(deploymentContext, "deploymentContext");

            if (projectDeployments.Any() == false)
            {
                PostDiagnosticMessage(string.Format("No projects to deploy on environment '{0}'.", targetEnvironment), DiagnosticMessageType.Info);
                return;
            }

            PostDiagnosticMessage(string.Format("Starting deployment of environment: '{0}'.", targetEnvironment), DiagnosticMessageType.Info);
            PostDiagnosticMessage(string.Format("Projects count to deploy: '{0}'.", projectDeployments.Count), DiagnosticMessageType.Info);

            deploymentContext.DateStarted = DateTime.UtcNow;

            int successfullyDeployed = 0;

            foreach (var projectDeployment in projectDeployments)
            {
                var isPrepared = PrepareProject(projectDeployment, deploymentContext);

                if (isPrepared == false)
                {
                    continue;
                }

                var isDeployed = ExecuteProjectDeployment(projectDeployment, deploymentContext);

                if (isDeployed)
                {
                    successfullyDeployed++;
                }
            }

            deploymentContext.DateFinished         = DateTime.UtcNow;
            deploymentContext.FinishedSuccessfully = projectDeployments.Count == successfullyDeployed;

            int failedCount = projectDeployments.Count - successfullyDeployed;

            PostDiagnosticMessage(string.Format("Finished deployment of environment: '{0}', successfully deployed: {1}, failed: {2}", targetEnvironment, successfullyDeployed, failedCount), DiagnosticMessageType.Info);
            PostDiagnosticMessage(
                "- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -",
                DiagnosticMessageType.Info);
        }
Exemplo n.º 18
0
        private bool ExecuteProjectDeployment(ProjectDeploymentData projectDeploymentData, DeploymentContext deploymentContext)
        {
            DeploymentInfo deploymentInfo = projectDeploymentData.DeploymentInfo;
            DeploymentTask deploymentTask = projectDeploymentData.DeploymentTask;

            PostDiagnosticMessage(string.Format("Starting{0} '{1}'.", (deploymentInfo.IsSimulation ? " (simulation)" : ""), deploymentTask.GetType().Name), DiagnosticMessageType.Info);

            deploymentTask.DiagnosticMessagePosted += OnDeploymentTaskDiagnosticMessagePosted;

            try
            {
                deploymentTask.Execute();

                PostDiagnosticMessage(
                    string.Format("Finished{0} '{1}' (\"{2}\").", (deploymentInfo.IsSimulation ? " (simulation)" : ""),
                                  deploymentTask.GetType().Name, deploymentTask.Description), DiagnosticMessageType.Info);
                PostDiagnosticMessage(
                    "- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -",
                    DiagnosticMessageType.Info);

                return(true);
            }
            catch (Exception ex)
            {
                PostDiagnosticMessage(string.Format("Exception: {0}", ex.Message), DiagnosticMessageType.Error);
                LogInnerException(ex);
            }
            finally
            {
                // TODO IMM HI: catch exceptions; pass them upstream using some mechanisms like DeploymentTask.DiagnosticMessagePosted event
                OnDeploymentTaskFinished(deploymentInfo, deploymentTask, deploymentContext);

                deploymentTask.DiagnosticMessagePosted -= OnDeploymentTaskDiagnosticMessagePosted;
            }

            return(false);
        }
Exemplo n.º 19
0
        public override int Run(string[] args)
        {
            if (args.Length != 4)
              {
            DisplayCommandUsage();

            return 1;
              }

              IProjectInfoRepository projectInfoRepository =
            ObjectFactory.Instance.CreateProjectInfoRepository();

              string projectName = args[0];
              string projectConfigurationName = args[1];
              string projectConfigurationBuildId = args[2];
              string targetEnvironmentName = args[3];

              ProjectInfo projectInfo = projectInfoRepository.GetByName(projectName);

              if (projectInfo == null)
              {
            OutputWriter.WriteLine("Project named '{0}' doesn't exist.", projectName);
            return 1;
              }

              try
              {
            DeploymentTask deploymentTask =
              projectInfo.CreateDeploymentTask(
            ObjectFactory.Instance,
            projectConfigurationName,
            projectConfigurationBuildId,
            targetEnvironmentName);

            deploymentTask.DiagnosticMessagePosted +=
              (eventSender, tmpArgs) => LogMessage(tmpArgs.Message);

            IDeploymentPipeline deploymentPipeline =
              ObjectFactory.Instance.CreateDeploymentPipeline();

            var deploymentContext = new DeploymentContext(RequesterIdentity);

            deploymentPipeline.StartDeployment(deploymentTask, deploymentContext);

            return 0;
              }
              catch (Exception exc)
              {
            LogMessage("Error: " + exc);

            return 1;
              }
        }
Exemplo n.º 20
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);
              }
        }
Exemplo n.º 21
0
        private bool PrepareProject(ProjectDeploymentData projectDeploymentData, DeploymentContext deploymentContext)
        {
            DeploymentInfo deploymentInfo = projectDeploymentData.DeploymentInfo;
              DeploymentTask deploymentTask = projectDeploymentData.DeploymentTask;

              PostDiagnosticMessage(string.Format("Preparing {0} '{1}'.", (deploymentInfo.IsSimulation ? " (simulation)" : ""), deploymentTask.GetType().Name), DiagnosticMessageType.Info);

              deploymentTask.DiagnosticMessagePosted += OnDeploymentTaskDiagnosticMessagePosted;

              OnDeploymentTaskStarting(deploymentInfo, deploymentTask, deploymentContext);

              try
              {
            deploymentTask.Initialize(deploymentInfo);

            deploymentTask.Prepare();

            return true;
              }
              catch (Exception exc)
              {
            PostDiagnosticMessage(string.Format("Exception while preparing: {0}", exc.Message), DiagnosticMessageType.Error);
              }
              finally
              {
            deploymentTask.DiagnosticMessagePosted -= OnDeploymentTaskDiagnosticMessagePosted;
              }

              return false;
        }
        public void SetUp()
        {
            _environmentInfoRepositoryFake = new Mock<IEnvironmentInfoRepository>();
              _artifactsRepositoryFake = new Mock<IArtifactsRepository>();
              _projectsInfoRepositoryFake = new Mock<IProjectInfoRepository>();
              _directoryAdapterFake = new Mock<IDirectoryAdapter>(MockBehavior.Loose);
              _fileAdapterFake = new Mock<IFileAdapter>(MockBehavior.Loose);
              _zipFileAdapterFake = new Mock<IZipFileAdapter>(MockBehavior.Loose);
              _deploymentContext = new DeploymentContext("requester");

              _deploymentTask =
            new DeployTerminalAppDeploymentTask(
              _projectsInfoRepositoryFake.Object,
              _environmentInfoRepositoryFake.Object,
              _artifactsRepositoryFake.Object,
              _directoryAdapterFake.Object,
              _fileAdapterFake.Object,
              _zipFileAdapterFake.Object);

              _enforceTargetEnvironmentConstraintsModule = new EnforceTargetEnvironmentConstraintsModule();
        }
Exemplo n.º 23
0
        private void StartTask(DeploymentTask deploymentTask, Guid uniqueClientId, string requesterIdentity, DeploymentInfo deploymentInfoDto, ProjectInfo projectInfo)
        {
            Core.Domain.DeploymentInfo deploymentInfo =
            DtoMapper.ConvertDeploymentInfo(deploymentInfoDto, projectInfo);

              var deploymentContext =
            new DeploymentContext(requesterIdentity);

              EventHandler<DiagnosticMessageEventArgs> deploymentPipelineDiagnosticMessageAction =
            (eventSender, tmpArgs) =>
            {
              _log.DebugIfEnabled(() => string.Format("{0}: {1}", tmpArgs.MessageType, tmpArgs.Message));

              _diagnosticMessagesLogger.LogMessage(uniqueClientId, tmpArgs.MessageType, tmpArgs.Message);
            };

              try
              {
            _deploymentPipeline.DiagnosticMessagePosted += deploymentPipelineDiagnosticMessageAction;

            _deploymentPipeline.StartDeployment(deploymentInfo, deploymentTask, deploymentContext);
              }
              finally
              {
            _deploymentPipeline.DiagnosticMessagePosted -= deploymentPipelineDiagnosticMessageAction;
              }
        }
Exemplo n.º 24
0
        private void DoDeploy(Guid uniqueClientId, string requesterIdentity, string projectConfigurationName, string projectConfigurationBuildId, string targetEnvironmentName, ProjectInfo projectInfo)
        {
            DeploymentTask deploymentTask =
            projectInfo.CreateDeploymentTask(
              ObjectFactory.Instance,
              projectConfigurationName,
              projectConfigurationBuildId,
              targetEnvironmentName);

              deploymentTask.DiagnosticMessagePosted +=
            (eventSender, tmpArgs) =>
              {
            _log.DebugIfEnabled(() => string.Format("{0}: {1}", tmpArgs.MessageType, tmpArgs.Message));

            _diagnosticMessagesLogger.LogMessage(uniqueClientId, tmpArgs.MessageType, tmpArgs.Message);
              };

              var deploymentContext =
            new DeploymentContext(requesterIdentity);

              _deploymentPipeline.StartDeployment(deploymentTask, deploymentContext);
        }
Exemplo n.º 25
0
        private bool ExecuteProjectDeployment(ProjectDeploymentData projectDeploymentData, DeploymentContext deploymentContext)
        {
            DeploymentInfo deploymentInfo = projectDeploymentData.DeploymentInfo;
              DeploymentTask deploymentTask = projectDeploymentData.DeploymentTask;

              PostDiagnosticMessage(string.Format("Starting{0} '{1}'.", (deploymentInfo.IsSimulation ? " (simulation)" : ""), deploymentTask.GetType().Name), DiagnosticMessageType.Info);

              deploymentTask.DiagnosticMessagePosted += OnDeploymentTaskDiagnosticMessagePosted;

              try
              {
            deploymentTask.Execute();

            PostDiagnosticMessage(
              string.Format("Finished{0} '{1}' (\"{2}\").", (deploymentInfo.IsSimulation ? " (simulation)" : ""),
            deploymentTask.GetType().Name, deploymentTask.Description), DiagnosticMessageType.Info);
            PostDiagnosticMessage(
              "- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -",
              DiagnosticMessageType.Info);

            return true;
              }
              catch (Exception ex)
              {
            PostDiagnosticMessage(string.Format("Exception: {0}", ex.Message), DiagnosticMessageType.Error);
            LogInnerException(ex);
              }
              finally
              {
            // TODO IMM HI: catch exceptions; pass them upstream using some mechanisms like DeploymentTask.DiagnosticMessagePosted event
            OnDeploymentTaskFinished(deploymentInfo, deploymentTask, deploymentContext);

            deploymentTask.DiagnosticMessagePosted -= OnDeploymentTaskDiagnosticMessagePosted;
              }

              return false;
        }