Включение уведомлений по электронной почте прерывает работу MS Release Management

Я использую TFS 2013 Update 4, Release Management Client Update 4, Release Management Server Update 4 и Update 4 Агенты развертывания. Я использую ReleaseTfvcTemplate.12.xml.

Когда разработчик регистрирует код, TFS Build компилирует код, и если он завершается, он передается на стадию DEV. Это прекрасно работает. Однако включение электронной почты создает проблему.

Допустим, мне нужно уведомить 10 человек о развертывании, а затем отправить этим же 10 людям электронные письма с «одобрением» после того, как развертывание будет принято, что происходит автоматически. Это 20 писем.

Я включил подробное ведение журнала на сервере RM и вижу, что отправка каждого письма занимает 30 секунд. Они отправляются по одному, один за другим. Таким образом, для отправки двадцати электронных писем требуется десять минут.

Электронные письма начинают отправляться, как только начинается развертывание. Фактическое развертывание обычно занимает около 1 минуты. Управление выпуском помечает сборку как развернутую и продолжает отправлять электронные письма «развертывание» и «утверждение». Тем временем журнал конфигурации сборки TFS застрял в ожидании по адресу:

Обработать каждый выпуск ConfigurationsToRelease. Выпустить сборку. Запустить процесс сборки управления выпусками для текущей конфигурации.

Если развертывание завершает свои электронные письма, потому что они отключены или нужно отправить только 3-4, то журнал конфигурации сборки TFS завершает выпуск, и сборка помечается как успешная. Однако TFSBuild будет ждать только 5 минут в части «Выпуск сборки» рабочего процесса ReleaseTfvcTemplate. Если для отправки 20 электронных писем требуется больше 5 минут, что происходит, сборка завершается ошибкой. Как увеличить этот таймаут? Я увеличил время ожидания для каждого компонента/инструмента, который смог найти в управлении релизами. Я даже изменил некоторые настройки времени ожидания web.config.

Конечным результатом является то, что я получаю развернутый код, Управление релизами считает, что все прошло нормально, а TFS Build считает, что сборка не удалась.

Редактировать:

Вот несколько строк, которые я вытащил из подробных журналов сервера RM. Обратите внимание на временные метки. (Я вырезал несколько строк)

На вкладке «Администрирование» в разделе «Настройки» есть параметр «Тайм-аут развертывания триггера TFS». Если вы увеличите это значение, сборка не завершится сбоем через 5 минут.


person austin    schedule 30.07.2015    source источник


Ответы (1)


Однако я бы потратил некоторое время на изучение того, почему отправка каждого письма занимает 30 секунд. Я никогда не видел такой конкретной проблемы... это может быть проблема с сетью или проблема с вашим почтовым сервером.

Я установил это значение на 99, а также время ожидания каждого компонента/инструмента, которое я смог найти. Я даже скопировал инструменты Microsoft, которыми пользуюсь, чтобы самостоятельно устанавливать их таймер (по умолчанию они недоступны для редактирования). Я понятия не имею, почему отправка электронного письма занимает 30 секунд, но это постоянно происходит. Они также не отправляют последовательно. Я связался с нашими администраторами Exchange, и наш почтовый сервер не кажется виновником, но, возможно, они ошибаются. В журнале сервера управления релизами нет ошибок, связанных с невозможностью отправки электронных писем.

person Daniel Mann    schedule 30.07.2015
comment
Вот что я часто вижу в журналах сервера RM, когда дело доходит до электронных писем (обратите внимание на отметки времени): 28.07.2015 15:44:46 — Подробно — (13008, 7140) — Уведомление под названием «Сервер управления выпуском». – Выполняется развертывание (домен\учетная запись) будет отправлено пользователю с адресом электронной почты [email protected] 28.07.2015 15:45:16 – Подробно – (13008, 7140) – Уведомление под названием Сервер управления выпуском – Развертывание в Прогресс (домен\аккаунт) отправлен пользователю с адресом электронной почты [email protected] - person austin; 30.07.2015
comment
Если что-то (например, регулирование Exchange или наш спам-фильтр) препятствует более быстрой отправке писем, я не вижу никаких указаний на это в журналах сервера RM. - person austin; 30.07.2015
comment
Как насчет использования Papercut для временного обхода вашего сервера Exchange, чтобы исключить его? - person austin; 30.07.2015
comment
Я не знал, что Papercut существует. Спасибо. Это блестящая идея. Я вернусь с обновлением завтра. Изменить: я думаю, мне все равно нужно будет использовать сервер Exchange для отправки электронной почты. - person Graham Smith; 30.07.2015
comment
28.07.2015 15:49:48 — Подробно — (13008, 12024) — выполнение рабочего процесса завершено. 28.07.2015 15:49:48 — Информация — (13008, 12024) — DeploymentControllerServiceProcessor.OnActivityComplete: Рабочий процесс успешно завершен, примите шаг развертывания. LocalReleaseId: 596, LocalReleaseStepId: 2158 28.07.2015 15:54:47 — Информация — (13008, 6952) — DeploymentControllerServiceProcessor.PrepareNotificationForDeployerImplementation: NextActivityReadyForDeployment: 28.07.2015 15:54:47 — Информация, (13008 6952) — DeploymentControllerServiceProcessor.GetNextComponentReadyForDeployment: DeploymentEvent: 28.07.2015 15:54:49 — Информация — (13008, 12024) — Исключение в DeploymentControllerServiceProcessor.OnActivityComplete, app.Completed 28.07.2015 15:54:49 — Verbose — (13008, 12024) — запрос был прерван: запрос был отменен.: \r\n\r\n в System.Net.HttpWebRequest.EndGetResponse(IAsyncResult asyncResult)
в Microsoft.TeamFoundation.Release.Data .WebRequest.PlatformHttpClient.EndGetResponse(IAsyncResult asyncResult) в Microsoft.TeamFoundation.Release.Data.WebRequest.RestClientResponseRetriever.EndGetAsyncMemoryStreamFromResponse(IAsyncResult asyncResult, платформа IPlatformHttpClient) mHttpClient) в Microsoft.TeamFoundation.Release.Data.WebRequest.RestClientResponseRetriever.EndDownloadString(IAsyncResult asyncResult, IPlatformHttpClient platformHttpClient) в Microsoft.TeamFoundation.Release.Data.WebRequest.RestClient.EndPost(IAsyncResult asyncResult) в Microsoft.TeamFoundation.Release.Data. Proxy.RestProxy.HttpRequestor.‹>c__DisplayClass1.b__0(URL-адрес строки, тело строки) в Microsoft.TeamFoundation.Release.Data.Proxy.RestProxy.BaseNotificationServiceProxy.SendNotification(Int32 releaseId, String releaseName, String applicationVersionName, String stageTypeName, String environmentName, Int32 releaseStepId, Int32 releaseStepTypeId, логическое значение releaseStepIsAutomated) в Microsoft.TeamFoundation.Release.Workflow.Services.ReleaseWorkflowService.CreateNextReleaseStep(Release release, Stage stage, StageStep stageStep, Int32 releaseStageRank, Int32 TrialNumber) в Microsoft.TeamFoundation.Release.Workflow.Services. ReleaseWorkflowSer vice.MoveToNextReleaseStep(Release release, Stage currentStage, ReleaseStep currentReleaseStep) в Microsoft.TeamFoundation.Release.Workflow.Services.ReleaseWorkflowService.MoveWorkflowForward(Release release, ReleasePath releasePath, Stage currentStage, ReleaseStep currentReleaseStep, Int32 lastStepRankOfCurrentStage) в Microsoft. TeamFoundation.Release.Workflow.Services.ReleaseWorkflowService.AcceptStep(Release release, Int32 releaseStepId, Int32 ActualApproverId, String ApproverComment, Nullable_1_1 deferredDateTime) в Microsoft.TeamFoundation.Release.ServiceProcessor.Processor.DeploymentControllerServiceProcessor.OnActivityComplete(String workflow, WorkflowApplicationCompletedEve) - person austin; 30.07.2015