2016-07-23 1 views
3

Мы обновили наш сервер TFS 2013 до TFS 2015, и мы создаем новые агенты сборки.TFS Build агент выбрасывает «несанкционированное» исключение

До этого мы провели пробный прогон и получили все, что было достаточно хорошо, прежде чем мы сделали окончательное преобразование существующей базы данных TFS. Агент сборки работал отлично.

К нашему удивлению, наш агент по строительству более не сотрудничает после обновления. Создание тривиального определения сборки и присвоение ей очереди по умолчанию приводит к возникновению ошибки через 10-15 секунд.

Мы попытались повторно развернуть агента сборки, поиграть с разрешениями и пользователями, но безрезультатно.

Все мы получаем это в _diag \ журналы:

11:18:09.699993 JobManager.StartJob(job.JobId = a9702f31-2dff-4057-8253-a32ebc106f32) 
11:18:09.699993 JobInfo.ctor 
11:18:09.699993 JobInfo.ctor - leave 
11:18:09.699993 JobManager.StartJob - calling JobWriter.StartJob 
11:18:09.699993 JobWriter.StartJob - enter 
11:18:09.699993 JobWriter.StartJob - (SKIPPING)first renew 
11:18:09.715619 JobWriter.StartJob - start continual renewing 
11:18:09.715619 AuthorizationType : OAuth 
11:18:09.731245 --------------------------------------------------------------------------- 
11:18:09.731245 Microsoft.VisualStudio.Services.WebApi.VssServiceResponseException: Unauthorized 
11:18:09.731245 at Microsoft.VisualStudio.Services.WebApi.VssHttpClientBase.HandleResponse(HttpResponseMessage response) 
11:18:09.731245 at Microsoft.VisualStudio.Services.WebApi.VssHttpClientBase.<SendAsync>d__79.MoveNext() 
11:18:09.731245 --- End of stack trace from previous location where exception was thrown --- 
11:18:09.731245 at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) 
11:18:09.731245 at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 
11:18:09.731245 at Microsoft.VisualStudio.Services.WebApi.VssHttpClientBase.<SendAsync>d__76`1.MoveNext() 
11:18:09.731245 --- End of stack trace from previous location where exception was thrown --- 
11:18:09.731245 at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) 
11:18:09.731245 at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 
11:18:09.731245 at Microsoft.VisualStudio.Services.Location.Client.LocationHttpClient.<GetConnectionDataAsync>d__6.MoveNext() 
11:18:09.731245 --- End of stack trace from previous location where exception was thrown --- 
11:18:09.731245 at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) 
11:18:09.731245 at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 
11:18:09.731245 at Microsoft.VisualStudio.Services.Client.VssServerDataProvider.<ConnectAsync>d__39.MoveNext() 
11:18:09.731245 --- End of stack trace from previous location where exception was thrown --- 
11:18:09.731245 at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) 
11:18:09.731245 at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 
11:18:09.731245 at Microsoft.TeamFoundation.DistributedTask.Agent.Common.ConnectionHelper.GetConnection(Uri serverUri, VssCredentials credentials) 
11:18:09.731245 at Microsoft.TeamFoundation.DistributedTask.Agent.JobWriter.StartJob() 
11:18:09.731245 at Microsoft.VisualStudio.Services.WebApi.VssHttpClientBase.HandleResponse(HttpResponseMessage response) 
11:18:09.731245 at Microsoft.VisualStudio.Services.WebApi.VssHttpClientBase.<SendAsync>d__79.MoveNext() 
11:18:09.731245 --- End of stack trace from previous location where exception was thrown --- 
11:18:09.731245 at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) 
11:18:09.731245 at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 
11:18:09.731245 at Microsoft.VisualStudio.Services.WebApi.VssHttpClientBase.<SendAsync>d__76`1.MoveNext() 
11:18:09.731245 --- End of stack trace from previous location where exception was thrown --- 
11:18:09.731245 at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) 
11:18:09.731245 at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 
11:18:09.731245 at Microsoft.VisualStudio.Services.Location.Client.LocationHttpClient.<GetConnectionDataAsync>d__6.MoveNext() 
11:18:09.731245 --- End of stack trace from previous location where exception was thrown --- 
11:18:09.731245 at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) 
11:18:09.731245 at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 
11:18:09.731245 at Microsoft.VisualStudio.Services.Client.VssServerDataProvider.<ConnectAsync>d__39.MoveNext() 
11:18:09.731245 --- End of stack trace from previous location where exception was thrown --- 
11:18:09.731245 at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) 
11:18:09.731245 at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 
11:18:09.731245 at Microsoft.TeamFoundation.DistributedTask.Agent.Common.ConnectionHelper.GetConnection(Uri serverUri, VssCredentials credentials) 
11:18:09.731245 at Microsoft.TeamFoundation.DistributedTask.Agent.JobWriter.StartJob() 
11:18:09.731245 --------------------------------------------------------------------------- 

Запуск в интерактивном режиме или как служба не имеет никакого значения. Я зачислил пользователя службы агента сборки в качестве члена «Учетные записи службы пула агентов».

Я считаю, что это запрос обижая:

GET https://tfs:8443/tfs/DefaultCollection/_apis/connectionData?connectOptions=IncludeServices&lastChangeId=-1&lastChangeId64=-1 HTTP/1.1 
User-Agent: VSServices/14.102.25423.0 (VsoAgent.exe) VsoAgent.exe/1.95.3 
Accept-Language: en-US, nb-NO 
X-TFS-FedAuthRedirect: Suppress 
X-TFS-Session: 7a2e6368-a564-4231-bbd6-xxxxxxxxxx 
X-VSS-Agent: VSS: b5d9c453-017f-407c-ac00-b479d0d0e8ed 
Authorization: [huge bytesequence] 
Host: tfs:8443 
Accept-Encoding: gzip 

Это вознаграждается 401. Мой собственный adminuser однако может загрузить этот URI просто отлично.

Мой собственный пользователь admin - тот, который я использовал при настройке агента. Я также попытался запустить vsoagent.exe в интерактивном режиме от этого пользователя ... Но не идти. Чтение между строками (и просмотр некоторых ролей) - это пользователь, который запрещает имя машины, на которой работает агент. Я предполагаю, что этот пользователь был создан вначале и является тем, который фактически используется. Как я могу получить эту ситуацию под контролем?

EDIT: Если я бегу vsoagent.exe интерактивно от пользователя, который не входит в список пула из «пул агентов учетных записей служб», то агент немедленно ошибется с Access denied. admrunem needs Listen permissions for pool Regular to perform the action. For more information, contact the Team Foundation Server administrator.. Добавление admrunem в список вызывает меня немного дальше, а именно сообщение об ошибке, которое я пытаюсь диагностировать («несанкционированное» исключение). Примечание. На данный момент он использует авторизацию NTLM, а затем для фатального вызова, похоже, переключается на OAUTH.

ответ

1
  1. Убедитесь, что учетная запись, на которой выполняется агент, находится в роли «Account Account Service Account». enter image description here

  2. Убедитесь, что очередь предоставлена ​​в коллекции (https://your-tfs-server:8080/tfs/your-collection/_admin/_AgentQueue). Если нет - выберите «Новая очередь ..» и выберите существующую очередь.

  3. Убедитесь, что вы разворачиваете агент сборки Windows, точно следуя this article.
  4. Попытайтесь изменить учетную запись домена, которая является членом группы учетных записей службы агента сборки и принадлежит роли «Учетная запись службы пула агента», чтобы узнать, будет ли агент работать или нет.
+0

Я не совсем понимаю, что вы подразумеваете под «пытаются изменить учетную запись домена».Вы имеете в виду запустить vsoagent как другого пользователя домена? vsoagent/login: пользователь, пароль? Если да, то я дважды пробовал каждый элемент в вашем списке. Любая идея, что делает JobWriter.StartJob()? Я попробовал рефлектор, но не мог понять, где он попадает в HandleResponse(), где он выдает исключение. «Несанкционированное» - довольно неопределенное сообщение об ошибке. Я предполагаю, что это происходит с сервера TFS. Есть ли журнал аудита, который может дать мне полезные подсказки? – 9Rune5

+0

И только для того, чтобы быть понятным, с помощью «Учетных записей службы агента» вы имеете в виду коллекцию «Учетные записи сборки сборки проекта»? (эта группа не определена для моего проекта btw, а только для коллекции моего проекта) – 9Rune5

+0

Да. Попробуйте использовать учетную запись в аккаунтах службы агента сборки и учетной записи службы пула агентов. –

3

Убедитесь, что на веб-сайте Team Foundation Server IIS включена проверка подлинности Windows. Это нашло для нас проблему.

enter image description here

+0

да! Спасибо, что поделился. Это и трюк для нас. Будут обновлены некоторые другие темы, которые я видел в выпуске, чтобы, надеюсь, указать людям в этом направлении. – SlightlyBent

 Смежные вопросы

  • Нет связанных вопросов^_^