private void ProcessMapping(BuildStatusChangeEvent statusChanged, BuildDetail buildDetail, Mapping mapping, IPostDeployAction postDeployAction)
        {
            lock (GetLockObject(mapping))
            {
                var deployAgent = _deployAgentProvider.GetDeployAgent(mapping);

                // default to "happy; did nothing" if there's no deployment agent.
                var deployResult = new DeployAgentResult {
                    HasErrors = false, Output = string.Empty
                };

                if (deployAgent != null)
                {
                    using (var workingDirectory = new WorkingDirectory())
                    {
                        var deployAgentDataFactory = new DeployAgentDataFactory();
                        var deployData             = deployAgentDataFactory.Create(workingDirectory.DirectoryInfo.FullName,
                                                                                   mapping, buildDetail, statusChanged);

                        _deploymentFolderSource.DownloadDeploymentFolder(deployData.TfsBuildDetail, workingDirectory.DirectoryInfo.FullName);
                        deployResult = deployAgent.Deploy(deployData);
                    }
                }

                postDeployAction.DeploymentFinished(mapping, deployResult);
            }
        }
        public void DeployAgentDataFactory_should_expose_event_qualities()
        {
            const string oldQuality = "QA";
            const string newQuality = "Production";

            // Arrange
            var deployScriptRoot = Path.GetTempPath();
            var mapping          = new Mapping();
            var buildDetail      = new BuildDetail();
            var changeEvent      = new BuildStatusChangeEvent
            {
                StatusChange = new Change {
                    OldValue = oldQuality, NewValue = newQuality
                }
            };

            var factory = new DeployAgentDataFactory();

            // Act
            var data = factory.Create(deployScriptRoot, mapping, buildDetail, changeEvent);

            // Assert
            Assert.AreEqual(oldQuality, data.OriginalQuality, "OriginalQuality");
            Assert.AreEqual(newQuality, data.NewQuality, "NewQuality");
        }
        public void Execute(BuildStatusChangeEvent statusChanged, BuildDetail buildDetail, Mapping mapping, IPostDeployAction postDeployAction, int deploymentId)
        {
            lock (_namedLockSet.GetLockObject(mapping.Queue))
            {
                _deploymentEventRecorder.RecordStarted(deploymentId);

                var deployAgent = _deployAgentProvider.GetDeployAgent(mapping);

                // default to "happy; did nothing" if there's no deployment agent.
                var deployResult = new DeployAgentResult {
                    HasErrors = false, Output = string.Empty
                };

                if (deployAgent != null)
                {
                    using (var workingDirectory = new WorkingDirectory())
                    {
                        var deployAgentDataFactory = new DeployAgentDataFactory();
                        var deployData             = deployAgentDataFactory.Create(workingDirectory.DirectoryInfo.FullName,
                                                                                   mapping, buildDetail, statusChanged);
                        deployData.DeploymentId = deploymentId;

                        _deploymentFolderSource.DownloadDeploymentFolder(deployData.TfsBuildDetail, workingDirectory.DirectoryInfo.FullName);
                        deployResult = deployAgent.Deploy(deployData);
                    }
                }

                postDeployAction.DeploymentFinished(mapping, deployResult);

                _deploymentEventRecorder.RecordFinished(deploymentId, deployResult.HasErrors, deployResult.Output);
            }
        }
Exemple #4
0
        private DeployAgentData CreateDeployAgentData()
        {
            var mapping   = CreateMapping();
            var buildInfo = CreateBuildDetail();
            var buildStatusChangeEvent = new BuildStatusChangeEvent {
                StatusChange = new Change()
            };
            var factory = new DeployAgentDataFactory();

            return(factory.Create(DeployScriptRoot, mapping, buildInfo, buildStatusChangeEvent));
        }
        public void DeployAgentDataFactory_should_convert_zero_timeout_seconds_to_timespan_maxvalue()
        {
            // Arrange
            var deployScriptRoot = Path.GetTempPath();
            var mapping          = new Mapping {
                TimeoutSeconds = 0
            };
            var buildDetail = new BuildDetail();
            var changeEvent = new BuildStatusChangeEvent
            {
                StatusChange = new Change()
            };

            var factory = new DeployAgentDataFactory();

            // Act
            var data = factory.Create(deployScriptRoot, mapping, buildDetail, changeEvent);

            // Assert
            Assert.AreEqual(TimeSpan.MaxValue, data.Timeout);
        }